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