diff --git a/build/ipc.pro b/build/ipc.pro index 0f9441a..85082c8 100644 --- a/build/ipc.pro +++ b/build/ipc.pro @@ -4,8 +4,6 @@ TARGET = ipc CONFIG -= qt CONFIG += c++14 c++1z # may be useless -!msvc:QMAKE_CXXFLAGS += -Wno-attributes -Wno-missing-field-initializers - DEFINES += __IPC_LIBRARY__ DESTDIR = ../output @@ -29,7 +27,7 @@ HEADERS += \ ../src/memory/wrapper.h \ ../src/memory/resource.h \ ../src/platform/detail.h \ - ../src/platform/waiter.h \ + ../src/platform/waiter_wrapper.h \ ../src/circ/elem_def.h \ ../src/circ/elem_array.h \ ../src/prod_cons.h \ diff --git a/src/circ/elem_def.h b/src/circ/elem_def.h index 4d8cfcc..deb6118 100644 --- a/src/circ/elem_def.h +++ b/src/circ/elem_def.h @@ -7,7 +7,7 @@ #include "rw_lock.h" -#include "platform/waiter.h" +#include "platform/waiter_wrapper.h" #include "platform/detail.h" namespace ipc { diff --git a/src/platform/waiter_linux.h b/src/platform/waiter_linux.h index f899aae..129f9a4 100644 --- a/src/platform/waiter_linux.h +++ b/src/platform/waiter_linux.h @@ -68,8 +68,8 @@ public: void close(handle_t h) { if (h == invalid()) return; + ::printf("closing...\n"); if (counter_.fetch_sub(1, std::memory_order_acq_rel) == 1) { - ::printf("destroy...\n"); ::pthread_cond_destroy(&cond_); ::pthread_mutex_destroy(&mutex_); ::printf("destroy end...\n"); @@ -78,6 +78,7 @@ public: bool wait(handle_t h) { if (h == invalid()) return false; + ::printf("wait...\n"); if (::pthread_mutex_lock(&mutex_) != 0) { return false; } @@ -90,11 +91,13 @@ public: void notify(handle_t h) { if (h == invalid()) return; + ::printf("notify...\n"); ::pthread_cond_signal(&cond_); } void broadcast(handle_t h) { if (h == invalid()) return; + ::printf("broadcast...\n"); ::pthread_cond_broadcast(&cond_); } }; diff --git a/src/platform/waiter.h b/src/platform/waiter_wrapper.h similarity index 87% rename from src/platform/waiter.h rename to src/platform/waiter_wrapper.h index 4becc64..efe7e2f 100644 --- a/src/platform/waiter.h +++ b/src/platform/waiter_wrapper.h @@ -11,7 +11,7 @@ namespace ipc { namespace detail { -class waiter_impl { +class waiter_wrapper { public: using waiter_t = detail::waiter; @@ -20,12 +20,12 @@ private: waiter_t::handle_t h_ = waiter_t::invalid(); public: - waiter_impl() = default; - explicit waiter_impl(waiter_t* w) { + waiter_wrapper() = default; + explicit waiter_wrapper(waiter_t* w) { attach(w); } - waiter_impl(const waiter_impl&) = delete; - waiter_impl& operator=(const waiter_impl&) = delete; + waiter_wrapper(const waiter_wrapper&) = delete; + waiter_wrapper& operator=(const waiter_wrapper&) = delete; waiter_t * waiter() { return w_; } waiter_t const * waiter() const { return w_; } diff --git a/src/queue.h b/src/queue.h index 92159e2..9da6cfa 100644 --- a/src/queue.h +++ b/src/queue.h @@ -15,15 +15,15 @@ #include "shm.h" #include "rw_lock.h" -#include "platform/waiter.h" +#include "platform/waiter_wrapper.h" namespace ipc { namespace detail { class queue_waiter { protected: - ipc::detail::waiter_impl waiter_; - ipc::detail::waiter_impl cc_waiter_; + ipc::detail::waiter_wrapper waiter_; + ipc::detail::waiter_wrapper cc_waiter_; bool connected_ = false; bool dismiss_ = true; diff --git a/src/waiter.cpp b/src/waiter.cpp index 6ad643c..266001f 100644 --- a/src/waiter.cpp +++ b/src/waiter.cpp @@ -3,7 +3,7 @@ #include #include "def.h" -#include "platform/waiter.h" +#include "platform/waiter_wrapper.h" namespace ipc { @@ -11,7 +11,7 @@ class waiter::waiter_ : public pimpl { public: std::string n_; - detail::waiter_impl w_ { new detail::waiter }; + detail::waiter_wrapper w_ { new detail::waiter }; ~waiter_() { delete w_.waiter(); } };