9 #ifndef FAIRMQSTATEQUEUE_H_ 10 #define FAIRMQSTATEQUEUE_H_ 12 #include <fairmq/States.h> 18 #include <condition_variable> 31 fair::mq::State WaitForNext()
33 std::unique_lock<std::mutex> lock(fMtx);
34 while (fStates.empty()) {
35 fCV.wait_for(lock, std::chrono::milliseconds(50));
38 fair::mq::State state = fStates.front();
40 if (state == fair::mq::State::Error) {
48 template<
typename Rep,
typename Period>
49 std::pair<bool, fair::mq::State> WaitForNext(std::chrono::duration<Rep, Period>
const& duration)
51 std::unique_lock<std::mutex> lock(fMtx);
52 fCV.wait_for(lock, duration);
54 if (fStates.empty()) {
55 return {
false, fair::mq::State::Ok };
58 fair::mq::State state = fStates.front();
60 if (state == fair::mq::State::Error) {
65 return {
true, state };
68 void WaitForState(fair::mq::State state) {
while (WaitForNext() != state) {} }
70 void Push(fair::mq::State state)
73 std::lock_guard<std::mutex> lock(fMtx);
81 std::lock_guard<std::mutex> lock(fMtx);
82 fStates = std::queue<fair::mq::State>();
86 std::queue<fair::mq::State> fStates;
88 std::condition_variable fCV;
Definition: StateQueue.h:25
Tools for interfacing containers to the transport via polymorphic allocators.
Definition: DeviceRunner.h:23