public IConnection Create(string connectionId, IChannelStream stream) { var jsonSerialiser = new TinyJsonSerializer(); var taskLauncher = new TaskLauncherNet35(); var channelMessageStream = new ChannelMessageStream(stream); var channelMessageSerializer = new ChannelMessageSerializer(); var channelMessageWriter = new ChannelMessageWriter(channelMessageStream, channelMessageSerializer); var rpcMessageEncoder = new RpcMessageEncoder(jsonSerialiser); var rpcMessageWriter = new RpcMessageWriter(channelMessageWriter, rpcMessageEncoder); var rpcMessageBroker = new RpcMessageBroker(rpcMessageWriter); var delegateProvider = new DuplexDelegateProvider(m_DelegateCollection, rpcMessageBroker); var rpcRequestHandler = new RpcRequestHandler(delegateProvider, jsonSerialiser); var rpcResponseMessageHandler = new RpcResponseChannelMessageHandler(rpcMessageBroker, rpcMessageEncoder); var rpcRequestMessageHandler = new RpcRequestChannelMessageHandler(rpcRequestHandler, rpcMessageEncoder, rpcMessageWriter); var pipeline = new ChannelMessagePipeline(new IChannelMessageHandler[] { rpcResponseMessageHandler, rpcRequestMessageHandler }); var channelMessageReader = new ChannelMessageReader(channelMessageStream, channelMessageSerializer, pipeline, taskLauncher); var connection = new Connection( connectionId, rpcMessageBroker, disconnectReporters: new IDisconnectReporter[] { stream }, disposeChain: new IDisposable[] { channelMessageReader, rpcMessageBroker }); rpcRequestHandler.OwningConnection = connection; channelMessageReader.Start(); return(connection); }
public ChannelConnectedEventArgs(string connectionId, IChannelStream channelStream) { ConnectionId = connectionId; ChannelStream = channelStream; }
public ChannelMessageStream(IChannelStream stream) { m_Stream = stream; }