Ignore:
Timestamp:
Jun 5, 2010, 3:19:15 PM (11 years ago)
Author:
kopal
Message:
  • replaced own threading in ExecutionEngine with Gears4Net
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/WorkspaceManager/Model/PluginModel.cs

    r1584 r1590  
    2323using System.Threading;
    2424using System.Windows.Controls;
     25using Gears4Net;
     26using WorkspaceManager.Execution;
    2527
    2628namespace WorkspaceManager.Model
     
    3133    [Serializable]
    3234    public class PluginModel : VisualElementModel
    33     {
    34         [NonSerialized]
    35         private Mutex mutex = new Mutex();
    36 
     35    {       
    3736        [NonSerialized]
    3837        private IPlugin plugin;
    39 
    40         [NonSerialized]
    41         private PluginModelState executionstate = PluginModelState.Undefined;
    42 
     38     
    4339        private int imageIndex = 0;
    4440       
     
    177173        }
    178174
    179         /// <summary>
    180         /// The current ExecutionState of this PluginModel
    181         /// </summary>
    182         public PluginModelState ExecutionState{
    183             get
    184             {
    185                 return this.executionstate;
    186             }
    187             set
    188             {
    189                 this.executionstate = value;
    190             }
    191         }
    192175
    193176        /// <summary>
     
    195178        /// </summary>
    196179        /// <returns></returns>
    197         public void checkExecutable()
    198         {
    199             if(ExecutionState == PluginModelState.Undefined){
    200 
    201                 mutex.WaitOne();
    202                
    203                 bool AtLeastOneInputSet = false;
    204                 //First test if every mandatory Connector has Data
    205                 foreach (ConnectorModel connectorModel in this.InputConnectors)
     180        public void checkExecutable(ProtocolBase protocolBase)
     181        {                           
     182            bool AtLeastOneInputSet = false;
     183            //First test if every mandatory Connector has Data
     184            foreach (ConnectorModel connectorModel in this.InputConnectors)
     185            {
     186                if (connectorModel.IsMandatory && !connectorModel.HasData)
    206187                {
    207                     if (connectorModel.IsMandatory && !connectorModel.HasData)
    208                     {
    209                         mutex.ReleaseMutex();
    210                         return;
    211                     }
    212                     else if (connectorModel.HasData)
    213                     {
    214                         AtLeastOneInputSet = true;
    215                     }
    216 
    217                 }
    218 
    219                 //Next test if every connceted Connection to each Connection is not active
    220                 foreach (ConnectorModel connectorModel in this.OutputConnectors)
     188                    return;
     189                }
     190                else if (connectorModel.HasData)
    221191                {
    222                     foreach (ConnectionModel connection in connectorModel.OutputConnections)
    223                     {
    224                         if (connection.Active)
    225                         {                           
    226                             mutex.ReleaseMutex();
    227                             return;
    228                         }                       
    229                     }
    230                 }
    231 
    232                 if (AtLeastOneInputSet || this.InputConnectors.Count == 0)
     192                    AtLeastOneInputSet = true;
     193                }
     194
     195            }
     196
     197            //Next test if every connceted Connection to each Connection is not active
     198            foreach (ConnectorModel connectorModel in this.OutputConnectors)
     199            {
     200                foreach (ConnectionModel connection in connectorModel.OutputConnections)
    233201                {
    234                     ExecutionState = PluginModelState.Executable;
    235                 }
    236                 mutex.ReleaseMutex();
     202                    if (connection.Active)
     203                    {                           
     204                       return;
     205                    }                       
     206                }
     207            }
     208
     209            if (AtLeastOneInputSet || this.InputConnectors.Count == 0)
     210            {
     211                MessagePreExecution msg = new MessagePreExecution();
     212                msg.PluginModel = this;
     213                protocolBase.BroadcastMessage(msg);
    237214            }
    238215            return;
     
    261238            }
    262239        }
    263     }
    264 
    265     /// <summary>
    266     /// Execution States of a PluginModel
    267     /// </summary>
    268     public enum PluginModelState
    269     {
    270         Undefined,
    271         Executable,
    272         PreExecuting,
    273         Executing,
    274         PostExecuting,
    275         Terminated,
    276         Error
     240
     241        /// <summary>
     242        ///
     243        /// </summary>
     244        public static PluginProtocol PluginProtocol { get; set; }
    277245    }
    278246}
Note: See TracChangeset for help on using the changeset viewer.