Ignore:
Timestamp:
Aug 15, 2010, 6:27:02 PM (11 years ago)
Author:
kopal
Message:
  • added two experimental plugins with CStream support
File:
1 edited

Legend:

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

    r1809 r1812  
    108108                //a good average load balancing of the schedulers
    109109                //we also initalize each plugin
     110                //It is possible that a plugin is also a PluginProtocol
     111                //if that is true we do not create a new one but use the plugin instead the created one
    110112                int counter=0;
    111113                foreach (PluginModel pluginModel in workspaceModel.AllPluginModels)
    112114                {
    113                     pluginModel.Plugin.PreExecution();
    114                     PluginProtocol pluginProtocol = new PluginProtocol(schedulers[counter], pluginModel,this);
     115                    PluginProtocol pluginProtocol = null;
     116
     117                    if (pluginModel.Plugin is PluginProtocol)
     118                    {
     119                        pluginProtocol = (PluginProtocol)pluginModel.Plugin;
     120                        pluginProtocol.setExecutionEngineSettings(schedulers[counter], pluginModel, this);
     121                    }
     122                    else
     123                    {
     124                        pluginProtocol = new PluginProtocol(schedulers[counter], pluginModel, this);
     125                    }
     126
     127                    pluginModel.Plugin.PreExecution();                   
    115128                    pluginModel.PluginProtocol = pluginProtocol;
    116129                    schedulers[counter].AddProtocol(pluginProtocol);
    117                    
    118                     pluginProtocol.Start();
     130
     131                    if (pluginProtocol.Status == ProtocolStatus.Created || pluginProtocol.Status == ProtocolStatus.Terminated)
     132                    {
     133                        pluginProtocol.Start();
     134                    }
     135
    119136                    counter = (counter + 1) % (amountSchedulers);
    120137
     
    145162                pluginModel.Plugin.Stop();
    146163                pluginModel.Plugin.PostExecution();
    147             }           
     164            }            
    148165
    149166            IsRunning = false;
     
    320337
    321338        /// <summary>
     339        ///
     340        /// </summary>
     341        /// <param name="scheduler"></param>
     342        /// <param name="pluginModel"></param>
     343        /// <param name="executionEngine"></param>
     344        public void setExecutionEngineSettings(Scheduler scheduler, PluginModel pluginModel, ExecutionEngine executionEngine)
     345        {
     346            this.Scheduler = scheduler;
     347            this.PluginModel = pluginModel;
     348            this.executionEngine = executionEngine;
     349        }
     350
     351
     352        /// <summary>
    322353        /// The main function of the protocol     
    323354        /// </summary>
     
    385416        /// Send execute messages to possible executable next plugins
    386417        /// </summary>
    387         private void runNextPlugins()
     418        public void runNextPlugins()
    388419        {           
    389420            foreach (ConnectorModel connectorModel in PluginModel.InputConnectors)
     
    408439        /// Delete all input data of inputs of the plugin
    409440        /// </summary>
    410         private void clearInputs()
     441        public void clearInputs()
    411442        {
    412443            foreach (ConnectorModel connectorModel in PluginModel.InputConnectors)
     
    429460        /// </summary>
    430461        /// <returns></returns>
    431         private bool fillInputs()
     462        public bool fillInputs()
    432463        {
    433464            //Fill the plugins inputs with data
     
    462493
    463494        /// <summary>
     495        ///
     496        /// </summary>
     497        /// <returns></returns>
     498        public bool mayExecute()
     499        {
     500            return mayExecute(this.PluginModel);
     501        }
     502
     503        /// <summary>
    464504        /// Check if the PluginModel may execute
    465505        /// </summary>
     
    499539            }
    500540            return true;
     541        }
     542
     543        /// <summary>
     544        ///
     545        /// </summary>
     546        public ExecutionEngine ExecutionEngine
     547        {
     548            get { return this.executionEngine; }           
    501549        }
    502550    }
Note: See TracChangeset for help on using the changeset viewer.