Changeset 1812


Ignore:
Timestamp:
Aug 15, 2010, 6:27:02 PM (11 years ago)
Author:
kopal
Message:
  • added two experimental plugins with CStream support
Location:
trunk/CrypPlugins/WorkspaceManager
Files:
2 added
4 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    }
  • trunk/CrypPlugins/WorkspaceManager/Model/ModelPersistance.cs

    r1809 r1812  
    103103                pluginModel.Plugin.OnPluginProgressChanged += pluginModel.PluginProgressChanged;               
    104104                pluginModel.Plugin.OnPluginStatusChanged += pluginModel.PluginStatusChanged;
    105                 pluginModel.Plugin.Settings.PropertyChanged += pluginModel.SettingsPropertyChanged;
     105                if (pluginModel.Plugin.Settings != null)
     106                {
     107                    pluginModel.Plugin.Settings.PropertyChanged += pluginModel.SettingsPropertyChanged;
     108                }
    106109            }
    107110               
     
    166169
    167170            //Save all Settings of each Plugin
    168             foreach (PluginModel pluginModel in workspaceModel.AllPluginModels)
    169             {
    170                 PropertyInfo[] arrpInfo = pluginModel.Plugin.Settings.GetType().GetProperties();
    171 
    172                 PersistantPlugin persistantPlugin = new PersistantPlugin();
    173                 persistantPlugin.PluginModel = pluginModel;
    174 
    175                 foreach (PropertyInfo pInfo in arrpInfo)
    176                 {
    177                     DontSaveAttribute[] dontSave = (DontSaveAttribute[])pInfo.GetCustomAttributes(typeof(DontSaveAttribute), false);
    178                     if (pInfo.CanWrite && dontSave.Length == 0)
    179                     {
    180                         PersistantSetting persistantSetting = new PersistantSetting();
    181                         if (pInfo.PropertyType.IsEnum)
     171            foreach (PluginModel pluginModel in workspaceModel.AllPluginModels){
     172
     173                if (pluginModel.Plugin.Settings != null)
     174                {
     175                    PropertyInfo[] arrpInfo = pluginModel.Plugin.Settings.GetType().GetProperties();
     176
     177                    PersistantPlugin persistantPlugin = new PersistantPlugin();
     178                    persistantPlugin.PluginModel = pluginModel;
     179
     180                    foreach (PropertyInfo pInfo in arrpInfo)
     181                    {
     182                        DontSaveAttribute[] dontSave = (DontSaveAttribute[])pInfo.GetCustomAttributes(typeof(DontSaveAttribute), false);
     183                        if (pInfo.CanWrite && dontSave.Length == 0)
    182184                        {
    183                             persistantSetting.Value = "" + pInfo.GetValue(pluginModel.Plugin.Settings, null).GetHashCode();                           
     185                            PersistantSetting persistantSetting = new PersistantSetting();
     186                            if (pInfo.PropertyType.IsEnum)
     187                            {
     188                                persistantSetting.Value = "" + pInfo.GetValue(pluginModel.Plugin.Settings, null).GetHashCode();
     189                            }
     190                            else
     191                            {
     192                                persistantSetting.Value = "" + pInfo.GetValue(pluginModel.Plugin.Settings, null);
     193                            }
     194                            persistantSetting.Name = pInfo.Name;
     195                            persistantSetting.Type = pInfo.PropertyType.FullName;
     196                            persistantPlugin.PersistantSettingsList.Add(persistantSetting);
    184197                        }
    185                         else
    186                         {
    187                             persistantSetting.Value = "" + pInfo.GetValue(pluginModel.Plugin.Settings, null);
    188                         }
    189                         persistantSetting.Name = pInfo.Name;
    190                         persistantSetting.Type = pInfo.PropertyType.FullName;
    191                         persistantPlugin.PersistantSettingsList.Add(persistantSetting);
    192                     }
    193 
    194                 }
    195                 persistantModel.PersistantPluginList.Add(persistantPlugin);
     198
     199                    }
     200                    persistantModel.PersistantPluginList.Add(persistantPlugin);
     201                }
    196202            }
    197203            XMLSerialization.XMLSerialization.Serialize(persistantModel, filename,true);
  • trunk/CrypPlugins/WorkspaceManager/Model/WorkspaceModel.cs

    r1791 r1812  
    9797            pluginModel.Plugin.OnPluginProgressChanged += pluginModel.PluginProgressChanged;
    9898            pluginModel.Plugin.OnPluginStatusChanged += pluginModel.PluginStatusChanged;
    99             pluginModel.Plugin.Settings.PropertyChanged += pluginModel.SettingsPropertyChanged;
     99            if (pluginModel.Plugin.Settings != null)
     100            {
     101                pluginModel.Plugin.Settings.PropertyChanged += pluginModel.SettingsPropertyChanged;
     102            }
    100103            this.AllPluginModels.Add(pluginModel);
    101104            this.WorkspaceManagerEditor.HasChanges = true;
  • trunk/CrypPlugins/WorkspaceManager/WorkspaceManager.csproj

    r1807 r1812  
    8181  </ItemGroup>
    8282  <ItemGroup>
     83    <Compile Include="StreamRead.cs" />
    8384    <Compile Include="Execution\ExecutionEngine.cs" />
    8485    <Compile Include="Model\ColorHelper.cs" />
     
    9697      <DependentUpon>Settings.settings</DependentUpon>
    9798    </Compile>
     99    <Compile Include="StreamGen.cs" />
    98100    <Compile Include="View\Container\ConnectorView.xaml.cs">
    99101      <DependentUpon>ConnectorView.xaml</DependentUpon>
Note: See TracChangeset for help on using the changeset viewer.