From 34cd75f77d0ca94dbdba4e6cc9451fe4d33e78b3 Mon Sep 17 00:00:00 2001
From: lichao <lichao@aiotlink.com>
Date: 星期三, 19 五月 2021 19:14:13 +0800
Subject: [PATCH] add api BHQueryProcs.

---
 src/socket.cpp |   34 +++++++++++++---------------------
 1 files changed, 13 insertions(+), 21 deletions(-)

diff --git a/src/socket.cpp b/src/socket.cpp
index 55b43f9..19be201 100644
--- a/src/socket.cpp
+++ b/src/socket.cpp
@@ -139,30 +139,11 @@
 	return false;
 }
 
-bool ShmSocket::SyncRecv(int64_t &cmd, const int timeout_ms)
-{
-	return (timeout_ms == 0) ? mq().TryRecv(cmd) : mq().Recv(cmd, timeout_ms);
-}
-//maybe reimplment, using async cbs?
-bool ShmSocket::SyncRecv(bhome_msg::MsgI &msg, bhome_msg::BHMsgHead &head, const int timeout_ms)
-{
-	// std::lock_guard<std::mutex> lock(mutex_); // seems no need to lock mutex_.
-	bool got = (timeout_ms == 0) ? mq().TryRecv(msg) : mq().Recv(msg, timeout_ms);
-	if (got) {
-		if (msg.ParseHead(head)) {
-			return true;
-		} else {
-			msg.Release();
-		}
-	}
-	return false;
-}
-
 bool ShmSocket::Send(const MQInfo &remote, std::string &&content, const std::string &msg_id, RecvCB &&cb)
 {
 	size_t size = content.size();
 	auto OnResult = [content = std::move(content), msg_id, remote, cb = std::move(cb), this](MsgI &msg) mutable {
-		if (!msg.Fill(content)) { return; }
+		if (!msg.Fill(content)) { return false; }
 
 		try {
 			if (!cb) {
@@ -175,12 +156,23 @@
 				};
 				Send(remote, msg, onExpireRemoveCB);
 			}
+			return true;
 		} catch (...) {
 			SetLastError(eError, "Send internal error.");
+			return false;
 		}
 	};
-
+#if 0
+	// self alloc
+	MsgI msg;
+	if (msg.Make(size)) {
+		DEFER1(msg.Release());
+		return OnResult(msg);
+	}
+#else
+	// center alloc
 	return RequestAlloc(size, OnResult);
+#endif
 }
 
 bool ShmSocket::RequestAlloc(const int64_t size, std::function<void(MsgI &msg)> const &onResult)

--
Gitblit v1.8.0