Beispiel #1
0
        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());
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        public MessageBroker(IDuplexStream stream)
        {
            if (stream == null)
            {
                throw new ArgumentNullException(nameof(stream));
            }

            _reader = new FrameReader(stream);
            _writer = new FrameWriter(stream);
        }
Beispiel #4
0
 public void AddStream(IDuplexStream transport)
 {
     transport.ReadObservable.Subscribe(x =>
     {
         OnRequestBytes(x, transport);
     }
                                        , ex =>
     {
         //Console.WriteLine(ex);
     }
                                        , () =>
     {
     })
     .AddTo(m_disposable)
     ;
 }
Beispiel #5
0
        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);
            });
        }
Beispiel #6
0
 public FrameReader(IDuplexStream stream)
 {
     Stream = stream ?? throw new ArgumentNullException(nameof(stream));
 }