mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-13 08:41:16 +00:00
Add WaitForInitialValidation()
This commit is contained in:
parent
e5313d03fe
commit
252acf41c8
|
@ -35,6 +35,9 @@ FairMQDevice::FairMQDevice()
|
||||||
, fLogIntervalInMs(1000)
|
, fLogIntervalInMs(1000)
|
||||||
, fCommandSocket()
|
, fCommandSocket()
|
||||||
, fTransportFactory(NULL)
|
, fTransportFactory(NULL)
|
||||||
|
, fInitialValidationFinished(false)
|
||||||
|
, fInitialValidationCondition()
|
||||||
|
, fInitialValidationMutex()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,6 +89,11 @@ void FairMQDevice::InitWrapper()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// notify parent thread about end of processing.
|
||||||
|
boost::lock_guard<boost::mutex> lock(fInitialValidationMutex);
|
||||||
|
fInitialValidationFinished = true;
|
||||||
|
fInitialValidationCondition.notify_one();
|
||||||
|
|
||||||
++numAttempts;
|
++numAttempts;
|
||||||
if (numAttempts > maxAttempts)
|
if (numAttempts > maxAttempts)
|
||||||
{
|
{
|
||||||
|
@ -111,6 +119,15 @@ void FairMQDevice::InitWrapper()
|
||||||
fStateCondition.notify_one();
|
fStateCondition.notify_one();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FairMQDevice::WaitForInitialValidation()
|
||||||
|
{
|
||||||
|
boost::unique_lock<boost::mutex> lock(fInitialValidationMutex);
|
||||||
|
while (!fInitialValidationFinished)
|
||||||
|
{
|
||||||
|
fInitialValidationCondition.wait(lock);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void FairMQDevice::Init()
|
void FairMQDevice::Init()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -236,6 +253,8 @@ void FairMQDevice::PrintChannel(const string& name)
|
||||||
|
|
||||||
void FairMQDevice::RunWrapper()
|
void FairMQDevice::RunWrapper()
|
||||||
{
|
{
|
||||||
|
LOG(INFO) << "DEVICE: Running...";
|
||||||
|
|
||||||
boost::thread rateLogger(boost::bind(&FairMQDevice::LogSocketRates, this));
|
boost::thread rateLogger(boost::bind(&FairMQDevice::LogSocketRates, this));
|
||||||
|
|
||||||
Run();
|
Run();
|
||||||
|
|
|
@ -47,6 +47,8 @@ class FairMQDevice : public FairMQStateMachine, public FairMQConfigurable
|
||||||
void SortChannel(const std::string& name, const bool reindex = true);
|
void SortChannel(const std::string& name, const bool reindex = true);
|
||||||
void PrintChannel(const std::string& name);
|
void PrintChannel(const std::string& name);
|
||||||
|
|
||||||
|
void WaitForInitialValidation();
|
||||||
|
|
||||||
virtual void SetProperty(const int key, const std::string& value);
|
virtual void SetProperty(const int key, const std::string& value);
|
||||||
virtual std::string GetProperty(const int key, const std::string& default_ = "");
|
virtual std::string GetProperty(const int key, const std::string& default_ = "");
|
||||||
virtual void SetProperty(const int key, const int value);
|
virtual void SetProperty(const int key, const int value);
|
||||||
|
@ -101,6 +103,11 @@ class FairMQDevice : public FairMQStateMachine, public FairMQConfigurable
|
||||||
bool InitChannel(FairMQChannel&);
|
bool InitChannel(FairMQChannel&);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// condition variable to notify parent thread about end of initial validation.
|
||||||
|
bool fInitialValidationFinished;
|
||||||
|
boost::condition_variable fInitialValidationCondition;
|
||||||
|
boost::mutex fInitialValidationMutex;
|
||||||
|
|
||||||
/// Copy Constructor
|
/// Copy Constructor
|
||||||
FairMQDevice(const FairMQDevice&);
|
FairMQDevice(const FairMQDevice&);
|
||||||
FairMQDevice operator=(const FairMQDevice&);
|
FairMQDevice operator=(const FairMQDevice&);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user