liuxiaolong
2021-07-20 13c503b73b4ecc8ce4a6e344f9ac15202985d686
src/shm_socket.h
@@ -47,9 +47,11 @@
   typedef std::function<bool(ShmSocket &sock, MsgI &imsg, BHMsgHead &head)> PartialRecvCB;
   typedef std::function<void(ShmSocket &sock)> IdleCB;
   ShmSocket(Shm &shm, const MQId id, const int len);
   ShmSocket(Shm &shm, const bool create_or_else_find, const MQId id, const int len);
   ShmSocket(int64_t offset, Shm &shm, const MQId id);
   ShmSocket(Shm &shm, const MQId id, Mode mode) :
       run_(false), mq_(shm, id, mode), alloc_id_(0), send_buffer_(shm) { Start(); }
   ShmSocket(int64_t abs_addr, Shm &shm, const MQId id) :
       run_(false), mq_(abs_addr, shm, id), alloc_id_(0), send_buffer_(shm) { Start(); }
   ~ShmSocket();
   static bool Remove(SharedMemory &shm, const MQId id) { return Queue::Remove(shm, id); }
   bool Remove() { return Remove(shm(), id()); }
@@ -68,16 +70,16 @@
   bool RequestAlloc(const int64_t size, std::function<void(MsgI &msg)> const &onResult);
   bool Send(const MQInfo &remote, const MsgI &msg, const std::string &msg_id, RecvCB &&cb);
   template <class Body>
   bool Send(const MQInfo &remote, BHMsgHead &head, Body &body, RecvCB &&cb = RecvCB())
   {
      return Send(remote, MsgI::Serialize(head, body), head.msg_id(), std::move(cb));
   }
   template <class... T>
   bool Send(const MQInfo &remote, const MsgI &imsg, T &&...t)
   {
      return SendImpl(remote, imsg, std::forward<decltype(t)>(t)...);
   }
   bool Send(const MQInfo &remote, BHMsgHead &head, Body &body, RecvCB &&cb) { return Send(remote, MsgI::Serialize(head, body), head.msg_id(), std::move(cb)); }
   bool Send(const MQInfo &remote, std::string &&content, const std::string &msg_id, RecvCB &&cb);
   template <class Body>
   bool Send(const MQInfo &remote, BHMsgHead &head, Body &body) { return Send(remote, MsgI::Serialize(head, body)); }
   bool Send(const MQInfo &remote, std::string &&content);
   bool Send(const MQInfo &remote, const MsgI &imsg) { return SendImpl(remote, imsg); }
   template <class... T>
   bool Send(const MQInfo &remote, const int64_t cmd, T &&...t)
   {
@@ -135,8 +137,6 @@
private:
   bool StopNoLock();
   bool RunningNoLock() { return !workers_.empty(); }
   bool Send(const MQInfo &remote, std::string &&content, const std::string &msg_id, RecvCB &&cb = RecvCB());
   template <class... Rest>
   bool SendImpl(Rest &&...rest)