public ProtoMessage CreateTraderResponse(string clientMsgId = null) { return(CreateMessage((uint)ProtoOAPayloadType.PROTO_OA_TRADER_RES, ProtoOATraderRes.CreateBuilder().Build().ToByteString(), clientMsgId)); }
// listener thread private void Listen(SslStream sslStream, Queue messagesQueue) { isShutdown = false; while (!isShutdown) { Thread.Sleep(1); byte[] _length = new byte[sizeof(int)]; int readBytes = 0; do { Thread.Sleep(0); readBytes += sslStream.Read(_length, readBytes, _length.Length - readBytes); } while (readBytes < _length.Length); int length = BitConverter.ToInt32(_length.Reverse().ToArray(), 0); if (length <= 0) { continue; } if (length > MaxMessageSize) { string exceptionMsg = "Message length " + length.ToString() + " is out of range (0 - " + MaxMessageSize.ToString() + ")"; throw new System.IndexOutOfRangeException(); } byte[] _message = new byte[length]; readBytes = 0; do { Thread.Sleep(0); readBytes += sslStream.Read(_message, readBytes, _message.Length - readBytes); } while (readBytes < length); var msgFactory = new OpenApiMessagesFactory(); var protoMessage = msgFactory.GetMessage(_message); messagesQueue.Enqueue("Received: " + OpenApiMessagesPresentation.ToString(protoMessage)); switch ((ProtoOAPayloadType)protoMessage.PayloadType) { case ProtoOAPayloadType.PROTO_OA_EXECUTION_EVENT: var _payload_msg = msgFactory.GetExecutionEvent(_message); if (_payload_msg.HasOrder) { testOrderId = _payload_msg.Order.OrderId; } if (_payload_msg.HasPosition) { testPositionId = _payload_msg.Position.PositionId; } break; case ProtoOAPayloadType.PROTO_OA_GET_ACCOUNTS_BY_ACCESS_TOKEN_RES: var _accounts_list = ProtoOAGetAccountListByAccessTokenRes.CreateBuilder().MergeFrom(protoMessage.Payload).Build(); _accounts = _accounts_list.CtidTraderAccountList; break; case ProtoOAPayloadType.PROTO_OA_TRADER_RES: var trader = ProtoOATraderRes.CreateBuilder().MergeFrom(protoMessage.Payload).Build(); _traders.Add(trader.Trader); break; default: break; } ; } }