Ignore:
Timestamp:
Aug 4, 2010, 8:38:07 PM (11 years ago)
Author:
kopal
Message:

optimized executionEngine

File:
1 edited

Legend:

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

    r1755 r1759  
    363363                        return;
    364364                    }
    365                     finally
    366                     {
    367                         connectorModel.HasData = false;
    368                         connectorModel.Data = null;
    369                         foreach (ConnectionModel connectionModel in connectorModel.InputConnections)
     365                }
     366            }
     367           
     368            msg.PluginModel.Plugin.Execute();
     369           
     370            if (this.executionEngine.BenchmarkPlugins)
     371            {
     372                this.executionEngine.ExecutedPluginsCounter++;
     373            }
     374
     375            foreach (ConnectorModel connectorModel in PluginModel.InputConnectors)
     376            {
     377                if (connectorModel.HasData)
     378                {
     379
     380                    connectorModel.HasData = false;
     381                    connectorModel.Data = null;
     382                    foreach (ConnectionModel connectionModel in connectorModel.InputConnections)
     383                    {
     384                        connectionModel.Active = false;
     385                        connectorModel.GuiNeedsUpdate = true;
     386
     387                        if (!connectionModel.From.PluginModel.Startable)
    370388                        {
    371                             connectionModel.Active = false;
    372                             connectorModel.GuiNeedsUpdate = true;
     389                            connectionModel.From.PluginModel.checkExecutable(connectionModel.From.PluginModel.PluginProtocol);
    373390                        }
    374                     }
     391                    }                   
    375392                }
    376393            }
    377394           
    378             msg.PluginModel.Plugin.Execute();         
    379 
    380             if (this.executionEngine.BenchmarkPlugins)
    381             {
    382                 this.executionEngine.ExecutedPluginsCounter++;                               
    383             }
    384395        }
    385396     
     
    435446                        return;
    436447                   
    437                     bool donotrun = false;
    438448                    ProtocolBase protocol = null;
    439449                    lock (this)
     
    442452                        if (this.waitingProtocols.Count == 0)
    443453                            break;
    444 
    445                         protocol = this.waitingProtocols.Dequeue();
    446 
    447                         if (protocol is PluginProtocol)
     454                    }
     455                    protocol = this.waitingProtocols.Dequeue();                                           
     456                    ProtocolStatus status = protocol.Run();
     457
     458                    lock (this)
     459                    {
     460                        switch (status)
    448461                        {
    449                             PluginProtocol pluginProtocol = (PluginProtocol)protocol;
    450                             foreach (ConnectorModel outputConnector in pluginProtocol.PluginModel.OutputConnectors)
    451                             {
    452                                 foreach (ConnectionModel connection in outputConnector.OutputConnections)
    453                                 {                                   
    454                                     if (connection.To.HasData &&
    455                                         connection.To.PluginModel != pluginProtocol.PluginModel &&
    456                                         donotrun == false)
    457                                     {                                           
    458                                         this.waitingProtocols.Enqueue(protocol);
    459                                         donotrun = true;
    460                                     }                                 
    461                                 }
    462                             }               
    463                         }
    464                     }
    465 
    466                     if (donotrun == false)
    467                     {
    468                         ProtocolStatus status = protocol.Run();
    469 
    470                         lock (this)
    471                         {
    472                             switch (status)
    473                             {
    474                                 case ProtocolStatus.Created:
    475                                     System.Diagnostics.Debug.Assert(false);
    476                                     break;
    477                                 case ProtocolStatus.Ready:
    478                                     this.waitingProtocols.Enqueue(protocol);
    479                                     break;
    480                                 case ProtocolStatus.Waiting:
    481                                     break;
    482                                 case ProtocolStatus.Terminated:
    483                                     System.Diagnostics.Debug.Assert(!this.waitingProtocols.Contains(protocol));
    484                                     this.RemoveProtocol(protocol);
    485                                     break;
    486                             }
     462                            case ProtocolStatus.Created:
     463                                System.Diagnostics.Debug.Assert(false);
     464                                break;
     465                            case ProtocolStatus.Ready:
     466                                this.waitingProtocols.Enqueue(protocol);
     467                                break;
     468                            case ProtocolStatus.Waiting:
     469                                break;
     470                            case ProtocolStatus.Terminated:
     471                                System.Diagnostics.Debug.Assert(!this.waitingProtocols.Contains(protocol));
     472                                this.RemoveProtocol(protocol);
     473                                break;
    487474                        }
    488475                    }
Note: See TracChangeset for help on using the changeset viewer.