mirror of
https://github.com/mutouyun/cpp-ipc.git
synced 2025-12-06 16:56:45 +08:00
add dismiss for shm
This commit is contained in:
parent
15a99073e3
commit
2e2cf82d91
@ -38,6 +38,7 @@ public:
|
||||
void release();
|
||||
|
||||
void* get() const;
|
||||
id_t dismiss();
|
||||
|
||||
private:
|
||||
class handle_;
|
||||
|
||||
@ -75,7 +75,7 @@ void * get_mem(id_t id, std::size_t * size) {
|
||||
ipc::error("fail MapViewOfFile[%d]\n", static_cast<int>(::GetLastError()));
|
||||
return nullptr;
|
||||
}
|
||||
PMEMORY_BASIC_INFORMATION mem_info;
|
||||
MEMORY_BASIC_INFORMATION mem_info;
|
||||
if (::VirtualQuery(mem, &mem_info, sizeof(mem_info)) == 0) {
|
||||
ipc::error("fail VirtualQuery[%d]\n", static_cast<int>(::GetLastError()));
|
||||
return nullptr;
|
||||
|
||||
16
src/shm.cpp
16
src/shm.cpp
@ -66,11 +66,7 @@ bool handle::acquire(char const * name, std::size_t size, unsigned mode) {
|
||||
|
||||
void handle::release() {
|
||||
if (!valid()) return;
|
||||
shm::release(impl(p_)->id_);
|
||||
impl(p_)->id_ = nullptr;
|
||||
impl(p_)->m_ = nullptr;
|
||||
impl(p_)->s_ = 0;
|
||||
impl(p_)->n_.clear();
|
||||
shm::release(dismiss());
|
||||
}
|
||||
|
||||
void* handle::get() const {
|
||||
@ -78,5 +74,15 @@ void* handle::get() const {
|
||||
return impl(p_)->m_;
|
||||
}
|
||||
|
||||
id_t handle::dismiss() {
|
||||
if (!valid()) return nullptr;
|
||||
auto old = impl(p_)->id_;
|
||||
impl(p_)->id_ = nullptr;
|
||||
impl(p_)->m_ = nullptr;
|
||||
impl(p_)->s_ = 0;
|
||||
impl(p_)->n_.clear();
|
||||
return old;
|
||||
}
|
||||
|
||||
} // namespace shm
|
||||
} // namespace ipc
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user