From bb9a7e348892eb5c4fccb063380aa6fcd9612b71 Mon Sep 17 00:00:00 2001 From: lichao <lichao@aiotlink.com> Date: 星期二, 06 四月 2021 17:32:35 +0800 Subject: [PATCH] server resend failed; rename msgs; refactor. --- src/socket.h | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/socket.h b/src/socket.h index 1a3d47b..57d0ae4 100644 --- a/src/socket.h +++ b/src/socket.h @@ -37,6 +37,7 @@ typedef bhome_shm::SharedMemory Shm; typedef std::function<void(ShmSocket &sock, bhome_msg::MsgI &imsg, bhome_msg::BHMsg &msg)> RecvCB; typedef std::function<void(bhome_msg::BHMsg &msg)> RecvBHMsgCB; + typedef std::function<void(ShmSocket &sock)> IdleCB; ShmSocket(Shm &shm, const void *id, const int len); ShmSocket(Shm &shm, const int len = 12); @@ -44,22 +45,27 @@ Shm &shm() { return shm_; } // start recv. - bool Start(const RecvCB &onData, int nworker = 1); + bool Start(const RecvCB &onData, const IdleCB &onIdle, int nworker = 1); + bool Start(const RecvCB &onData, int nworker = 1) { return Start(onData, IdleCB(), nworker); } + bool Start(const RecvBHMsgCB &onData, const IdleCB &onIdle, int nworker = 1) + { + return Start([onData](ShmSocket &sock, bhome_msg::MsgI &imsg, bhome_msg::BHMsg &msg) { onData(msg); }, onIdle, nworker); + } bool Start(const RecvBHMsgCB &onData, int nworker = 1) { - return Start([onData](ShmSocket &sock, bhome_msg::MsgI &imsg, bhome_msg::BHMsg &msg) { onData(msg); }, nworker); + return Start(onData, IdleCB(), nworker); } bool Stop(); size_t Pending() const { return mq_ ? mq_->Pending() : 0; } + + bool SyncSend(const void *id, const bhome_msg::BHMsg &msg, const int timeout_ms); + bool SyncRecv(bhome_msg::BHMsg &msg, const int timeout_ms); protected: const Shm &shm() const { return shm_; } Queue &mq() { return *mq_; } // programmer should make sure that mq_ is valid. const Queue &mq() const { return *mq_; } std::mutex &mutex() { return mutex_; } - - bool SyncSend(const void *id, const bhome_msg::BHMsg &msg, const int timeout_ms); - bool SyncRecv(bhome_msg::BHMsg &msg, const int timeout_ms); private: bool StopNoLock(); -- Gitblit v1.8.0