private static IPort Create_qualified_port(string flowname, string portFullname) { var port = new Port(portFullname); if (Is_root_flowname(flowname)) { return(port); } return(port.IsRooted ? Port.Uproot(port) : Port.Build(flowname, port.OperationName, port.InstanceNumber, port.Name)); }
private void Put_output_in_same_context_as_input(Task task, IMessage output) { if (output is ContextualizedMessage) { Result(output); } else { if (!(task.Operation is IFlow) && task.Message.Port.Path != output.Port.Path) { output = new Message( Port.Build(task.Message.Port.Path, output.Port.OperationName, output.Port.InstanceNumber, output.Port.Name), output.Data, task.Message.CorrelationId); } if (task.Message.Port.InstanceNumber != "" && output.Port.InstanceNumber == "") { output = new Message( Port.Build(output.Port.Path, output.Port.OperationName, task.Message.Port.InstanceNumber, output.Port.Name), output.Data, task.Message.CorrelationId); } if (task.Message.CorrelationId != Guid.Empty) { output = new Message(output.Port, output.Data, task.Message.CorrelationId); } if (!(task.Operation is IFlow)) { output.FlowStack = task.Message.FlowStack; } output.Causalities = task.Message.Causalities; Result(output); } }
public void Process(IMessage message) { if (IsFlowInputMessage(message)) { // parent/flow.port => flow/.port var output = new Message(Port.Build(message.Port.OperationName, "", message.Port.Name), message.Data, message.CorrelationId) { Causalities = message.Causalities, FlowStack = message.FlowStack }; if (message.Port.Path != "") { output.FlowStack.Push(message.Port.Path); } Result(output); } else { // flow/.port => parent/flow.port var parentFlowname = ""; if (!message.FlowStack.IsEmpty) { parentFlowname = message.FlowStack.Pop(); } var output = new Message(Port.Build(parentFlowname, Create_operation_name(message), message.Port.Name), message.Data, message.CorrelationId) { Causalities = message.Causalities, FlowStack = message.FlowStack }; Result(output); } }