diff --git a/zmq_src/ZMQServer.cpp b/zmq_src/ZMQServer.cpp index d6a05ab40f7a04a1d0ffb1e3c3d6cf9e0b65f7cc..669ca9b319ab7f7994c69b36b490eb4adc34755e 100644 --- a/zmq_src/ZMQServer.cpp +++ b/zmq_src/ZMQServer.cpp @@ -30,6 +30,7 @@ #include "common.h" #include "SGXException.h" +#include "ExitRequestedException.h" #include "ZMQMessage.h" #include "ZMQServer.h" #include "sgxwallet_common.h" @@ -274,12 +275,24 @@ void ZMQServer::doOneServerLoop() { } } +void ZMQServer::workerThreadProcessNextMessage() { + usleep(1000000); + cerr << "WORKER LOOP" << endl; +} + void ZMQServer::workerThreadMessageProcessLoop(ZMQServer* _agent ) { CHECK_STATE(_agent); _agent->waitOnGlobalStartBarrier(); // do work forever until told to exit while (!isExitRequested) { - usleep(1000000); - cerr << "WORKER LOOP" << endl; + try { + _agent->workerThreadProcessNextMessage(); + } catch (ExitRequestedException& e) { + break; + } catch (Exception& e) { + spdlog::error(string("Caught exception in worker thread loop:") + e.what()); + } } + + spdlog::info("Exit requested. Exiting worker thread."); } \ No newline at end of file diff --git a/zmq_src/ZMQServer.h b/zmq_src/ZMQServer.h index 30245cc55b825e0cb9d5ede9ae1b5d8721d05c8a..e6080edd9998e10975760b1dac9017add3e7af5e 100644 --- a/zmq_src/ZMQServer.h +++ b/zmq_src/ZMQServer.h @@ -79,6 +79,8 @@ public: static void workerThreadMessageProcessLoop(ZMQServer* agent ); + void workerThreadProcessNextMessage(); + };