(cobra connection) retrieve cobra server connection id from the cobra handshake message and display it in ws clients, metrics publisher and bots
This commit is contained in:
		| @@ -2,6 +2,10 @@ | ||||
|  | ||||
| All changes to this project will be documented in this file. | ||||
|  | ||||
| ## [10.4.4] - 2020-09-22 | ||||
|  | ||||
| (cobra connection) retrieve cobra server connection id from the cobra handshake message and display it in ws clients, metrics publisher and bots | ||||
|  | ||||
| ## [10.4.3] - 2020-09-22 | ||||
|  | ||||
| (cobra 2 cobra) specify as an HTTP header which channel we will republish to | ||||
|   | ||||
| @@ -170,7 +170,11 @@ namespace ix | ||||
|             } | ||||
|             else if (event->type == ix::CobraEventType::Closed) | ||||
|             { | ||||
|                 CoreLogger::info("Subscriber closed: {}" + event->errMsg); | ||||
|                 CoreLogger::info("Subscriber closed: " + event->errMsg); | ||||
|             } | ||||
|             else if (event->type == ix::CobraEventType::Handshake) | ||||
|             { | ||||
|                 CoreLogger::info("Subscriber: Cobra handshake connection id: " + event->connectionId); | ||||
|             } | ||||
|             else if (event->type == ix::CobraEventType::Authenticated) | ||||
|             { | ||||
|   | ||||
| @@ -91,13 +91,14 @@ namespace ix | ||||
|                                               const std::string& errorMsg, | ||||
|                                               const WebSocketHttpHeaders& headers, | ||||
|                                               const std::string& subscriptionId, | ||||
|                                               CobraConnection::MsgId msgId) | ||||
|                                               CobraConnection::MsgId msgId, | ||||
|                                               const std::string& connectionId) | ||||
|     { | ||||
|         std::lock_guard<std::mutex> lock(_eventCallbackMutex); | ||||
|         if (_eventCallback) | ||||
|         { | ||||
|             _eventCallback( | ||||
|                 std::make_unique<CobraEvent>(eventType, errorMsg, headers, subscriptionId, msgId)); | ||||
|                 std::make_unique<CobraEvent>(eventType, errorMsg, headers, subscriptionId, msgId, connectionId)); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -352,6 +353,18 @@ namespace ix | ||||
|  | ||||
|         if (!nonce.isString()) return false; | ||||
|  | ||||
|         if (!data.isMember("connection_id")) return false; | ||||
|         Json::Value connectionId = data["connection_id"]; | ||||
|  | ||||
|         if (!connectionId.isString()) return false; | ||||
|  | ||||
|         invokeEventCallback(ix::CobraEventType::Handshake, | ||||
|                             std::string(), | ||||
|                             WebSocketHttpHeaders(), | ||||
|                             std::string(), | ||||
|                             0, | ||||
|                             connectionId.asString()); | ||||
|  | ||||
|         return sendAuthMessage(nonce.asString()); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -158,7 +158,9 @@ namespace ix | ||||
|                                  const std::string& errorMsg = std::string(), | ||||
|                                  const WebSocketHttpHeaders& headers = WebSocketHttpHeaders(), | ||||
|                                  const std::string& subscriptionId = std::string(), | ||||
|                                  uint64_t msgId = std::numeric_limits<uint64_t>::max()); | ||||
|                                  uint64_t msgId = std::numeric_limits<uint64_t>::max(), | ||||
|                                  const std::string& connectionId = std::string()); | ||||
|  | ||||
|         void invokeErrorCallback(const std::string& errorMsg, const std::string& serializedPdu); | ||||
|  | ||||
|         /// Tells whether the internal queue is empty or not | ||||
|   | ||||
| @@ -21,17 +21,20 @@ namespace ix | ||||
|         const ix::WebSocketHttpHeaders& headers; | ||||
|         const std::string& subscriptionId; | ||||
|         uint64_t msgId; // CobraConnection::MsgId | ||||
|         const std::string& connectionId; | ||||
|  | ||||
|         CobraEvent(ix::CobraEventType t, | ||||
|                    const std::string& e, | ||||
|                    const ix::WebSocketHttpHeaders& h, | ||||
|                    const std::string& s, | ||||
|                    uint64_t m) | ||||
|                    uint64_t m, | ||||
|                    const std::string& c) | ||||
|             : type(t) | ||||
|             , errMsg(e) | ||||
|             , headers(h) | ||||
|             , subscriptionId(s) | ||||
|             , msgId(m) | ||||
|             , connectionId(c) | ||||
|         { | ||||
|             ; | ||||
|         } | ||||
|   | ||||
| @@ -20,6 +20,7 @@ namespace ix | ||||
|         Pong = 7, | ||||
|         HandshakeError = 8, | ||||
|         AuthenticationError = 9, | ||||
|         SubscriptionError = 10 | ||||
|         SubscriptionError = 10, | ||||
|         Handshake = 11 | ||||
|     }; | ||||
| } | ||||
|   | ||||
| @@ -35,6 +35,10 @@ namespace ix | ||||
|                     ss << it.first << ": " << it.second << std::endl; | ||||
|                 } | ||||
|             } | ||||
|             else if (event->type == ix::CobraEventType::Handshake) | ||||
|             { | ||||
|                 ss << "Cobra handshake connection id: " << event->connectionId; | ||||
|             } | ||||
|             else if (event->type == ix::CobraEventType::Authenticated) | ||||
|             { | ||||
|                 ss << "Authenticated"; | ||||
|   | ||||
| @@ -6,4 +6,4 @@ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #define IX_WEBSOCKET_VERSION "10.4.3" | ||||
| #define IX_WEBSOCKET_VERSION "10.4.4" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user