FairMQ  1.3.8
C++ Message Passing Framework
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
FairMQDevice Class Reference
Inheritance diagram for FairMQDevice:
Inheritance graph
[legend]
Collaboration diagram for FairMQDevice:
Collaboration graph
[legend]

Public Member Functions

 FairMQDevice ()
 Default constructor.
 
 FairMQDevice (FairMQProgOptions &config)
 Constructor with external FairMQProgOptions.
 
 FairMQDevice (const fair::mq::tools::Version version)
 Constructor that sets the version.
 
 FairMQDevice (FairMQProgOptions &config, const fair::mq::tools::Version version)
 Constructor that sets the version and external FairMQProgOptions.
 
 FairMQDevice (const FairMQDevice &)=delete
 Copy constructor (disabled)
 
FairMQDevice operator= (const FairMQDevice &)=delete
 Assignment operator (disabled)
 
virtual ~FairMQDevice ()
 Default destructor.
 
void CatchSignals ()
 Catches interrupt signals (SIGINT, SIGTERM)
 
virtual void LogSocketRates ()
 Outputs the socket transfer rates.
 
void SortChannel (const std::string &name, const bool reindex=true)
 
template<typename Serializer , typename DataType , typename... Args>
void Serialize (FairMQMessage &msg, DataType &&data, Args &&... args) const
 
template<typename Deserializer , typename DataType , typename... Args>
void Deserialize (FairMQMessage &msg, DataType &&data, Args &&... args) const
 
int Send (FairMQMessagePtr &msg, const std::string &channel, const int index=0, int sndTimeoutInMs=-1)
 
int Receive (FairMQMessagePtr &msg, const std::string &channel, const int index=0, int rcvTimeoutInMs=-1)
 
