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