Changeset 1803


Ignore:
Timestamp:
Aug 11, 2010, 11:29:47 PM (11 years ago)
Author:
kopal
Message:

removed events of connectors and put date exchange directly into the ExecutionEngine to improve the performance

Location:
trunk/CrypPlugins/WorkspaceManager
Files:
4 edited

Legend:

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

    r1802 r1803  
    7777                this.workspaceModel = workspaceModel;
    7878                int amountSchedulers = System.Environment.ProcessorCount * 2;
    79                
     79
    8080                //Here we create n = "ProcessorsCount * 2" Gears4Net schedulers
    8181                //We do this, because measurements showed that we get the best performance if we
     
    418418                }
    419419            }
     420
     421            foreach (ConnectorModel connectorModel in PluginModel.OutputConnectors)
     422            {
     423                object data;
     424
     425                if (connectorModel.IsDynamic)
     426                {
     427                    data = connectorModel.PluginModel.Plugin.GetType().GetMethod(connectorModel.DynamicGetterName).Invoke(connectorModel.PluginModel.Plugin, new object[] { connectorModel.PropertyName });
     428                }
     429                else
     430                {
     431                    data = connectorModel.PluginModel.Plugin.GetType().GetProperty(connectorModel.PropertyName).GetValue(connectorModel.PluginModel.Plugin, null);
     432                }
     433
     434                if (data != null)
     435                {
     436                    foreach (ConnectionModel connectionModel in connectorModel.OutputConnections)
     437                    {
     438
     439                        Data Data = new Data();
     440                        Data.value = data;
     441                        connectionModel.To.Data = Data;
     442                        connectionModel.To.HasData = true;
     443                        connectionModel.Active = true;
     444                        connectionModel.GuiNeedsUpdate = true;
     445                    }
     446                }
     447            }
    420448           
     449            foreach (ConnectorModel connectorModel in PluginModel.OutputConnectors)
     450            {
     451                foreach (ConnectionModel connectionModel in connectorModel.OutputConnections)
     452                {
     453                    MessageExecution msg_exce = new MessageExecution();
     454                    msg_exce.PluginModel = connectionModel.To.PluginModel;
     455                    connectionModel.To.PluginModel.PluginProtocol.BroadcastMessage(msg_exce);
     456                }
     457            }
     458
     459
    421460            foreach (ConnectorModel connectorModel in PluginModel.InputConnectors)
    422461            {
  • trunk/CrypPlugins/WorkspaceManager/Model/ConnectorModel.cs

    r1802 r1803  
    193193        /// </summary>
    194194        public string ToolTip { get; set; }
    195 
    196         /// <summary>
    197         /// Plugin informs the Connector that a PropertyChanged
    198         /// </summary>
    199         /// <param name="sender"></param>
    200         /// <param name="propertyChangedEventArgs"></param>
    201         public void PropertyChangedOnPlugin(Object sender, PropertyChangedEventArgs propertyChangedEventArgs)
    202         {
    203             if (sender == this.PluginModel.Plugin &&
    204                 propertyChangedEventArgs.PropertyName.Equals(PropertyName) &&
    205                 Outgoing)
    206             {
    207                 object data = null;
    208                 if (IsDynamic)
    209                 {
    210                     data = sender.GetType().GetMethod(DynamicGetterName).Invoke(sender, new object[] { this.PropertyName });
    211                 }
    212                 else
    213                 {
    214                     data = sender.GetType().GetProperty(propertyChangedEventArgs.PropertyName).GetValue(sender, null);
    215                 }
    216 
    217                 if (data == null)
    218                 {
    219                     return;
    220                 }
    221                
    222                 foreach (ConnectionModel connectionModel in this.OutputConnections)
    223                 {                   
    224                     Data Data = new Data();
    225                     Data.value = data;
    226                     connectionModel.To.Data = Data;
    227                     connectionModel.To.HasData = true;                   
    228                     connectionModel.Active = true;
    229                     connectionModel.GuiNeedsUpdate = true;
    230                 }
    231 
    232                 //We changed an input on the PluginModels where "To"s are belonging to so
    233                 //we have to check if there are executable now
    234                 foreach (ConnectionModel connectionModel in this.OutputConnections)
    235                 {
    236                     MessageExecution msg = new MessageExecution();
    237                     msg.PluginModel = connectionModel.To.PluginModel;
    238                     connectionModel.To.PluginModel.PluginProtocol.BroadcastMessage(msg);
    239                 }
    240             }
    241         }
    242195
    243196        /// <summary>
  • trunk/CrypPlugins/WorkspaceManager/Model/ModelPersistance.cs

    r1791 r1803  
    109109            foreach (ConnectorModel connectorModel in workspacemodel.AllConnectorModels)
    110110            {
    111                 if(connectorModel.Outgoing == true){
    112                     connectorModel.PluginModel.Plugin.PropertyChanged += connectorModel.PropertyChangedOnPlugin;
    113                 }
    114 
    115111                if (connectorModel.IsDynamic == true)
    116112                {
  • trunk/CrypPlugins/WorkspaceManager/Model/PluginModel.cs

    r1802 r1803  
    201201                        connectorModel.Outgoing = true;
    202202                        connectorModel.IControl = false;
    203                         Plugin.PropertyChanged += connectorModel.PropertyChangedOnPlugin;
    204203                        OutputConnectors.Add(connectorModel);
    205204                        WorkspaceModel.AllConnectorModels.Add(connectorModel);
     
    217216                        connectorModel.Outgoing = true;
    218217                        connectorModel.IControl = true;
    219                         Plugin.PropertyChanged += connectorModel.PropertyChangedOnPlugin;
    220218                        OutputConnectors.Add(connectorModel);
    221219                        WorkspaceModel.AllConnectorModels.Add(connectorModel);
     
    264262                            connectorModel.DynamicSetterName = dynamicPropertyInfoAttribute.MethodSetValue;
    265263                            connectorModel.Outgoing = true;
    266                             Plugin.PropertyChanged += connectorModel.PropertyChangedOnPlugin;
    267264                            OutputConnectors.Add(connectorModel);
    268265                            WorkspaceModel.AllConnectorModels.Add(connectorModel);
Note: See TracChangeset for help on using the changeset viewer.