Add support and test for concurrent TransitionTo

This commit is contained in:
Alexey Rybalchenko
2019-07-15 15:48:36 +02:00
committed by Dennis Klein
parent 74d301a16f
commit 5256e7c580
3 changed files with 73 additions and 1 deletions

View File

@@ -44,6 +44,14 @@ using FairMQChannelMap = std::unordered_map<std::string, std::vector<FairMQChann
using InputMsgCallback = std::function<bool(FairMQMessagePtr&, int)>;
using InputMultipartCallback = std::function<bool(FairMQParts&, int)>;
namespace fair
{
namespace mq
{
struct OngoingTransition : std::runtime_error { using std::runtime_error::runtime_error; };
}
}
class FairMQDevice
{
friend class FairMQChannel;
@@ -584,6 +592,9 @@ class FairMQDevice
std::queue<fair::mq::State> fStates;
std::mutex fStatesMtx;
std::condition_variable fStatesCV;
std::mutex fTransitionMtx;
bool fTransitioning;
};
#endif /* FAIRMQDEVICE_H_ */