diff options
Diffstat (limited to 'binaryurp/source/bridge.hxx')
-rw-r--r-- | binaryurp/source/bridge.hxx | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/binaryurp/source/bridge.hxx b/binaryurp/source/bridge.hxx index 8d667897d253..3ffbfbaeb43b 100644 --- a/binaryurp/source/bridge.hxx +++ b/binaryurp/source/bridge.hxx @@ -95,4 +95,7 @@ public: // Internally waits for all incoming and outgoing remote calls to terminate, - // so must not be called from within such a call: - void terminate(); + // so must not be called from within such a call; when final is true, also + // joins all remaining threads (reader, writer, and worker threads from the + // thread pool), so must not be called with final set to true from such a + // thread: + void terminate(bool final); @@ -230,2 +233,5 @@ private: + // Must only be called with mutex_ locked: + void checkDisposed(); + typedef @@ -242,2 +248,4 @@ private: + enum State { STATE_INITIAL, STATE_STARTED, STATE_TERMINATED, STATE_FINAL }; + enum Mode { @@ -261,4 +269,11 @@ private: OutgoingRequests outgoingRequests_; + osl::Condition passive_; + // to guarantee that passive_ is eventually set (to avoid deadlock, see + // dispose), activeCalls_ only counts those calls for which it can be + // guaranteed that incrementActiveCalls is indeed followed by + // decrementActiveCalls, without an intervening exception + osl::Condition terminated_; osl::Mutex mutex_; + State state_; Listeners listeners_; @@ -273,8 +288,2 @@ private: std::size_t activeCalls_; - osl::Condition passive_; - // to guarantee that passive_ is eventually set (to avoid deadlock, see - // dispose), activeCalls_ only counts those calls for which it can be - // guaranteed that incrementActiveCalls is indeed followed by - // decrementActiveCalls, without an intervening exception - bool terminated_; |