public void TestBufferOverflow() { var buf = new ByteBuffer(4096); var src = new List <RejectResponse>(); for (var i = 0; i < 90; i++) { var msg = new RejectResponse { Time = 123231001 + (uint)i, RequestId = "201801231418190", ErrorCodeInternal = (short)(2 + i) }; src.Add(msg); MakeRequestResponse(msg, i + 11, buf); } var parser = new MessageParser(); var resps = parser.ParseResponse(buf); Assert.AreEqual(src.Count, resps.Count); for (var i = 0; i < src.Count; i++) { Assert.AreEqual(src[i].Time, ((RejectResponse)resps[i]).Time); Assert.AreEqual(src[i].RequestId, ((RejectResponse)resps[i]).RequestId); Assert.AreEqual(src[i].ErrorCodeInternal, ((RejectResponse)resps[i]).ErrorCodeInternal); } }
private BaseResponse ParseRawData(ByteBuffer buf) { MessageType msgType; try { msgType = (MessageType)lastHeader.msgId; } catch { return(null); } BaseResponse resp = null; if (msgType == MessageType.RejectResponse) { resp = RejectResponse.ReadFromBuffer(lastHeader, buf, offset); } else if (msgType == MessageType.NewOrderReport) { resp = OrderResponse.ReadFromBuffer(lastHeader, buf, offset); } else if (msgType == MessageType.CancelReport) { resp = CancelOrderResponse.ReadFromBuffer(lastHeader, buf, offset); } else if (msgType == MessageType.ExecutionReport) { resp = ExecutionReport.ReadFromBuffer(lastHeader, buf, offset); } else if (msgType == MessageType.MassCancelReport) { resp = MassCancelResponse.ReadFromBuffer(lastHeader, buf, offset); } if (resp != null) { if (!messagesParsedByType.TryGetValue(resp.GetType(), out var count)) { messagesParsedByType.Add(resp.GetType(), 1); } else { messagesParsedByType[resp.GetType()] = count + 1; } } return(resp); }
private void MakeRequestResponse(RejectResponse msg, int seqid, ByteBuffer buf) { var header = new MessageHeader { msgId = (int)MessageType.RejectResponse, msgSize = (ushort)RejectResponse.StructSize, msgSeq = seqid }; header.AppendToBuffer(buf); buf.AppendUint64(msg.Time); buf.AppendFixedString(msg.RequestId, Encoding.ASCII, 16); buf.AppendInt16(msg.ErrorCodeInternal); }
public void TestOneMessage() { var msg = new RejectResponse { Time = 123231001, RequestId = "201801231418190", ErrorCodeInternal = 2 }; var buf = new ByteBuffer(128); MakeRequestResponse(msg, 707, buf); var parser = new MessageParser(); var resps = parser.ParseResponse(buf); Assert.AreEqual(1, resps.Count); Assert.AreEqual(msg.Time, ((RejectResponse)resps[0]).Time); Assert.AreEqual(msg.RequestId, ((RejectResponse)resps[0]).RequestId); Assert.AreEqual(msg.ErrorCodeInternal, ((RejectResponse)resps[0]).ErrorCodeInternal); }