16 #ifndef BLOOMBERG_QUANTUM_SHARED_STATE_MUTEX_H 17 #define BLOOMBERG_QUANTUM_SHARED_STATE_MUTEX_H 21 #include <quantum/quantum_traits.h> 22 #include <quantum/quantum_future_state.h> 23 #include <quantum/quantum_yielding_thread.h> 24 #include <quantum/interface/quantum_icontext.h> 25 #include <quantum/quantum_condition_variable.h> 26 #include <quantum/quantum_buffer.h> 43 template <
class V = T>
46 template <
class V = T>
64 template<
class REP,
class PERIOD>
65 std::future_status
waitFor(
const std::chrono::duration<REP, PERIOD> &time)
const;
67 template<
class REP,
class PERIOD>
69 const std::chrono::duration<REP, PERIOD> &time)
const;
74 std::exception_ptr ex);
78 void conditionWait()
const;
82 void checkPromiseState()
const;
84 bool stateHasChanged()
const;
90 std::exception_ptr _exception;
103 template <
class V = T>
104 void push(V&& value);
106 template <
class V = T>
109 T pull(
bool& isBufferClosed);
119 template<
class REP,
class PERIOD>
120 std::future_status
waitFor(
const std::chrono::duration<REP, PERIOD> &time)
const;
122 template<
class REP,
class PERIOD>
124 const std::chrono::duration<REP, PERIOD> &time)
const;
129 std::exception_ptr ex);
135 void checkPromiseState()
const;
141 mutable Mutex _mutex;
143 std::exception_ptr _exception;
150 #include <quantum/impl/quantum_shared_state_impl.h> 152 #endif //BLOOMBERG_QUANTUM_SHARED_STATE_MUTEX_H int setException(std::exception_ptr ex)
Definition: quantum_shared_state_impl.h:172
Definition: quantum_buffer_impl.h:22
Shared state used between a Promise and a Future to exchange values.
Definition: quantum_shared_state.h:38
std::shared_ptr< ICoroSync > Ptr
Definition: quantum_icoro_sync.h:36
Class representing a promised value.
Definition: quantum_icoro_promise.h:77
void breakPromise()
Definition: quantum_shared_state_impl.h:110
std::future_status waitFor(const std::chrono::duration< REP, PERIOD > &time) const
Definition: quantum_shared_state_impl.h:146
void wait() const
Definition: quantum_shared_state_impl.h:123
int set(V &&value)
Definition: quantum_shared_state_impl.h:37
This class represents a coroutine-compatible implementation of the std::condition_variable....
Definition: quantum_condition_variable.h:36
Container which allows buffered access to a series of values. Values are pushed-in (written) by a pro...
Definition: quantum_buffer.h:49
FutureState
Represents the internal state of a future/promise pair. Modeled after std::future_errc.
Definition: quantum_future_state.h:31
T get()
Definition: quantum_shared_state_impl.h:72
BufferStatus
Defines the result of the operation on the buffer object.
Definition: quantum_buffer.h:32
const T & getRef() const
Definition: quantum_shared_state_impl.h:82