lichao
2021-04-06 4deeafbd502dc3c57dab8ad6ca601a38a9e7f074
src/socket.cpp
@@ -49,15 +49,15 @@
   Stop(); //TODO should stop in sub class, incase thread access sub class data.
}
bool ShmSocket::Start(const RecvCB &onData, int nworker)
bool ShmSocket::Start(const RecvCB &onData, const IdleCB &onIdle, int nworker)
{
   if (!mq_) {
      return false;
   if (!mq_ || !onData) {
      return false; // TODO error code.
   }
   std::lock_guard<std::mutex> lock(mutex_);
   StopNoLock();
   auto RecvProc = [this, onData]() {
   auto RecvProc = [this, onData, onIdle]() {
      while (run_) {
         try {
            MsgI imsg;
@@ -67,6 +67,8 @@
               if (imsg.Unpack(msg)) {
                  onData(*this, imsg, msg);
               }
            } else if (onIdle) {
               onIdle(*this);
            }
         } catch (...) {
         }