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