protected void ProcessClientLogoutMock(IWebSocketConnection socket)
        {
            ClientLogoutResponse logout = new ClientLogoutResponse()
            {
                Msg    = "ClientLogoutResponse",
                UserId = "0",
                Sender = 1,
                Time   = 0
            };


            DoSend <ClientLogoutResponse>(socket, logout);
            socket.Close();
        }
        protected void ProcessPlatformStatus(IWebSocketConnection socket, WebSocketSubscribeMessage subscrMsg)
        {
            bool doLogout = false;

            if (PlatformStatus.cState == PlatformStatus._STATE_SEND_CLIENT_LOGOUT)
            {
                DoLog(string.Format("Sending state open because of status 7 <will send ClientLogoutResponse>"), MessageType.Information);
                PlatformStatus.cState = PlatformStatus._STATE_OPEN;
                doLogout = true;
            }
            else
            {
                DoLog(string.Format("Senting platform status {0}", PlatformStatus.cState), MessageType.Information);
            }



            DoSend <PlatformStatus>(socket, PlatformStatus);
            ProcessSubscriptionResponse(socket, "PS", subscrMsg.ServiceKey, subscrMsg.UUID, true);

            if (doLogout)
            {
                PlatformStatus.cState = PlatformStatus._STATE_SEND_CLIENT_LOGOUT;
                DoLog(string.Format("Sleeping before Returning ClientLogoutResponse..."), MessageType.Information);
                Thread.Sleep(10 * 1000);
                DoLog(string.Format("Returning ClientLogoutResponse..."), MessageType.Information);
                ClientLogoutResponse logout = new ClientLogoutResponse()
                {
                    Msg     = "ClientLogoutResponse",
                    Sender  = 0,
                    Time    = 0,
                    UserId  = subscrMsg.UserId,
                    ReLogin = false
                };

                DoSend <ClientLogoutResponse>(socket, logout);
                DoLog(string.Format(" ClientLogoutResponse sent..."), MessageType.Information);
            }
        }
Esempio n. 3
0
        public virtual async void ReadResponses(object param)
        {
            while (true)
            {
                try
                {
                    string resp = "";
                    WebSocketReceiveResult webSocketResp;
                    if (SubscriptionWebSocket.State == WebSocketState.Open)
                    {
                        do
                        {
                            ArraySegment <byte> bytesReceived = new ArraySegment <byte>(new byte[1000]);
                            webSocketResp = await SubscriptionWebSocket.ReceiveAsync(bytesReceived, CancellationToken.None);

                            resp += Encoding.ASCII.GetString(bytesReceived.Array, 0, webSocketResp.Count);
                        }while (!webSocketResp.EndOfMessage);

                        if (resp != "")
                        {
                            WebSocketMessage wsResp = JsonConvert.DeserializeObject <WebSocketMessage>(resp);

                            if (wsResp.Msg == "ClientLoginResponse")
                            {
                                ClientLoginResponse loginReponse = JsonConvert.DeserializeObject <ClientLoginResponse>(resp);
                                OnEvent(loginReponse);
                            }
                            else if (wsResp.Msg == "ClientReject")
                            {
                                ClientReject loginRejected = JsonConvert.DeserializeObject <ClientReject>(resp);
                                OnEvent(loginRejected);
                            }
                            else if (wsResp.Msg == "ClientLogoutResponse")
                            {
                                ClientLogoutResponse logoutReponse = JsonConvert.DeserializeObject <ClientLogoutResponse>(resp);
                                OnEvent(logoutReponse);
                            }
                            else if (wsResp.Msg == "SubscriptionResponse")
                            {
                                SubscriptionResponse subscrResponse = JsonConvert.DeserializeObject <SubscriptionResponse>(resp);
                                OnEvent(subscrResponse);
                            }
                            else if (wsResp.Msg == "ClientHeartbeatRequest")
                            {
                                OnEvent(JsonConvert.DeserializeObject <ClientHeartbeat>(resp));
                            }
                            else if (wsResp.Msg == "AccountRecord")
                            {
                                OnEvent(JsonConvert.DeserializeObject <AccountRecord>(resp));
                            }
                            else if (wsResp.Msg == "CreditRecordUpdate")
                            {
                                OnEvent(JsonConvert.DeserializeObject <CreditRecordUpdate>(resp));
                            }
                            else if (wsResp.Msg == "DailySettlementPrice")
                            {
                                OnEvent(JsonConvert.DeserializeObject <DailySettlementPrice>(resp));
                            }
                            else if (wsResp.Msg == "FirmRecord")
                            {
                                OnEvent(JsonConvert.DeserializeObject <FirmRecord>(resp));
                            }
                            else if (wsResp.Msg == "OfficialFixingPrice")
                            {
                                OnEvent(JsonConvert.DeserializeObject <OfficialFixingPrice>(resp));
                            }
                            else if (wsResp.Msg == "RefereceRateMsg")
                            {
                                OnEvent(JsonConvert.DeserializeObject <RefereceRateMsg>(resp));
                            }
                            else if (wsResp.Msg == "SecurityMasterRecord")
                            {
                                OnEvent(JsonConvert.DeserializeObject <SecurityMasterRecord>(resp));
                            }
                            else if (wsResp.Msg == "UserRecord")
                            {
                                OnEvent(JsonConvert.DeserializeObject <UserRecord>(resp));
                            }
                            else if (wsResp.Msg == "CreditRecordUpdate")
                            {
                                OnEvent(JsonConvert.DeserializeObject <CreditRecordUpdate>(resp));
                            }
                            else if (wsResp.Msg == "LastSale")
                            {
                                OnEvent(JsonConvert.DeserializeObject <LastSale>(resp));
                            }
                            else if (wsResp.Msg == "Quote")
                            {
                                OnEvent(JsonConvert.DeserializeObject <Quote>(resp));
                            }
                            else if (wsResp.Msg == "DepthOfBook")
                            {
                                OnEvent(JsonConvert.DeserializeObject <DepthOfBook>(resp));
                            }
                            else if (wsResp.Msg == "LegacyOrderAck")
                            {
                                OnEvent(JsonConvert.DeserializeObject <LegacyOrderAck>(resp));
                            }
                            else if (wsResp.Msg == "LegacyOrderCancelRejAck")
                            {
                                OnEvent(JsonConvert.DeserializeObject <LegacyOrderCancelRejAck>(resp));
                            }
                            else
                            {
                                UnknownMessage unknownMsg = new UnknownMessage()
                                {
                                    Msg    = "UnknownMsg",
                                    Resp   = resp,
                                    Reason = string.Format("Unknown message: {0}", resp)
                                };
                                OnEvent(unknownMsg);
                            }
                        }
                    }
                    else
                    {
                        Thread.Sleep(1000);
                    }
                }
                catch (Exception ex)
                {
                    ErrorMessage errorMsg = new ErrorMessage()
                    {
                        Msg = "ErrorMsg", Error = ex.Message
                    };
                    OnEvent(errorMsg);
                }
            }
        }
