Пример #1
0
        public override void Deserialize(PlaceOrderMessage message, UnsafeBinaryReader binaryReader)
        {
            var version = binaryReader.ReadByte();

            if (version != _version)
            {
                throw new InvalidOperationException($"version mismatch; expected:{_version} received:{version}");
            }

            message.Id           = binaryReader.ReadInt64();
            message.InstrumentId = binaryReader.ReadInt32();
            message.Price        = binaryReader.ReadDouble();
            message.Quantity     = binaryReader.ReadDouble();
            message.Side         = (OrderSide)binaryReader.ReadByte();

            message.val0  = binaryReader.ReadInt64();
            message.val1  = binaryReader.ReadInt64();
            message.val2  = binaryReader.ReadInt64();
            message.val3  = binaryReader.ReadInt64();
            message.val4  = binaryReader.ReadInt64();
            message.val5  = binaryReader.ReadInt64();
            message.val6  = binaryReader.ReadInt64();
            message.val7  = binaryReader.ReadInt64();
            message.val8  = binaryReader.ReadInt64();
            message.val9  = binaryReader.ReadInt64();
            message.val11 = binaryReader.ReadInt64();
            message.val12 = binaryReader.ReadInt64();
            message.val13 = binaryReader.ReadInt64();
            message.val14 = binaryReader.ReadInt64();
            message.val15 = binaryReader.ReadInt64();
        }
Пример #2
0
        private void CreateContext(Encoding encoding, int bufferSegmentSize, int bufferSegmentCount = 512)
        {
            _segmentProvider = new BufferSegmentProvider(bufferSegmentCount, bufferSegmentSize);

            _reader = new UnsafeBinaryReader(encoding);
            _reader.SetBuffers(_segmentProvider.GetBufferSegments());

            _writer = _segmentProvider.GetBinaryWriter(encoding);
        }
Пример #3
0
        public override void Deserialize(OrderAckMessage message, UnsafeBinaryReader binaryReader)
        {
            var version = binaryReader.ReadByte();

            if (version != _version)
            {
                throw new InvalidOperationException($"version mismatch; expected:{_version} received:{version}");
            }

            message.Id = binaryReader.ReadInt64();
        }
Пример #4
0
        /// <summary>
        ///     Take a raw message buffer and extract the endpoint name and serialized proto buffer.
        /// </summary>
        /// <param name="messageData"></param>
        public Message(byte[] messageData)
        {
            unsafe
            {
                var segmentReader = new UnsafeBinaryReader(Encoding.UTF8);
                fixed(byte *mData = messageData)
                {
                    var segment = new BufferSegment(mData);

                    segmentReader.SetBuffer(segment.Data, messageData.Length);
                    var length = segmentReader.ReadVariableLengthQuantity();

                    fixed(byte *headerData = segmentReader.ReadBytes(length))
                    {
                        Header = GetHeader(headerData, length);
                    }

                    Payload = segmentReader.ReadBytes(segmentReader.AvailableData());
                }
            }
        }
Пример #5
0
 public abstract void Deserialize(T message, UnsafeBinaryReader binaryReader);
Пример #6
0
 void IBinaryMessageSerializer.Deserialize(object message, UnsafeBinaryReader binaryReader)
 {
     Deserialize((T)message, binaryReader);
 }
Пример #7
0
 public override void Deserialize(Pong message, UnsafeBinaryReader binaryReader)
 {
     message.PingId = binaryReader.ReadInt32();
 }
Пример #8
0
        public ReleasableMessage DeserializeWithLengthPrefix(List <BufferSegment> framedMessage, UnsafeBinaryReader binaryReader)
        {
            binaryReader.SetBuffers(framedMessage);
            var messageTypeId = new MessageTypeId(binaryReader.ReadUInt32());

            var serializationEngine = _messageEnginesByTypeId[messageTypeId];
            var message             = serializationEngine.Allocator.Allocate();

            serializationEngine.Serializer.Deserialize(message, binaryReader);

            return(new ReleasableMessage(messageTypeId, message, serializationEngine.Releaser));
        }
Пример #9
0
 public ReceivingContext(Encoding encoding)
 {
     BinaryReader = new UnsafeBinaryReader(encoding);
 }