Changeset 11468 for branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/ClientNode.cs
- Timestamp:
- 10/16/14 03:57:49 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/ClientNode.cs
r11465 r11468 68 68 } 69 69 70 public virtual void CallAsync() { 71 Task.Factory.StartNew(() => { 70 public virtual async Task CallServicesAsync() { 71 await CallServicesAsync(new CancellationToken()); 72 } 73 public virtual async Task CallServicesAsync(CancellationToken token) { 74 foreach (var clientPort in Ports.OfType<IClientPort>()) { 75 var parameters = clientPort.PrepareParameters(); 72 76 73 foreach (var clientPort in Ports.OfType<IClientPort>()) { 74 var parameters = clientPort.PrepareParameters(); 77 // retrieve inputs 78 foreach (var inputPort in Ports.OfType<IInputPort>(). 79 Where(x => parameters.ContainsKey(x.Name) && 80 parameters[x.Name].Type == ServiceParameterType.Input && 81 parameters[x.Name].DataType.IsAssignableFrom(x.DataType))) { 82 parameters[inputPort.Name].Value = (IItem)inputPort.Value.Clone(); 83 } 75 84 76 // retrieve inputs 77 foreach (var inputPort in Ports.OfType<IInputPort>(). 78 Where(x => parameters.ContainsKey(x.Name) && 79 parameters[x.Name].Type == ServiceParameterType.Input && 80 parameters[x.Name].DataType.IsAssignableFrom(x.DataType))) { 81 parameters[inputPort.Name].Value = (IItem)inputPort.Value.Clone(); 85 parameters = await clientPort.CallServiceAsync(parameters, token); 86 87 lock (locker) { 88 // set outputs 89 foreach (var outputPort in Ports.OfType<IOutputPort>(). 90 Where(x => parameters.ContainsKey(x.Name) && 91 parameters[x.Name].Type == ServiceParameterType.Output && 92 x.DataType.IsAssignableFrom(parameters[x.Name].DataType))) { 93 outputPort.Value = (IItem)parameters[outputPort.Name].Value.Clone(); 82 94 } 83 95 84 parameters = clientPort.Call(parameters); 85 86 lock (locker) { 87 // set outputs 88 foreach (var outputPort in Ports.OfType<IOutputPort>(). 89 Where(x => parameters.ContainsKey(x.Name) && 90 parameters[x.Name].Type == ServiceParameterType.Output && 91 x.DataType.IsAssignableFrom(parameters[x.Name].DataType))) { 92 outputPort.Value = (IItem)parameters[outputPort.Name].Value.Clone(); 93 } 94 95 Calls.Add(parameters); 96 } 96 Calls.Add(parameters); 97 97 } 98 } );98 } 99 99 } 100 100 }
Note: See TracChangeset
for help on using the changeset viewer.