public MultiplexingSocketProtocol(ConnectionContext connection, IMessageReader <TInbound> messageReader, IMessageWriter <TOutbound> messageWriter, IMessageIdGenerator messageIdGenerator, IMessageIdParser messageIdParser) { this.connection = connection ?? throw new ArgumentNullException(nameof(connection)); this.reader = new ProtocolReader(this.connection.Transport.Input); this.writer = new ProtocolWriter(this.connection.Transport.Output); this.wrappedReader = new WrappedMessageReader <TInbound>(messageIdParser, messageReader); this.wrappedWriter = new WrappedMessageWriter <TOutbound>(messageIdParser, messageWriter); this.sourcePool = new ObjectPool <PooledValueTaskSource <MessageId> >(() => { return(new PooledValueTaskSource <MessageId>()); }, 100); }
public WrappedMessageWriter(IMessageIdParser idParser, IMessageWriter <T> writer) { this.idParser = idParser ?? throw new ArgumentNullException(nameof(idParser)); this.writer = writer ?? throw new ArgumentNullException(nameof(writer)); }
public WrappedMessageReader(IMessageIdParser idParser, IMessageReader <T> reader) { this.idParser = idParser ?? throw new ArgumentNullException(nameof(idParser)); this.reader = reader ?? throw new ArgumentNullException(nameof(reader)); }