예제 #1
0
        public override void Serialize(PlaceOrderMessage message, UnsafeBinaryWriter binaryWriter)
        {
            binaryWriter.Write(_version);

            binaryWriter.Write(message.Id);
            binaryWriter.Write(message.InstrumentId);
            binaryWriter.Write(message.Price);
            binaryWriter.Write(message.Quantity);
            binaryWriter.Write((byte)message.Side);

            binaryWriter.Write(message.val0);
            binaryWriter.Write(message.val1);
            binaryWriter.Write(message.val2);
            binaryWriter.Write(message.val3);
            binaryWriter.Write(message.val4);
            binaryWriter.Write(message.val5);
            binaryWriter.Write(message.val6);
            binaryWriter.Write(message.val7);
            binaryWriter.Write(message.val8);
            binaryWriter.Write(message.val9);
            binaryWriter.Write(message.val11);
            binaryWriter.Write(message.val12);
            binaryWriter.Write(message.val13);
            binaryWriter.Write(message.val14);
            binaryWriter.Write(message.val15);
        }
예제 #2
0
        private void CreateContext(Encoding encoding, int bufferSegmentSize, int bufferSegmentCount = 512)
        {
            _segmentProvider = new BufferSegmentProvider(bufferSegmentCount, bufferSegmentSize);

            _writer = new UnsafeBinaryWriter(encoding);
            _writer.SetBufferSegmentProvider(_segmentProvider);
            _reader = _segmentProvider.GetBinaryReader(encoding);
        }
예제 #3
0
        public override void Serialize(PlaceOrderMessage message, UnsafeBinaryWriter binaryWriter)
        {
            binaryWriter.Write(_version);

            binaryWriter.Write(message.Id);
            binaryWriter.Write(message.InstrumentId);
            binaryWriter.Write(message.Price);
            binaryWriter.Write(message.Quantity);
            binaryWriter.Write((byte)message.Side);
        }
예제 #4
0
 void IBinaryMessageSerializer.Serialize(object message, UnsafeBinaryWriter binaryWriter)
 {
     Serialize((T)message, binaryWriter);
 }
예제 #5
0
 public abstract void Serialize(T message, UnsafeBinaryWriter binaryWriter);
예제 #6
0
 public override void Serialize(Pong message, UnsafeBinaryWriter binaryWriter)
 {
     binaryWriter.Write(message.PingId);
 }
예제 #7
0
        public void SerializeWithLengthPrefix(object message, IMessageBufferSegmentProvider segmentProvider, UnsafeBinaryWriter binaryWriter)
        {
            var messageType         = message.GetType();
            var serializationEngine = _messageEnginesByType[messageType];

            binaryWriter.SetBufferSegmentProvider(segmentProvider);

            var lengthPrefixPosition = binaryWriter.GetPosition();

            binaryWriter.Write(0); // length prefix

            binaryWriter.Write((uint)serializationEngine.MessageTypeId);

            serializationEngine.Serializer.Serialize(message, binaryWriter);

            var messageLength = (int)binaryWriter.GetLength();

            binaryWriter.SetPosition(lengthPrefixPosition);
            binaryWriter.Write(messageLength - sizeof(int));

            segmentProvider.SetMessageLength(messageLength);
        }
예제 #8
0
 public SendingContext(ISessionConfiguration configuration, RioBufferManager sendingBufferManager, Encoding encoding)
 {
     SendingBufferProvider = new SendingBufferProvider(configuration, sendingBufferManager);
     BinaryWriter          = new UnsafeBinaryWriter(encoding);
 }
예제 #9
0
 public override void Serialize(OrderAckMessage message, UnsafeBinaryWriter binaryWriter)
 {
     binaryWriter.Write(_version);
     binaryWriter.Write(message.Id);
 }