private unsafe void QuotesLogin(LimeQuoteMessage packetQuotes) { LimeQuotesInterop.login_request_msg *message = (LimeQuotesInterop.login_request_msg *)packetQuotes.Ptr; if (Reverse(message->msg_len) != 80 || message->msg_type != LimeQuotesInterop.limeq_message_type.LOGIN_REQUEST || message->ver_major != LimeQuotesInterop.LIMEQ_MAJOR_VER || message->ver_minor != LimeQuotesInterop.LIMEQ_MINOR_VER || message->session_type != LimeQuotesInterop.app_type.CPP_API || message->auth_type != LimeQuotesInterop.auth_types.CLEAR_TEXT || message->heartbeat_interval != LimeQuotesInterop.heartbeat) { log.Error("Login message not matched"); } string userName = "";; for (int i = 0; i < LimeQuotesInterop.UNAME_LEN && message->uname[i] > 0; i++) { userName += (char)message->uname[i]; } string password = "";; for (int i = 0; i < LimeQuotesInterop.PASSWD_LEN && message->passwd[i] > 0; i++) { password += (char)message->passwd[i]; } var writePacket = (LimeQuoteMessage)QuoteSocket.MessageFactory.Create(); LimeQuotesInterop.login_response_msg *reseponse = (LimeQuotesInterop.login_response_msg *)writePacket.Ptr; reseponse->msg_type = LimeQuotesInterop.limeq_message_type.LOGIN_RESPONSE; reseponse->msg_len = Reverse(8); writePacket.Length = 8; reseponse->ver_minor = message->ver_minor; reseponse->ver_major = message->ver_major; reseponse->heartbeat_interval = message->heartbeat_interval; reseponse->timeout_interval = message->timeout_interval; reseponse->response_code = LimeQuotesInterop.reject_reason_code.LOGIN_SUCCEEDED; QuotePacketQueue.Enqueue(writePacket, packetQuotes.SendUtcTime); }
public unsafe override bool VerifyLogin() { bool verified = false; Message message; if (!Socket.TryGetMessage(out message)) { return(verified); } LimeQuoteMessage limeMessage = (LimeQuoteMessage)message; if (limeMessage.MessageType == LimeQuotesInterop.limeq_message_type.LOGIN_RESPONSE) { LimeQuotesInterop.login_response_msg *response = (LimeQuotesInterop.login_response_msg *)limeMessage.Ptr; if (response->response_code == LimeQuotesInterop.reject_reason_code.LOGIN_SUCCEEDED) { log.Info("Lime Login verified"); verified = true; } else { log.ErrorFormat("Lime Quotes Login Failed: {0}", response->response_code.ToString()); } } else if (limeMessage.MessageType == LimeQuotesInterop.limeq_message_type.LIMEQ_CONTROL) { var response = (LimeQuotesInterop.limeq_control_msg *)limeMessage.Ptr; log.InfoFormat("Lime Control {0}", response->code); } else { log.ErrorFormat("Lime unexpected message {0}", limeMessage.MessageType); } return(verified); }