From 9cf3ddc288193e2fe645f34388322f9586ee043d Mon Sep 17 00:00:00 2001 From: lichao <lichao@aiotlink.com> Date: 星期三, 24 三月 2021 16:23:24 +0800 Subject: [PATCH] change mq id from int to uuid. --- src/shm.cpp | 26 ++++++++++++++------------ 1 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/shm.cpp b/src/shm.cpp index f052477..b89acef 100644 --- a/src/shm.cpp +++ b/src/shm.cpp @@ -18,27 +18,29 @@ #include "shm.h" #include "bh_util.h" #include <mutex> +#include <boost/uuid/uuid_io.hpp> +#include <boost/uuid/uuid_generators.hpp> namespace bhome_shm { using namespace boost::interprocess; +using namespace boost::uuids; namespace { -std::string MsgQIdToName(const int id) { return "shmq" + std::to_string(id); } -} - -ShmMsgQueue::ShmMsgQueue(MQId id, ShmType &segment, const std::string &name, const uint32_t len): -SharedQueue(segment, name, id, len, segment.get_segment_manager()) -{ - printf("queue size: %ld cap: %ld\n", data()->size(), data()->capacity()); +std::string MsgQIdToName(const MQId& id) { return "shmq" + to_string(id); } +MQId EmptyId() { return nil_uuid(); } +MQId NewId() { return random_generator()(); } } ShmMsgQueue::ShmMsgQueue(MQId id, ShmType &segment, const uint32_t len): -ShmMsgQueue(id, segment, MsgQIdToName(id), len) -{} +SharedQueue(segment, MsgQIdToName(id), id, len, segment.get_segment_manager()) +{ + printf("queue size: %ld cap: %ld\n", data()->size(), data()->capacity()); +} +ShmMsgQueue::ShmMsgQueue(ShmType &segment, const uint32_t len):ShmMsgQueue(NewId(), segment, len) {} ShmMsgQueue::~ShmMsgQueue() { - + Remove(); } bool ShmMsgQueue::Send(MQId remote_id, const void *data, const size_t size, const int timeout_ms) @@ -49,7 +51,7 @@ void *p = shm().allocate(size, std::nothrow); bool r = false; if (p) { - Msg buf = { id(), p, size}; + Msg buf = { Id(), p, size}; memcpy(p, data, size); if (remote->Write(buf, timeout_ms)) { return true; @@ -74,7 +76,7 @@ return true; } } - source_id = 0; + source_id = EmptyId(); data = 0; size = 0; return false; -- Gitblit v1.8.0