int SendAsync (FairMQMessagePtr &msg, const std::string &channel, const int index=0) __attribute__((deprecated("For non-blocking Send
 
int ReceiveAsync (FairMQMessagePtr &msg, const std::string &channel, const int index=0) __attribute__((deprecated("For non-blocking Receive
 
int64_t Send (FairMQParts &parts, const std::string &channel, const int index=0, int sndTimeoutInMs=-1)
 
int64_t Receive (FairMQParts &parts, const std::string &channel, const int index=0, int rcvTimeoutInMs=-1)
 
int64_t SendAsync (FairMQParts &parts, const std::string &channel, const int index=0) __attribute__((deprecated("For non-blocking Send
 
int64_t ReceiveAsync (FairMQParts &parts, const std::string &channel, const int index=0) __attribute__((deprecated("For non-blocking Receive
 
auto Transport () const -> FairMQTransportFactory *
 Getter for default transport factory.
 
template<typename... Args>
FairMQMessagePtr NewMessage (Args &&... args)
 
template<typename... Args>
FairMQMessagePtr NewMessageFor (const std::string &channel, int index, Args &&... args)
 
template<typename T >
FairMQMessagePtr NewStaticMessage (const T &data)
 
template<typename T >
FairMQMessagePtr NewStaticMessageFor (const std::string &channel, int index, const T &data)
 
template<typename T >
FairMQMessagePtr NewSimpleMessage (const T &data)
 
template<typename T >
FairMQMessagePtr NewSimpleMessageFor (const std::string &channel, int index, const T &data)
 
FairMQUnmanagedRegionPtr NewUnmanagedRegion (const size_t size)
 
FairMQUnmanagedRegionPtr NewUnmanagedRegionFor (const std::string &channel, int index, const size_t size, FairMQRegionCallback callback=nullptr)
 
template<typename ... Ts>
FairMQPollerPtr NewPoller (const Ts &... inputs)
 
FairMQPollerPtr NewPoller (const std::vector< FairMQChannel *> &channels)
 
void WaitForInitialValidation () __attribute__((deprecated("This method will have no effect in future versions and will be removed. Instead subscribe for state changes and inspect configuration values.")))
 Waits for the first initialization run to finish.
 
std::shared_ptr< FairMQTransportFactoryAddTransport (const fair::mq::Transport transport)
 
void SetConfig (FairMQProgOptions &config)
 Assigns config to the device.
 
FairMQProgOptionsGetConfig () const
 Get pointer to the config.
 
template<typename T >
void OnData (const std::string &channelName, bool(T::*memberFunction)(FairMQMessagePtr &msg, int index))
 
void OnData (const std::string &channelName, InputMsgCallback callback)
 
template<typename T >
void OnData (const std::string &channelName, bool(T::*memberFunction)(FairMQParts &parts, int index))
 
void OnData (const std::string &channelName, InputMultipartCallback callback)
 
FairMQChannelGetChannel (const std::string &channelName, const int index=0)
 
virtual void RegisterChannelEndpoints ()
 
bool RegisterChannelEndpoint (const std::string &channelName, uint16_t minNumSubChannels=1, uint16_t maxNumSubChannels=1)
 
void PrintRegisteredChannels ()
 
void SetId (const std::string &id)
 
std::string GetId ()
 
const fair::mq::tools::Version GetVersion () const
 
void SetNumIoThreads (int numIoThreads)
 
int GetNumIoThreads () const
 
void SetNetworkInterface (const std::string &networkInterface)
 
std::string GetNetworkInterface () const
 
void SetDefaultTransport (const std::string &name)
 
std::string GetDefaultTransport () const
 
void SetInitializationTimeoutInS (int initializationTimeoutInS)
 
int GetInitializationTimeoutInS () const
 
void SetTransport (const std::string &transport)
 
std::string GetTransportName () const
 Gets the default transport name.
 
void SetRawCmdLineArgs (const std::vector< std::string > &args)
 
std::vector< std::string > GetRawCmdLineArgs () const
 
void RunStateMachine ()
 
template<class Rep , class Period >
bool WaitFor (std::chrono::duration< Rep, Period > const &duration)
 
void AddChannel (const std::string &channelName, const FairMQChannel &channel)
 
- Public Member Functions inherited from FairMQStateMachine
int GetInterfaceVersion () const
 
bool ChangeState (int event)
 
bool ChangeState (const std::string &event)
 
void WaitForEndOfState (int event)
 
void WaitForEndOfState (const std::string &event)
 
bool WaitForEndOfStateForMs (int event, int durationInMs)
 
bool WaitForEndOfStateForMs (const std::string &event, int durationInMs)
 
void SubscribeToStateChange (const std::string &key, std::function< void(const State)> callback)
 
void UnsubscribeFromStateChange (const std::string &key)
 
void CallStateChangeCallbacks (const State state) const
 
std::string GetCurrentStateName () const
 
int GetCurrentState () const
 
bool CheckCurrentState (int state) const
 
bool CheckCurrentState (const std::string &state) const
 
void ProcessWork ()
 

Static Public Member Functions

static bool SortSocketsByAddress (const FairMQChannel &lhs, const FairMQChannel &rhs)
 
- Static Public Member Functions inherited from FairMQStateMachine
static std::string GetStateName (const State)
 

Public Attributes

int use timeout version with timeout of: Send(msg
 
int use timeout version with timeout channelA
 
int use timeout version with timeout subchannelIndex
 
int use timeout version with timeout timeout
 
int64_t use timeout version with timeout of: Send(parts
 
int64_t use timeout version with timeout channelA
 
int64_t use timeout version with timeout subchannelIndex
 
int64_t use timeout version with timeout timeout
 
std::unordered_map< std::string, std::vector< FairMQChannel > > fChannels
 Device channels.
 
std::unique_ptr< FairMQProgOptionsfInternalConfig
 Internal program options configuration.
 
FairMQProgOptionsfConfig
 Pointer to config (internal or external)
 

Protected Member Functions

virtual void Init ()
 Additional user initialization (can be overloaded in child classes). Prefer to use InitTask().
 
virtual void InitTask ()
 Task initialization (can be overloaded in child classes)
 
virtual void Run ()
 Runs the device (to be overloaded in child classes)
 
virtual void PreRun ()
 Called in the RUNNING state once before executing the Run()/ConditionalRun() method.
 
virtual bool ConditionalRun ()
 Called during RUNNING state repeatedly until it returns false or device state changes.
 
virtual void PostRun ()
 Called in the RUNNING state once after executing the Run()/ConditionalRun() method.
 
virtual void Pause ()
 Handles the PAUSE state.
 
virtual void ResetTask ()
 Resets the user task (to be overloaded in child classes)
 
virtual void Reset ()
 Resets the device (can be overloaded in child classes)
 

Protected Attributes

std::shared_ptr< FairMQTransportFactoryfTransportFactory
 Default transport factory.
 
std::unordered_map< fair::mq::Transport, std::shared_ptr< FairMQTransportFactory > > fTransports
 Container for transports.
 
std::string fId
 Device ID.
 

Friends

class FairMQChannel
 

Additional Inherited Members

- Public Types inherited from FairMQStateMachine
enum  Event {
  INIT_DEVICE, internal_DEVICE_READY, INIT_TASK, internal_READY,
  RUN, PAUSE, STOP, RESET_TASK,
  RESET_DEVICE, internal_IDLE, END, ERROR_FOUND
}
 
enum  State {
  OK, Error, IDLE, INITIALIZING_DEVICE,
  DEVICE_READY, INITIALIZING_TASK, READY, RUNNING,
  PAUSED, RESETTING_TASK, RESETTING_DEVICE, EXITING
}
 

Member Function Documentation

◆ AddTransport()

shared_ptr< FairMQTransportFactory > FairMQDevice::AddTransport ( const fair::mq::Transport  transport)

Adds a transport to the device if it doesn't exist

Parameters
transportTransport string ("zeromq"/"nanomsg"/"shmem")

◆ Receive() [1/2]

int FairMQDevice::Receive ( FairMQMessagePtr &  msg,
const std::string &  channel,
const int  index = 0,
int  rcvTimeoutInMs = -1 
)
inline

Shorthand method to receive msg on chan at index i

Parameters
msgmessage reference
chanchannel name
ichannel index
rcvTimeoutInMsreceive timeout in ms, -1 will wait forever (or until interrupt (e.g. via state change)), 0 will not wait (return immediately if cannot receive)
Returns
Number of bytes that have been received. -2 if reading from the queue was not possible or timed out. -1 if there was an error.

◆ Receive() [2/2]

int64_t FairMQDevice::Receive ( FairMQParts parts,
const std::string &  channel,
const int  index = 0,
int  rcvTimeoutInMs = -1 
)
inline

Shorthand method to receive FairMQParts on chan at index i

Parameters
partsparts reference
chanchannel name
ichannel index
rcvTimeoutInMsreceive timeout in ms, -1 will wait forever (or until interrupt (e.g. via state change)), 0 will not wait (return immediately if cannot receive)
Returns
Number of bytes that have been received. -2 if reading from the queue was not possible or timed out. -1 if there was an error.

◆ Send() [1/2]

int FairMQDevice::Send ( FairMQMessagePtr &  msg,
const std::string &  channel,
const int  index = 0,
int  sndTimeoutInMs = -1 
)
inline

Shorthand method to send msg on chan at index i

Parameters
msgmessage reference
chanchannel name
ichannel index
sndTimeoutInMssend timeout in ms, -1 will wait forever (or until interrupt (e.g. via state change)), 0 will not wait (return immediately if cannot send)
Returns
Number of bytes that have been queued. -2 If queueing was not possible or timed out. -1 if there was an error.

◆ Send() [2/2]

int64_t FairMQDevice::Send ( FairMQParts parts,
const std::string &  channel,
const int  index = 0,
int  sndTimeoutInMs = -1 
)
inline

Shorthand method to send FairMQParts on chan at index i

Parameters
partsparts reference
chanchannel name
ichannel index
sndTimeoutInMssend timeout in ms, -1 will wait forever (or until interrupt (e.g. via state change)), 0 will not wait (return immediately if cannot send)
Returns
Number of bytes that have been queued. -2 If queueing was not possible or timed out. -1 if there was an error.

◆ SetTransport()

void FairMQDevice::SetTransport ( const std::string &  transport)
inline

Sets the default transport for the device

Parameters
transportTransport string ("zeromq"/"nanomsg"/"shmem")

◆ SortChannel()

void FairMQDevice::SortChannel ( const std::string &  name,
const bool  reindex = true 
)

Sorts a channel by address, with optional reindexing of the sorted values

Parameters
nameChannel name
reindexShould reindexing be done

◆ SortSocketsByAddress()

bool FairMQDevice::SortSocketsByAddress ( const FairMQChannel lhs,
const FairMQChannel rhs 
)
static

Implements the sort algorithm used in SortChannel()

Parameters
lhsRight hand side value for comparison
rhsLeft hand side value for comparison

◆ WaitFor()

template<class Rep , class Period >
bool FairMQDevice::WaitFor ( std::chrono::duration< Rep, Period > const &  duration)
inline

Wait for the supplied amount of time or for interruption. If interrupted, returns false, otherwise true.

Parameters
durationwait duration

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

privacy