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