Ignore:
Timestamp:
Aug 8, 2010, 1:54:28 PM (11 years ago)
Author:
kopal
Message:

some ExecutionEngine changes

File:
1 edited

Legend:

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

    r1770 r1776  
    7777            {
    7878                IsRunning = true;
    79                 int amountSchedulers = System.Environment.ProcessorCount * 2;
    80                 //amountSchedulers = 1;
     79                int amountSchedulers = System.Environment.ProcessorCount * 2;               
    8180
    8281                //Here we create n = "ProcessorsCount * 2" Gears4Net schedulers
     
    340339        {
    341340           
    342             //executionEngine.GuiLogMessage("HandleExecute for \"" + msg.PluginModel.Name + "\"", NotificationLevel.Debug);
     341
     342            if (!msg.PluginModel.WorkspaceModel.WorkspaceManagerEditor.isExecuting())
     343            {
     344                return;
     345            }
     346
     347            foreach (ConnectorModel connectorModel in msg.PluginModel.InputConnectors)
     348            {
     349                if (!connectorModel.IControl && (connectorModel.IsMandatory || connectorModel.InputConnections.Count > 0) && !connectorModel.HasData)
     350                {
     351                    return;
     352                }
     353            }
     354
     355            foreach (ConnectorModel connectorModel in msg.PluginModel.OutputConnectors)
     356            {
     357                if (!connectorModel.IControl)
     358                {
     359                    foreach (ConnectionModel connectionModel in connectorModel.OutputConnections)
     360                    {
     361                        if (connectionModel.To.HasData)
     362                        {
     363                            return;
     364                        }
     365                    }
     366                }
     367            }
     368
    343369            //Fill the plugins Inputs with data
    344370            foreach (ConnectorModel connectorModel in PluginModel.InputConnectors)
    345371            {
    346                 if (connectorModel.HasData)
    347                 {
    348                     try
     372                try
     373                {
     374                    if (connectorModel.HasData)
    349375                    {
    350376                        if (connectorModel.IsDynamic)
    351377                        {
    352378                            MethodInfo propertyInfo = PluginModel.Plugin.GetType().GetMethod(connectorModel.DynamicSetterName);
    353                             propertyInfo.Invoke(PluginModel.Plugin, new object[] { connectorModel.PropertyName, connectorModel.Data });
     379                            propertyInfo.Invoke(PluginModel.Plugin, new object[] { connectorModel.PropertyName, connectorModel.Data.value });
    354380                        }
    355381                        else
    356382                        {
    357383                            PropertyInfo propertyInfo = PluginModel.Plugin.GetType().GetProperty(connectorModel.PropertyName);
    358                             propertyInfo.SetValue(PluginModel.Plugin, connectorModel.Data, null);
     384                            propertyInfo.SetValue(PluginModel.Plugin, connectorModel.Data.value, null);
    359385                        }
    360 
    361                     }
    362                     catch (Exception ex)
    363                     {
    364                         this.PluginModel.WorkspaceModel.WorkspaceManagerEditor.GuiLogMessage("An error occured while setting value of connector \"" + connectorModel.Name + "\" of \"" + PluginModel + "\": " + ex.Message, NotificationLevel.Error);
    365                         this.PluginModel.State = PluginModelState.Error;
    366                         this.PluginModel.GuiNeedsUpdate = true;
    367                         return;
    368                     }
    369                 }
    370             }
    371 
     386                    }
     387                }
     388                catch (Exception ex)
     389                {
     390                    this.PluginModel.WorkspaceModel.WorkspaceManagerEditor.GuiLogMessage("An error occured while setting value of connector \"" + connectorModel.Name + "\" of \"" + PluginModel + "\": " + ex.Message, NotificationLevel.Error);
     391                    this.PluginModel.State = PluginModelState.Error;
     392                    this.PluginModel.GuiNeedsUpdate = true;
     393                    return;
     394                }
     395            }
     396           
    372397            msg.PluginModel.Plugin.Execute();
    373 
     398           
    374399            if (this.executionEngine.BenchmarkPlugins)
    375400            {
     
    387412                        connectionModel.Active = false;
    388413                        connectorModel.GuiNeedsUpdate = true;
    389 
    390                         if (!connectionModel.From.PluginModel.Startable || (connectionModel.From.PluginModel.Startable && connectionModel.From.PluginModel.RepeatStart))
    391                         {
    392                             connectionModel.From.PluginModel.checkExecutable(connectionModel.From.PluginModel.PluginProtocol);
    393                         }
    394                     }
    395                 }
    396             }             
     414                    }
     415                }
     416            }
     417           
     418           
     419
     420            foreach (ConnectorModel connectorModel in PluginModel.InputConnectors)
     421            {
     422                foreach (ConnectionModel connectionModel in connectorModel.InputConnections)
     423                {
     424                    if (!connectionModel.From.PluginModel.Startable || (connectionModel.From.PluginModel.Startable && connectionModel.From.PluginModel.RepeatStart))
     425                    {
     426                        MessageExecution message_exec = new MessageExecution();
     427                        message_exec.PluginModel = connectionModel.From.PluginModel;
     428                        connectionModel.From.PluginModel.PluginProtocol.BroadcastMessage(message_exec);
     429                    }
     430                }
     431            }
     432           
    397433        }
    398434     
Note: See TracChangeset for help on using the changeset viewer.