public static async Task <FrameHeader> ReadHeader(this IDuplexStream stream, CancellationToken cancellationToken = default) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } return((FrameHeader)(await stream.Read(1, cancellationToken)).Single()); }
public static Task WriteHeader(this IDuplexStream stream, FrameHeader header, CancellationToken cancellationToken = default) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } return(stream.Write(new[] { (byte)header }, cancellationToken)); }
public MessageBroker(IDuplexStream stream) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } _reader = new FrameReader(stream); _writer = new FrameWriter(stream); }
public void AddStream(IDuplexStream transport) { transport.ReadObservable.Subscribe(x => { OnRequestBytes(x, transport); } , ex => { //Console.WriteLine(ex); } , () => { }) .AddTo(m_disposable) ; }
public RPCTransporter(IDuplexStream transport) { m_transport = transport; var r = new TypeRegistry(); m_s = r.GetSerializer <RPCRequest <PARSER> >(); m_d = r.GetDeserializer <RPCResponse <PARSER> >(); transport.ReadObservable.Subscribe(x => { var parser = new PARSER(); parser.SetBytes(x); var response = default(RPCResponse <PARSER>); m_d.Deserialize(parser, ref response); m_subject.OnNext(response); }); }
public FrameReader(IDuplexStream stream) { Stream = stream ?? throw new ArgumentNullException(nameof(stream)); }