ifw-daq  3.0.1
IFW Data Acquisition modules
Classes | Public Member Functions | Protected Member Functions | Friends | List of all members
daq::ObservableStatus Class Reference

Stores data acquisition status and allows subscription to status changes. More...

#include <status.hpp>

Classes

class  DeferSignal
 Defer signal changes until later time. More...
 

Public Member Functions

 ObservableStatus (std::string id, std::string file_id) noexcept
 Construct a new object. More...
 
 ObservableStatus (Status status)
 
 ObservableStatus (ObservableStatus &&)=default
 
 ObservableStatus (ObservableStatus const &)=delete
 
ObservableStatusoperator= (ObservableStatus &&)=default
 
ObservableStatusoperator= (ObservableStatus const &)=delete
 
bool operator== (ObservableStatus const &rhs) const noexcept
 
bool operator!= (ObservableStatus const &rhs) const noexcept
 
bool operator== (Status const &rhs) const noexcept
 
bool operator!= (Status const &rhs) const noexcept
 
ObservableStatusoperator= (Status const &status)
 Assign new status where the new status refers to the same DAQ. More...
 
Accessors
std::string const & GetId () const noexcept
 
std::string const & GetFileId () const noexcept
 
State GetState () const noexcept
 
bool GetError () const noexcept
 
std::vector< Alert > const & GetAlerts () const noexcept
 
Status::Clock::time_point GetTimestamp () const noexcept
 

Protected Member Functions

void EnableSignals (bool force) noexcept
 Decrement signal blocker and if number of blocks reaches zero emit signal if generations are differnt, unless forced in which case signal is always emitted. More...
 
void DisableSignals () noexcept
 Disable signals from being sent (unless forced). More...
 

Friends

class DeferSignal
 

Modifiers

using SignalType = boost::signals2::signal< void(ObservableStatus const &)>
 Connect observer that is invoked when state is modified. More...
 
void SetState (State s, std::optional< bool > error=std::nullopt) noexcept
 Set state of data acquisition. More...
 
void SetReceiverStatus (std::size_t index, ReceiverStatus status)
 Set receiver status. More...
 
ReceiverStatus GetReceiverStatus (std::size_t index) const noexcept
 Get receiver status. More...
 
void SetError (bool error) noexcept
 Set error flag for data acquisition. More...
 
void SetResult (std::string result)
 Set resulting data product path. More...
 
void SetAlert (Alert alert)
 Set alert. More...
 
void ClearAlert (AlertId const &alert)
 Clear alert. More...
 
template<class Observer >
boost::signals2::connection ConnectObserver (Observer o)
 Connect observer that is invoked when state is modified. More...
 
boost::signals2::connection ConnectStatus (SignalType::slot_type const &slot)
 Connect observer that is invoked when state is modified. More...
 
void EmitSignal (bool forced=false) noexcept
 Emit signal, which unless force == true, will only emit signal unless blocked. More...
 
unsigned ChangesSinceLastSignal () const noexcept
 Query number of changes made since last signal. More...
 
 operator Status () const
 Allow implicit conversion to non-observable status. More...
 
Status const & GetStatus () const noexcept
 Connect observer that is invoked when state is modified. More...
 

Detailed Description

Stores data acquisition status and allows subscription to status changes.

DaqController instances will update ObservableStatus as changes occur.

Definition at line 210 of file status.hpp.

Member Typedef Documentation

◆ SignalType

using daq::ObservableStatus::SignalType = boost::signals2::signal<void(ObservableStatus const&)>

Connect observer that is invoked when state is modified.

Parameters
oObserver callable invoked on status changes (state or file changes) Observer must be invocable with signature void(ObservableStatus const&).
Returns
signal connection object that can be used to disconnect observer:
auto c = status.ConnectObserver([](ObservableStatus const& s){});
// later the connection object can be used to disconnect
c.disconnect();
ObservableStatus(std::string id, std::string file_id) noexcept
Construct a new object.
Definition: status.cpp:221

Definition at line 381 of file status.hpp.

Constructor & Destructor Documentation

◆ ObservableStatus() [1/4]

daq::ObservableStatus::ObservableStatus ( std::string  id,
std::string  file_id 
)
explicitnoexcept

Construct a new object.

Parameters
idData acquisition identifier.

Definition at line 221 of file status.cpp.

◆ ObservableStatus() [2/4]

daq::ObservableStatus::ObservableStatus ( Status  status)
explicit

Definition at line 218 of file status.cpp.

◆ ObservableStatus() [3/4]

daq::ObservableStatus::ObservableStatus ( ObservableStatus &&  )
default

◆ ObservableStatus() [4/4]

daq::ObservableStatus::ObservableStatus ( ObservableStatus const &  )
delete

Member Function Documentation

◆ ChangesSinceLastSignal()

unsigned daq::ObservableStatus::ChangesSinceLastSignal ( ) const
inlinenoexcept

Query number of changes made since last signal.

Definition at line 397 of file status.hpp.

◆ ClearAlert()

void daq::ObservableStatus::ClearAlert ( AlertId const &  alert)

Clear alert.

Parameters
alertto clear.

Definition at line 327 of file status.cpp.

◆ ConnectObserver()

template<class Observer >
boost::signals2::connection daq::ObservableStatus::ConnectObserver ( Observer  o)
inline

Connect observer that is invoked when state is modified.

Parameters
oObserver callable invoked on status changes (state or file changes) Observer must be invocable with signature void(ObservableStatus const&).
Returns
signal connection object that can be used to disconnect observer:
auto c = status.ConnectObserver([](ObservableStatus const& s){});
// later the connection object can be used to disconnect
c.disconnect();

Definition at line 383 of file status.hpp.

◆ ConnectStatus()

boost::signals2::connection daq::ObservableStatus::ConnectStatus ( SignalType::slot_type const &  slot)
inline

Connect observer that is invoked when state is modified.

Parameters
oObserver callable invoked on status changes (state or file changes) Observer must be invocable with signature void(ObservableStatus const&).
Returns
signal connection object that can be used to disconnect observer:
auto c = status.ConnectObserver([](ObservableStatus const& s){});
// later the connection object can be used to disconnect
c.disconnect();

Definition at line 386 of file status.hpp.

◆ DisableSignals()

void daq::ObservableStatus::DisableSignals ( )
protectednoexcept

Disable signals from being sent (unless forced).

Returns
generation counter which can be used to detect if Status has been modified.

Definition at line 368 of file status.cpp.

◆ EmitSignal()

void daq::ObservableStatus::EmitSignal ( bool  forced = false)
noexcept

Emit signal, which unless force == true, will only emit signal unless blocked.

Definition at line 333 of file status.cpp.

◆ EnableSignals()

void daq::ObservableStatus::EnableSignals ( bool  force)
protectednoexcept

Decrement signal blocker and if number of blocks reaches zero emit signal if generations are differnt, unless forced in which case signal is always emitted.

Parameters
forceForce signal to be emitted even though
Returns
generation counter which can be used to detect if Status has been modified.

Definition at line 361 of file status.cpp.

◆ GetAlerts()

std::vector< Alert > const & daq::ObservableStatus::GetAlerts ( ) const
noexcept
Returns
list of alerts.

Definition at line 258 of file status.cpp.

◆ GetError()

bool daq::ObservableStatus::GetError ( ) const
noexcept
Returns
Data acquisition error flag.

Definition at line 274 of file status.cpp.

◆ GetFileId()

std::string const & daq::ObservableStatus::GetFileId ( ) const
noexcept
Returns
OLAS file id

Definition at line 266 of file status.cpp.

◆ GetId()

std::string const & daq::ObservableStatus::GetId ( ) const
noexcept
Returns
Data acquisition identifier

Definition at line 254 of file status.cpp.

◆ GetReceiverStatus()

ReceiverStatus daq::ObservableStatus::GetReceiverStatus ( std::size_t  index) const
noexcept

Get receiver status.

Parameters
indexIndex of receiver in DpSpec.
Returns
Status structure.

Definition at line 301 of file status.cpp.

◆ GetState()

State daq::ObservableStatus::GetState ( ) const
noexcept
Returns
Data acquisition state

Definition at line 270 of file status.cpp.

◆ GetStatus()

Status const & daq::ObservableStatus::GetStatus ( ) const
noexcept

Connect observer that is invoked when state is modified.

Parameters
oObserver callable invoked on status changes (state or file changes) Observer must be invocable with signature void(ObservableStatus const&).
Returns
signal connection object that can be used to disconnect observer:
auto c = status.ConnectObserver([](ObservableStatus const& s){});
// later the connection object can be used to disconnect
c.disconnect();

Definition at line 357 of file status.cpp.

◆ GetTimestamp()

Status::Clock::time_point daq::ObservableStatus::GetTimestamp ( ) const
noexcept
Returns
Timestamp.

Definition at line 262 of file status.cpp.

◆ operator Status()

daq::ObservableStatus::operator Status ( ) const

Allow implicit conversion to non-observable status.

Definition at line 353 of file status.cpp.

◆ operator!=() [1/2]

bool daq::ObservableStatus::operator!= ( ObservableStatus const &  rhs) const
noexcept

Definition at line 242 of file status.cpp.

◆ operator!=() [2/2]

bool daq::ObservableStatus::operator!= ( Status const &  rhs) const
noexcept

Definition at line 250 of file status.cpp.

◆ operator=() [1/3]

ObservableStatus& daq::ObservableStatus::operator= ( ObservableStatus &&  )
default

◆ operator=() [2/3]

ObservableStatus& daq::ObservableStatus::operator= ( ObservableStatus const &  )
delete

◆ operator=() [3/3]

ObservableStatus & daq::ObservableStatus::operator= ( Status const &  status)

Assign new status where the new status refers to the same DAQ.

Parameters
statusNew status to assign from.
Exceptions
std::invalid_argumentif status.id is not equal to this->id.

Definition at line 225 of file status.cpp.

◆ operator==() [1/2]

bool daq::ObservableStatus::operator== ( ObservableStatus const &  rhs) const
noexcept

Definition at line 238 of file status.cpp.

◆ operator==() [2/2]

bool daq::ObservableStatus::operator== ( Status const &  rhs) const
noexcept

Definition at line 246 of file status.cpp.

◆ SetAlert()

void daq::ObservableStatus::SetAlert ( Alert  alert)

Set alert.

Note
An existing alert with same ID will be overwritten.
Parameters
alertto set.

Definition at line 322 of file status.cpp.

◆ SetError()

void daq::ObservableStatus::SetError ( bool  error)
noexcept

Set error flag for data acquisition.

Parameters
errorNew error flag status.
Postcondition
Connected observers have been signalled.

Definition at line 309 of file status.cpp.

◆ SetReceiverStatus()

void daq::ObservableStatus::SetReceiverStatus ( std::size_t  index,
ReceiverStatus  status 
)

Set receiver status.

Parameters
indexIndex of receiver in DpSpec.
statusStatus structure to write.

Definition at line 291 of file status.cpp.

◆ SetResult()

void daq::ObservableStatus::SetResult ( std::string  result)

Set resulting data product path.

Parameters
result

Definition at line 317 of file status.cpp.

◆ SetState()

void daq::ObservableStatus::SetState ( State  s,
std::optional< bool >  error = std::nullopt 
)
noexcept

Set state of data acquisition.

Parameters
sNew state
errorOptional new error flag value.
Postcondition
Connected observers have been signalled.

Definition at line 278 of file status.cpp.

Friends And Related Function Documentation

◆ DeferSignal

friend class DeferSignal
friend

Definition at line 408 of file status.hpp.


The documentation for this class was generated from the following files: