mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-15 01:26:47 +00:00
Add WaitForInitialValidation()
This commit is contained in:
@@ -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&);
|
||||||
|
Reference in New Issue
Block a user