// timer thread static void Timer (OpenApiMessagesFactory msgFactory, Queue messagesQueue) { isShutdown = false; while (!isShutdown) { Thread.Sleep (1000); if (DateTime.Now > lastSentMsgTimestamp) { SendPingRequest (msgFactory, messagesQueue); } } }
static void SendSubscribeForSpotsRequest (OpenApiMessagesFactory msgFactory, Queue writeQueue) { var _msg = msgFactory.CreateSubscribeForSpotsRequest (testAccountId, testAccessToken, "EURUSD", clientMsgId); if (isDebugIsOn) Console.WriteLine ("SendSubscribeForSpotsRequest() Message to be send:\n{0}", OpenApiMessagesPresentation.ToString (_msg)); writeQueue.Enqueue (Utils.Serialize (_msg)); }
static void NotImplementedCommand (OpenApiMessagesFactory msgFactory, Queue writeQueue) { Console.WriteLine ("Action is NOT IMPLEMENTED!"); }
static void SendStopOrderRequest (OpenApiMessagesFactory msgFactory, Queue writeQueue) { var _msg = msgFactory.CreateStopOrderRequest (testAccountId, testAccessToken, "EURUSD", ProtoTradeSide.BUY, 1000000, 0.2, clientMsgId); if (isDebugIsOn) Console.WriteLine ("SendStopOrderRequest() Message to be send:\n{0}", OpenApiMessagesPresentation.ToString (_msg)); writeQueue.Enqueue (Utils.Serialize (_msg)); }
static void SendClosePositionRequest (OpenApiMessagesFactory msgFactory, Queue writeQueue) { var _msg = msgFactory.CreateClosePositionRequest (testAccountId, testAccessToken, testPositionId, testVolume, clientMsgId); if (isDebugIsOn) Console.WriteLine ("SendClosePositionRequest() Message to be send:\n{0}", OpenApiMessagesPresentation.ToString (_msg)); writeQueue.Enqueue (Utils.Serialize (_msg)); }
static void SendGetAllSubscriptionsForSpotEventsRequest (OpenApiMessagesFactory msgFactory, Queue writeQueue) { var _msg = msgFactory.CreateGetAllSpotSubscriptionsRequest (); if (isDebugIsOn) Console.WriteLine ("SendGetAllSubscriptionsForSpotEventsRequest() Message to be send:\n{0}", OpenApiMessagesPresentation.ToString (_msg)); writeQueue.Enqueue (Utils.Serialize (_msg)); }
static void SetClientMessageId (OpenApiMessagesFactory msgFactory, Queue writeQueue) { if (isDebugIsOn) Console.WriteLine ("SetClientMessageId() Current message ID:\"{0}\"", (clientMsgId == null ? "null" : clientMsgId)); if (clientMsgId != null) { clientMsgId = null; } else { clientMsgId = "customClientMessageID"; } if (isDebugIsOn) Console.WriteLine ("SetClientMessageId() New message ID:\"{0}\"", (clientMsgId == null ? "null" : clientMsgId)); }
static void SendSubscribeForTradingEventsRequest (OpenApiMessagesFactory msgFactory, Queue writeQueue) { SendSubscribeForTradingEventsRequest (testAccountId, msgFactory, writeQueue); }
static void SendUnsubscribeForTradingEventsRequest (OpenApiMessagesFactory msgFactory, Queue writeQueue) { var _msg = msgFactory.CreateUnsubscribeForTradingEventsRequest (testAccountId); if (isDebugIsOn) Console.WriteLine ("SendUnsubscribeForTradingEventsRequest() Message to be send:\n{0}", OpenApiMessagesPresentation.ToString (_msg)); writeQueue.Enqueue (Utils.Serialize (_msg)); }
static void SendAuthorizationRequest (OpenApiMessagesFactory msgFactory, Queue writeQueue) { var _msg = msgFactory.CreateAuthorizationRequest (clientPublicId, clientSecret); if (isDebugIsOn) Console.WriteLine ("SendAuthorizationRequest() Message to be send:\n{0}", OpenApiMessagesPresentation.ToString (_msg)); writeQueue.Enqueue (Utils.Serialize (_msg)); }
static void SendHeartbeatEvent (OpenApiMessagesFactory msgFactory, Queue writeQueue) { var _msg = msgFactory.CreateHeartbeatEvent (); if (isDebugIsOn) Console.WriteLine ("SendHeartbeatEvent() Message to be send:\n{0}", OpenApiMessagesPresentation.ToString (_msg)); writeQueue.Enqueue (Utils.Serialize (_msg)); }
static void SendPingRequest (OpenApiMessagesFactory msgFactory, Queue writeQueue) { var _msg = msgFactory.CreatePingRequest ((ulong)DateTime.Now.Ticks); if (isDebugIsOn) Console.WriteLine ("SendPingRequest() Message to be send:\n{0}", OpenApiMessagesPresentation.ToString (_msg)); writeQueue.Enqueue (Utils.Serialize (_msg)); }
static void ProcessIncomingDataStream (OpenApiMessagesFactory msgFactory, byte[] rawData) { var _msg = msgFactory.GetMessage (rawData); if (isDebugIsOn) Console.WriteLine ("ProcessIncomingDataStream() Message received:\n{0}", OpenApiMessagesPresentation.ToString (_msg)); if (!_msg.payloadSpecified) { return; } switch (_msg.payloadType) { case (int)ProtoPayloadType.HEARTBEAT_EVENT: break; case (int)ProtoOAPayloadType.OA_EXECUTION_EVENT: var _payload_msg = msgFactory.GetExecutionEvent (rawData); if (_payload_msg.position != null) { testPositionId = _payload_msg.position.positionId; } break; default: break; } ; }
// incoming data processing thread static void IncomingDataProcessing (OpenApiMessagesFactory msgFactory, Queue messagesQueue) { isShutdown = false; while (!isShutdown) { Thread.Sleep (0); if (messagesQueue.Count <= 0) continue; byte[] _message = (byte[])messagesQueue.Dequeue (); ProcessIncomingDataStream (msgFactory, _message); } }