Unverified Commit 61cf7127 authored by kladko's avatar kladko

SKALE-4586 Added concurrentqueue

parent 5319afa7
...@@ -179,6 +179,15 @@ void ZMQServer::checkForExit() { ...@@ -179,6 +179,15 @@ void ZMQServer::checkForExit() {
} }
void ZMQServer::sendMessagesInOutgoingMessageQueueIfAny() {
pair <Json::Value, shared_ptr<zmq::message_t>> element;
// send all items in outgoing queue
while (outgoingQueue.try_dequeue(element)) {
sendToClient(element.first, element.second);
}
}
void ZMQServer::waitForIncomingAndProcessOutgoingMessages() { void ZMQServer::waitForIncomingAndProcessOutgoingMessages() {
zmq_pollitem_t items[1]; zmq_pollitem_t items[1];
items[0].socket = *socket; items[0].socket = *socket;
...@@ -190,12 +199,8 @@ void ZMQServer::waitForIncomingAndProcessOutgoingMessages() { ...@@ -190,12 +199,8 @@ void ZMQServer::waitForIncomingAndProcessOutgoingMessages() {
checkForExit(); checkForExit();
pollResult = zmq_poll(items, 1, 1); pollResult = zmq_poll(items, 1, 1);
pair <Json::Value, shared_ptr<zmq::message_t>> element; sendMessagesInOutgoingMessageQueueIfAny();
// send all items in outgoing queue
while (outgoingQueue.try_dequeue(element)) {
sendToClient(element.first, element.second);
}
} while (pollResult == 0); } while (pollResult == 0);
} }
...@@ -280,12 +285,13 @@ void ZMQServer::doOneServerLoop() { ...@@ -280,12 +285,13 @@ void ZMQServer::doOneServerLoop() {
tie(msgStr, identity) = receiveMessage(); tie(msgStr, identity) = receiveMessage();
{
auto msg = ZMQMessage::parse( auto msg = ZMQMessage::parse(
msgStr.c_str(), msgStr.size(), true, checkSignature, checkKeyOwnership); msgStr.c_str(), msgStr.size(), true, checkSignature, checkKeyOwnership);
CHECK_STATE2(msg, ZMQ_COULD_NOT_PARSE); CHECK_STATE2(msg, ZMQ_COULD_NOT_PARSE);
uint64_t index = 0; uint64_t index = 0;
if ((dynamic_pointer_cast<BLSSignReqMessage>(msg)) || if ((dynamic_pointer_cast<BLSSignReqMessage>(msg)) ||
...@@ -305,6 +311,7 @@ void ZMQServer::doOneServerLoop() { ...@@ -305,6 +311,7 @@ void ZMQServer::doOneServerLoop() {
incomingQueue.at(index).enqueue(element); incomingQueue.at(index).enqueue(element);
}
} catch (ExitRequestedException) { } catch (ExitRequestedException) {
throw; throw;
......
...@@ -95,6 +95,8 @@ public: ...@@ -95,6 +95,8 @@ public:
void sendToClient(Json::Value& _result, shared_ptr<zmq::message_t>& _identity); void sendToClient(Json::Value& _result, shared_ptr<zmq::message_t>& _identity);
void sendMessagesInOutgoingMessageQueueIfAny();
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment