lichao
2021-04-02 83085f2ce99cca05d40a19482151873a55e6393a
src/socket.h
@@ -35,21 +35,24 @@
public:
   typedef bhome_shm::SharedMemory Shm;
   typedef std::function<void(bhome_msg::BHMsg &msg)> RecvCB;
   typedef std::function<void(bhome_msg::MsgI &imsg)> RecvRawCB;
   typedef std::function<void(ShmSocket &sock, bhome_msg::MsgI &imsg, bhome_msg::BHMsg &msg)> RecvCB;
   typedef std::function<void(bhome_msg::BHMsg &msg)> RecvBHMsgCB;
   ShmSocket(Shm &shm, const void *id, const int len);
   ShmSocket(Shm &shm, const int len = 12);
   ~ShmSocket();
   Shm &shm() { return shm_; }
   // start recv.
   bool Start(const RecvCB &onData, int nworker = 1);
   bool StartRaw(const RecvRawCB &onData, int nworker = 1);
   bool Start(const RecvBHMsgCB &onData, int nworker = 1)
   {
      return Start([onData](ShmSocket &sock, bhome_msg::MsgI &imsg, bhome_msg::BHMsg &msg) { onData(msg); }, nworker);
   }
   bool Stop();
   size_t Pending() const { return mq_ ? mq_->Pending() : 0; }
protected:
   ShmSocket(Shm &shm, const void *id, const int len);
   Shm &shm() { return shm_; }
   const Shm &shm() const { return shm_; }
   Queue &mq() { return *mq_; } // programmer should make sure that mq_ is valid.
   const Queue &mq() const { return *mq_; }