Ejemplo n.º 1
0
            public IEnumerator <uint> Parse(Func <MemoryStream> get, BinaryPackerWriterEx w)
            {
                while (true)
                {
                    yield return(RpcHeader.HeaderLength);

                    var r      = new BinaryPackerReaderEx(get());
                    var header = new RpcHeader(r.ReadUInt32());

                    yield return(header.Length);

                    switch ((MethodId)header.MethodId)
                    {
                    case MethodId.Add:
                        OnAdd(r.ReadInt32());
                        break;

                    case MethodId.Echo:
                        OnEcho(r.ReadFullType());
                        break;

                    case MethodId.Exchange:
                        OnExchange(r.ReadItemArray());
                        break;

                    case MethodId.Get:
                        OnGet(r.ReadItem());
                        break;

                    case MethodId.Change:
                        Item[] consume = r.ReadItemArray();
                        w.Write(OnChange(consume));
                        break;

                    case MethodId.Ping:
                        FullType type = r.ReadFullType();
                        w.Write(OnPing(type));
                        break;

                    // invalid case
                    default:
                        throw new InvalidDataException("Invalid methodId = " + header.MethodId);
                    }
                }
            }
Ejemplo n.º 2
0
 public Writer()
 {
     Stream = new MemoryStream();
     w      = new BinaryPackerWriterEx(Stream);
 }
Ejemplo n.º 3
0
            public IEnumerator<uint> Parse(Func<MemoryStream> get, BinaryPackerWriterEx w)
            {
                while(true)
                {
                yield return RpcHeader.HeaderLength;
                var r = new BinaryPackerReaderEx(get());
                var header = new RpcHeader(r.ReadUInt32());

                yield return header.Length;
                switch((MethodId)header.MethodId)
                {
                    case MethodId.Add:
                        OnAdd(r.ReadInt32());
                        break;

                    case MethodId.Echo:
                        OnEcho(r.ReadFullType());
                        break;

                    case MethodId.Exchange:
                        OnExchange(r.ReadItemArray());
                        break;

                    case MethodId.Get:
                        OnGet(r.ReadItem());
                        break;

                    case MethodId.Change:
                        Item[] consume = r.ReadItemArray();
                        w.Write(OnChange(consume));
                        break;

                    case MethodId.Ping:
                        FullType type = r.ReadFullType();
                        w.Write(OnPing(type));
                        break;

                    // invalid case
                    default:
                        throw new InvalidDataException("Invalid methodId = " + header.MethodId);
                }
                }
            }
Ejemplo n.º 4
0
 public Writer()
 {
     w = new BinaryPackerWriterEx();
 }
Ejemplo n.º 5
0
 public Writer()
 {
     w = new BinaryPackerWriterEx();
 }
Ejemplo n.º 6
0
 public Writer()
 {
     Stream = new MemoryStream();
     w = new BinaryPackerWriterEx(Stream);
 }