cobra publish fix
This commit is contained in:
		| @@ -12,7 +12,6 @@ | |||||||
|  |  | ||||||
| #include <cmath> | #include <cmath> | ||||||
| #include <cassert> | #include <cassert> | ||||||
| #include <iostream> |  | ||||||
|  |  | ||||||
|  |  | ||||||
| namespace ix | namespace ix | ||||||
|   | |||||||
| @@ -453,6 +453,8 @@ namespace ix | |||||||
|     { |     { | ||||||
|         invokePublishTrackerCallback(true, false); |         invokePublishTrackerCallback(true, false); | ||||||
|  |  | ||||||
|  |         CobraConnection::MsgId msgId = _id; | ||||||
|  |  | ||||||
|         _body["channels"] = channels; |         _body["channels"] = channels; | ||||||
|         _body["message"] = msg; |         _body["message"] = msg; | ||||||
|         _pdu["body"] = _body; |         _pdu["body"] = _body; | ||||||
| @@ -460,27 +462,22 @@ namespace ix | |||||||
|  |  | ||||||
|         std::string serializedJson = serializeJson(_pdu); |         std::string serializedJson = serializeJson(_pdu); | ||||||
|  |  | ||||||
|         if (_publishMode == CobraConnection_PublishMode_Batch) |         // | ||||||
|  |         // 1. When we use batch mode, we just enqueue and will do the flush explicitely | ||||||
|  |         // 2. When we aren't authenticated yet to the cobra server, we need to enqueue | ||||||
|  |         //    and retry later | ||||||
|  |         // 3. If the network connection was droped (WebSocket::send will return false), | ||||||
|  |         //    it means the message won't be sent so we need to enqueue as well. | ||||||
|  |         // | ||||||
|  |         // The order of the conditionals is important. | ||||||
|  |         // | ||||||
|  |         if (_publishMode == CobraConnection_PublishMode_Batch || !_authenticated || | ||||||
|  |             !publishMessage(serializedJson)) | ||||||
|         { |         { | ||||||
|             enqueue(serializedJson); |             enqueue(serializedJson); | ||||||
|             return _id - 1; |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         // |         return msgId; | ||||||
|         // Fast path. We are authenticated and the publishing succeed |  | ||||||
|         //            This should happen for 99% of the cases. |  | ||||||
|         // |  | ||||||
|         if (_authenticated && publishMessage(serializedJson)) |  | ||||||
|         { |  | ||||||
|             return _id - 1; |  | ||||||
|         } |  | ||||||
|         else // Or else we enqueue |  | ||||||
|              // Slow code path is when we haven't connected yet (startup), |  | ||||||
|              // or when the connection drops for some reason. |  | ||||||
|         { |  | ||||||
|             enqueue(serializedJson); |  | ||||||
|             return 0; |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     void CobraConnection::subscribe(const std::string& channel, |     void CobraConnection::subscribe(const std::string& channel, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user