From dc86ace85e437ecb8a2e728e4dce36d02bbb8a6e Mon Sep 17 00:00:00 2001
From: lichao <lichao@aiotlink.com>
Date: 星期五, 23 四月 2021 12:59:50 +0800
Subject: [PATCH] move ref count into msg meta, only 1 poinetr now.

---
 src/failed_msg.cpp |   13 ++++---------
 1 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/src/failed_msg.cpp b/src/failed_msg.cpp
index f128499..0b3ee42 100644
--- a/src/failed_msg.cpp
+++ b/src/failed_msg.cpp
@@ -17,18 +17,13 @@
  */
 #include "failed_msg.h"
 
-FailedMsgQ::Func FailedMsgQ::PrepareSender(const std::string &remote, Msg const &msg)
+FailedMsgQ::Func FailedMsgQ::PrepareSender(const std::string &remote, Msg msg)
 {
 	msg.AddRef();
-	return [remote, msg](void *valid_sock) {
+	return [remote, msg](void *valid_sock) mutable {
 		assert(valid_sock);
 		ShmSocket &sock = *static_cast<ShmSocket *>(valid_sock);
-		bool r = sock.Send(remote.data(), msg);
-		//TODO check remote removed.
-		if (r && msg.IsCounted()) {
-			auto tmp = msg; // Release() is not const, but it's safe to release.
-			tmp.Release(sock.shm());
-		}
-		return r;
+		DEFER1(msg.Release(sock.shm())); // Release() is not const, but it's safe to release.
+		return sock.Send(remote.data(), msg);
 	};
 }
\ No newline at end of file

--
Gitblit v1.8.0