public virtual Flow CreateFlow(ulong id, string signature, ulong assocFlowId) { if (IsEnqueueForDelete) { } if (Flows.ContainsKey(id)) { return(Flows[id]); } Flow flow = null; FlowWriter localFlow = null; if (FlowWriters.ContainsKey(assocFlowId)) { localFlow = FlowWriters[assocFlowId]; } switch (signature) { case FlowConnection.Signature: Logger.Debug("New FlowConnection {0} on session {1}", id, Id); flow = new FlowConnection(id, Peer, Handler, this, localFlow); break; case FlowGroup.Signature: Logger.Debug("New FlowGroup {0} on session {1}", id, Id); flow = new FlowGroup(id, Peer, Handler, this, localFlow); break; default: if (signature.StartsWith(FlowStream.Signature)) { Logger.Debug("New FlowStream {0} on session {1}", id, Id); flow = new FlowStream(id, signature, Peer, Handler, this, localFlow); } else { Logger.FATAL("New unknown flow {0} on session {1}", signature, Id); } break; } if (flow != null && id != 0) { Flows[id] = flow; } return(flow); }