From ea2ee85202f7b16d7b713bc7a7dcd1fa63bc6213 Mon Sep 17 00:00:00 2001 From: lichao <lichao@aiotlink.com> Date: 星期五, 26 三月 2021 11:54:50 +0800 Subject: [PATCH] change refcount to AddRef,Release interface. --- src/shm_queue.h | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/src/shm_queue.h b/src/shm_queue.h index 023b2d1..14f43c0 100644 --- a/src/shm_queue.h +++ b/src/shm_queue.h @@ -53,9 +53,11 @@ using Super::size; using Super::capacity; const MQId &Id() const { return id_; } - bool Write(const D &buf, const int timeout_ms) { + template <class OnWrite> + bool Write(const D &buf, const int timeout_ms, const OnWrite &onWrite) { Guard lock(mutex()); if (cond_write_.timed_wait(lock, MSFromNow(timeout_ms), [&]() { return !this->full(); })) { + onWrite(); this->push_back(buf); cond_read_.notify_one(); return true; @@ -63,6 +65,7 @@ return false; } } + bool Write(const D &buf, const int timeout_ms) { return Write(buf, timeout_ms, [](){}); } bool Read(D &buf, const int timeout_ms){ Guard lock(mutex()); @@ -92,6 +95,7 @@ bool Recv(MQId &source_id, void *&data, size_t &size, const int timeout_ms); const MQId &Id() const { return data()->Id(); } bool Send(const MQId &remote_id, const Msg &msg, const int timeout_ms); + bool Recv(Msg &msg, const int timeout_ms) { return Read(msg, timeout_ms); } }; } // namespace bhome_shm -- Gitblit v1.8.0