private void Test(List <CtpObject> data)
        {
            var wr = new CtpObjectWriter();

            for (var x = 0; x < data.Count; x++)
            {
                var o = data[x];
                wr.Write(o);
            }

            var rd = new CtpObjectReader(wr.ToArray());

            for (var x = 0; x < data.Count; x++)
            {
                var o  = data[x];
                var oo = rd.Read();
                if (!o.Equals(oo))
                {
                    throw new Exception($"Not Equal {o} {oo} on record {x}");
                }
            }
        }
        internal static bool TryReadPacket(byte[] data, int position, int length, int maximumPacketSize, out PacketContents payloadType, out int payloadFlags, out byte[] payloadBuffer, out int consumedLength)
        {
            if (length > maximumPacketSize)
                throw new Exception("Command size is too large");

            var stream = new CtpObjectReader(data, position, length);
            CtpObject pType;
            CtpObject pFlags;
            CtpObject pData;
            if (stream.TryRead(out pType) && stream.TryRead(out pFlags) && stream.TryRead(out pData))
            {
                payloadType = (PacketContents)(byte)pType;
                payloadFlags = (int)pFlags;
                payloadBuffer = (byte[])pData;
                consumedLength = stream.Position;
                return true;
            }
            payloadType = default(PacketContents);
            payloadFlags = 0;
            payloadBuffer = null;
            consumedLength = 0;
            return false;
        }
Exemple #3
0
 public MetadataRowDecoder(CommandBeginMetadataResponse metadataResponse)
 {
     m_response = metadataResponse;
     m_stream   = new CtpObjectReader();
 }
 public NormalDecoder()
 {
     m_stream = new CtpObjectReader();
 }