Changeset 1777


Ignore:
Timestamp:
Aug 8, 2010, 6:04:23 PM (11 years ago)
Author:
kopal
Message:

some ExecutionEngine changes

Location:
trunk/CrypPlugins/WorkspaceManager
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/WorkspaceManager/Execution/ExecutionEngine.cs

    r1776 r1777  
    7272        public void Execute(WorkspaceModel workspaceModel)
    7373        {
    74             this.workspaceModel = workspaceModel;
    75 
    7674            if (!IsRunning)
    7775            {
    7876                IsRunning = true;
    79                 int amountSchedulers = System.Environment.ProcessorCount * 2;               
    80 
     77                this.workspaceModel = workspaceModel;
     78                int amountSchedulers = System.Environment.ProcessorCount * 2;
     79 
    8180                //Here we create n = "ProcessorsCount * 2" Gears4Net schedulers
    8281                //We do this, because measurements showed that we get the best performance if we
     
    304303    public class PluginProtocol : ProtocolBase
    305304    {
     305       
    306306        public PluginModel PluginModel;
    307307        private ExecutionEngine executionEngine;
     
    328328            while (this.executionEngine.IsRunning)
    329329            {
    330                 yield return Receive<MessageExecution>(null, this.HandleExecute);               
     330                yield return Receive<MessageExecution>(null, this.HandleExecute);                
    331331            }
    332332        }
     
    339339        {
    340340           
    341 
    342341            if (!msg.PluginModel.WorkspaceModel.WorkspaceManagerEditor.isExecuting())
    343342            {
     
    345344            }
    346345
     346            //Check if all necessary inputs are set
    347347            foreach (ConnectorModel connectorModel in msg.PluginModel.InputConnectors)
    348348            {
    349                 if (!connectorModel.IControl && (connectorModel.IsMandatory || connectorModel.InputConnections.Count > 0) && !connectorModel.HasData)
     349                if (!connectorModel.IControl &&
     350                    (connectorModel.IsMandatory || connectorModel.InputConnections.Count > 0) && (!connectorModel.HasData ||
     351                    connectorModel.Data==null))
    350352                {
    351353                    return;
     
    353355            }
    354356
     357            //Check if all outputs are free
    355358            foreach (ConnectorModel connectorModel in msg.PluginModel.OutputConnectors)
    356359            {
     
    367370            }
    368371
    369             //Fill the plugins Inputs with data
     372            //Fill the plugins inputs with data
    370373            foreach (ConnectorModel connectorModel in PluginModel.InputConnectors)
    371374            {
    372375                try
    373376                {
    374                     if (connectorModel.HasData)
     377                    if (connectorModel.HasData && connectorModel.Data.value != null)
    375378                    {
    376379                        if (connectorModel.IsDynamic)
     
    405408            {
    406409                if (connectorModel.HasData)
    407                 {
     410                {                   
     411                    connectorModel.Data = null;
    408412                    connectorModel.HasData = false;
    409                     connectorModel.Data = null;
    410413                    foreach (ConnectionModel connectionModel in connectorModel.InputConnections)
    411414                    {
     
    416419            }
    417420           
    418            
    419 
    420421            foreach (ConnectorModel connectorModel in PluginModel.InputConnectors)
    421422            {
    422423                foreach (ConnectionModel connectionModel in connectorModel.InputConnections)
    423424                {
    424                     if (!connectionModel.From.PluginModel.Startable || (connectionModel.From.PluginModel.Startable && connectionModel.From.PluginModel.RepeatStart))
     425                    if (!connectionModel.From.PluginModel.Startable ||
     426                        (connectionModel.From.PluginModel.Startable && connectionModel.From.PluginModel.RepeatStart))
    425427                    {
    426428                        MessageExecution message_exec = new MessageExecution();
     
    429431                    }
    430432                }
    431             }
    432            
    433         }
    434      
     433            }           
     434        }
    435435    }
    436436
  • trunk/CrypPlugins/WorkspaceManager/Model/ConnectorModel.cs

    r1776 r1777  
    2323using System.Reflection;
    2424using WorkspaceManager.Execution;
     25using System.Threading;
    2526
    2627namespace WorkspaceManager.Model
     
    218219                    return;
    219220                }
    220 
     221               
    221222                foreach (ConnectionModel connectionModel in this.OutputConnections)
    222223                {
     224                    while ((connectionModel.To.HasData || connectionModel.To.Data != null)
     225                        && this.PluginModel.WorkspaceModel.WorkspaceManagerEditor.isExecuting())
     226                    {
     227                        Thread.Sleep(0);
     228                    }
     229
    223230                    Data Data = new Data();
    224231                    Data.value = data;
    225                     connectionModel.To.HasData = true;
    226232                    connectionModel.To.Data = Data;
     233                    connectionModel.To.HasData = true;                   
    227234                    connectionModel.Active = true;
    228235                    connectionModel.GuiNeedsUpdate = true;
Note: See TracChangeset for help on using the changeset viewer.