From 13c503b73b4ecc8ce4a6e344f9ac15202985d686 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期二, 20 七月 2021 19:48:58 +0800
Subject: [PATCH] fix memory leak

---
 src/shm_socket.h |   28 ++++++++++++++--------------
 1 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/src/shm_socket.h b/src/shm_socket.h
index bf78e89..9bb65fc 100644
--- a/src/shm_socket.h
+++ b/src/shm_socket.h
@@ -47,9 +47,11 @@
 	typedef std::function<bool(ShmSocket &sock, MsgI &imsg, BHMsgHead &head)> PartialRecvCB;
 	typedef std::function<void(ShmSocket &sock)> IdleCB;
 
-	ShmSocket(Shm &shm, const MQId id, const int len);
-	ShmSocket(Shm &shm, const bool create_or_else_find, const MQId id, const int len);
-	ShmSocket(int64_t offset, Shm &shm, const MQId id);
+	ShmSocket(Shm &shm, const MQId id, Mode mode) :
+	    run_(false), mq_(shm, id, mode), alloc_id_(0), send_buffer_(shm) { Start(); }
+	ShmSocket(int64_t abs_addr, Shm &shm, const MQId id) :
+	    run_(false), mq_(abs_addr, shm, id), alloc_id_(0), send_buffer_(shm) { Start(); }
+
 	~ShmSocket();
 	static bool Remove(SharedMemory &shm, const MQId id) { return Queue::Remove(shm, id); }
 	bool Remove() { return Remove(shm(), id()); }
@@ -68,16 +70,16 @@
 
 	bool RequestAlloc(const int64_t size, std::function<void(MsgI &msg)> const &onResult);
 
+	bool Send(const MQInfo &remote, const MsgI &msg, const std::string &msg_id, RecvCB &&cb);
 	template <class Body>
-	bool Send(const MQInfo &remote, BHMsgHead &head, Body &body, RecvCB &&cb = RecvCB())
-	{
-		return Send(remote, MsgI::Serialize(head, body), head.msg_id(), std::move(cb));
-	}
-	template <class... T>
-	bool Send(const MQInfo &remote, const MsgI &imsg, T &&...t)
-	{
-		return SendImpl(remote, imsg, std::forward<decltype(t)>(t)...);
-	}
+	bool Send(const MQInfo &remote, BHMsgHead &head, Body &body, RecvCB &&cb) { return Send(remote, MsgI::Serialize(head, body), head.msg_id(), std::move(cb)); }
+	bool Send(const MQInfo &remote, std::string &&content, const std::string &msg_id, RecvCB &&cb);
+
+	template <class Body>
+	bool Send(const MQInfo &remote, BHMsgHead &head, Body &body) { return Send(remote, MsgI::Serialize(head, body)); }
+	bool Send(const MQInfo &remote, std::string &&content);
+	bool Send(const MQInfo &remote, const MsgI &imsg) { return SendImpl(remote, imsg); }
+
 	template <class... T>
 	bool Send(const MQInfo &remote, const int64_t cmd, T &&...t)
 	{
@@ -135,8 +137,6 @@
 private:
 	bool StopNoLock();
 	bool RunningNoLock() { return !workers_.empty(); }
-
-	bool Send(const MQInfo &remote, std::string &&content, const std::string &msg_id, RecvCB &&cb = RecvCB());
 
 	template <class... Rest>
 	bool SendImpl(Rest &&...rest)

--
Gitblit v1.8.0