private void AddChild(string taskId) { TaskNode node = new TaskNode(_groupName, _operatorName, taskId, _driverId, false); if (_logicalRoot != null) { AddTaskNode(node); } _nodes[taskId] = node; }
private void AddTaskNode(TaskNode node) { if (_logicalRoot.GetNumberOfChildren() >= _fanOut) { _logicalRoot = _logicalRoot.Successor; } node.Parent = _logicalRoot; _logicalRoot.AddChild(node); _prev.Successor = node; _prev = node; }
private void AddChild(string childId) { TaskNode childNode = new TaskNode(_groupName, _operatorName, childId, _driverId, false); _nodes[childId] = childNode; if (_root != null) { _root.AddChild(childNode); childNode.Parent = _root; } }
private void SetRootNode(string rootId) { TaskNode rootNode = new TaskNode(_groupName, _operatorName, rootId, _driverId, true); _root = rootNode; foreach (TaskNode childNode in _nodes.Values) { rootNode.AddChild(childNode); childNode.Parent = rootNode; } }
private void SetRootNode(string rootId) { _root = new TaskNode(_groupName, _operatorName, rootId, _driverId, true); _logicalRoot = _root; _prev = _root; foreach (TaskNode n in _nodes.Values) { AddTaskNode(n); } _nodes[rootId] = _root; }
public void AddChild(TaskNode child) { _children.Add(child); }
/// <summary> /// Gets the task configuration for the operator topology. /// </summary> /// <param name="taskId">The task identifier</param> /// <returns>The task configuration</returns> public IConfiguration GetTaskConfiguration(string taskId) { if (taskId == null) { throw new ArgumentException("TaskId is null when GetTaskConfiguration"); } TaskNode selfTaskNode = GetTaskNode(taskId); if (selfTaskNode == null) { throw new ArgumentException("Task has not been added to the topology"); } string parentId; TaskNode parent = selfTaskNode.Parent; if (parent == null) { parentId = selfTaskNode.TaskId; } else { parentId = parent.TaskId; } //add parentid, if no parent, add itself ICsConfigurationBuilder confBuilder = TangFactory.GetTang().NewConfigurationBuilder() .BindNamedParameter <GroupCommConfigurationOptions.TopologyRootTaskId, string>( GenericType <GroupCommConfigurationOptions.TopologyRootTaskId> .Class, parentId); //add all its children foreach (TaskNode childNode in selfTaskNode.GetChildren()) { confBuilder.BindSetEntry <GroupCommConfigurationOptions.TopologyChildTaskIds, string>( GenericType <GroupCommConfigurationOptions.TopologyChildTaskIds> .Class, childNode.TaskId); } if (OperatorSpec is BroadcastOperatorSpec) { var broadcastSpec = OperatorSpec as BroadcastOperatorSpec; if (taskId.Equals(broadcastSpec.SenderId)) { confBuilder.BindImplementation(GenericType <IGroupCommOperator <T> > .Class, GenericType <BroadcastSender <T> > .Class); SetMessageType(typeof(BroadcastSender <T>), confBuilder); } else { confBuilder.BindImplementation(GenericType <IGroupCommOperator <T> > .Class, GenericType <BroadcastReceiver <T> > .Class); SetMessageType(typeof(BroadcastReceiver <T>), confBuilder); } } else if (OperatorSpec is ReduceOperatorSpec) { var reduceSpec = OperatorSpec as ReduceOperatorSpec; if (taskId.Equals(reduceSpec.ReceiverId)) { confBuilder.BindImplementation(GenericType <IGroupCommOperator <T> > .Class, GenericType <ReduceReceiver <T> > .Class); SetMessageType(typeof(ReduceReceiver <T>), confBuilder); } else { confBuilder.BindImplementation(GenericType <IGroupCommOperator <T> > .Class, GenericType <ReduceSender <T> > .Class); SetMessageType(typeof(ReduceSender <T>), confBuilder); } } else if (OperatorSpec is ScatterOperatorSpec) { ScatterOperatorSpec scatterSpec = OperatorSpec as ScatterOperatorSpec; if (taskId.Equals(scatterSpec.SenderId)) { confBuilder.BindImplementation(GenericType <IGroupCommOperator <T> > .Class, GenericType <ScatterSender <T> > .Class); SetMessageType(typeof(ScatterSender <T>), confBuilder); } else { confBuilder.BindImplementation(GenericType <IGroupCommOperator <T> > .Class, GenericType <ScatterReceiver <T> > .Class); SetMessageType(typeof(ScatterReceiver <T>), confBuilder); } } else { throw new NotSupportedException("Spec type not supported"); } return(Configurations.Merge(confBuilder.Build(), OperatorSpec.Configiration)); }