From 34cd75f77d0ca94dbdba4e6cc9451fe4d33e78b3 Mon Sep 17 00:00:00 2001 From: lichao <lichao@aiotlink.com> Date: 星期三, 19 五月 2021 19:14:13 +0800 Subject: [PATCH] add api BHQueryProcs. --- src/shm.h | 17 +++++++++++++---- 1 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/shm.h b/src/shm.h index cb487df..b5ec2ea 100644 --- a/src/shm.h +++ b/src/shm.h @@ -19,7 +19,7 @@ #ifndef SHM_6CHO6D6C #define SHM_6CHO6D6C -#include "robust.h" +#include "log.h" #include <atomic> #include <boost/interprocess/managed_shared_memory.hpp> #include <boost/interprocess/sync/interprocess_mutex.hpp> @@ -68,7 +68,7 @@ if (Killed(old)) { r = PidCas(old, pid()); if (r) { - printf("PidCheck captured pid %d -> %d\n", old, pid()); + LOG_DEBUG() << "PidCheck captured pid " << old << " -> " << pid(); } } } @@ -90,8 +90,9 @@ } }; -typedef robust::Mutex Mutex; -typedef robust::Guard<Mutex> Guard; +typedef interprocess_mutex Mutex; +typedef scoped_lock<Mutex> Guard; +// typedef robust::Guard<Mutex> Guard; class SharedMemory : public mshm_t { @@ -191,6 +192,12 @@ pdata_ = shm_.Find<Data>(ObjName(name_)); } } + ShmObject(const int64_t offset, ShmType &segment, const std::string &name) : + shm_(segment), name_(name) + { + pdata_ = reinterpret_cast<Data *>(Addr(shm_.get_address()) + offset); + } + bool IsOk() const { return pdata_; } static bool Remove(SharedMemory &shm, const std::string &name) { return shm.destroy<Data>(ObjName(name).c_str()); } @@ -200,11 +207,13 @@ std::string name() const { return name_; } Data *data() { return pdata_; } const Data *data() const { return pdata_; } + int64_t offset() const { return Addr(pdata_) - Addr(shm_.get_address()); } Data *operator->() { return data(); } const Data *operator->() const { return data(); } bool Remove() { return Remove(shm_, name_); } private: + static int64_t Addr(const void *p) { return reinterpret_cast<int64_t>(p); } ShmType &shm_; std::string name_; Data *pdata_ = nullptr; -- Gitblit v1.8.0