Esempio n. 4
0
        private static void ProcessEvent(WebSocketMessage msg)
        {
            if (msg is ClientLoginResponse)
            {
                ClientLoginResponse loginResp = (ClientLoginResponse)msg;

                if (loginResp.JsonWebToken != null)
                {
                    JWTToken = loginResp.JsonWebToken;
                    UUID     = loginResp.UUID;
                    UserId   = loginResp.UserId;
                }

                ProcessJsonMessage <ClientLoginResponse>(loginResp);
            }
            else if (msg is ClientReject)
            {
                ProcessJsonMessage <ClientReject>((ClientReject)msg);
            }
            else if (msg is SubscriptionResponse)
            {
                ProcessJsonMessage <SubscriptionResponse>((SubscriptionResponse)msg);
            }
            else if (msg is AccountRecord)
            {
                ProcessJsonMessage <AccountRecord>((AccountRecord)msg);
            }
            else if (msg is DailySettlementPrice)
            {
                ProcessJsonMessage <DailySettlementPrice>((DailySettlementPrice)msg);
            }
            else if (msg is FirmRecord)
            {
                ProcessJsonMessage <FirmRecord>((FirmRecord)msg);
            }
            else if (msg is OfficialFixingPrice)
            {
                ProcessJsonMessage <OfficialFixingPrice>((OfficialFixingPrice)msg);
            }
            else if (msg is RefereceRateMsg)
            {
                ProcessJsonMessage <RefereceRateMsg>((RefereceRateMsg)msg);
            }
            else if (msg is SecurityMasterRecord)
            {
                ProcessJsonMessage <SecurityMasterRecord>((SecurityMasterRecord)msg);
            }
            else if (msg is UserRecord)
            {
                ProcessJsonMessage <UserRecord>((UserRecord)msg);
            }
            else if (msg is LastSale)
            {
                ProcessJsonMessage <LastSale>((LastSale)msg);
            }
            else if (msg is Quote)
            {
                ProcessJsonMessage <Quote>((Quote)msg);
            }
            else if (msg is CreditRecordUpdate)
            {
                ProcessJsonMessage <CreditRecordUpdate>((CreditRecordUpdate)msg);
            }
            else if (msg is DepthOfBook)
            {
                ProcessJsonMessage <DepthOfBook>((DepthOfBook)msg);
            }
            else if (msg is LegacyOrderAck)
            {
                ProcessJsonMessage <LegacyOrderAck>((LegacyOrderAck)msg);
            }
            else if (msg is LegacyOrderCancelRejAck)
            {
                ProcessJsonMessage <LegacyOrderCancelRejAck>((LegacyOrderCancelRejAck)msg);
            }
            else if (msg is ClientLogoutResponse)
            {
                ClientLogoutResponse logoutResp = (ClientLogoutResponse)msg;

                JWTToken = null;
                UserId   = null;
                UUID     = null;

                ProcessJsonMessage <ClientLogoutResponse>((ClientLogoutResponse)msg);
            }
            else if (msg is ClientHeartbeat)
            {
                ClientHeartbeat heartBeatReq = (ClientHeartbeat)msg;
                ProcessJsonMessage <ClientHeartbeat>((ClientHeartbeat)msg);
                ProcessHeartbeat(heartBeatReq.SeqNum);
            }
            else if (msg is UnknownMessage)
            {
                UnknownMessage unknownMsg = (UnknownMessage)msg;

                DoLog(string.Format("<<unknown {0}", unknownMsg.Resp));
            }
            else if (msg is ErrorMessage)
            {
                ErrorMessage errorMsg = (ErrorMessage)msg;

                DoLog(string.Format("<<unknown {0}", errorMsg.Error));
            }
            else
            {
                DoLog(string.Format("<<Unknown message type {0}", msg.ToString()));
            }

            Console.WriteLine();
        }