|
Health-GPS 3.0.0.0
Global Health Policy Simulation model (Health-GPS)
|
Thread-safe communication channel data type. More...
#include <channel.h>
Public Types | |
| using | value_type = T |
| using | size_type = std::size_t |
Public Member Functions | |
| Channel (size_type capacity=0) | |
| Initialises a new instance of the Channel class. | |
| Channel (const Channel &)=delete | |
| Channel & | operator= (const Channel &)=delete |
| Channel (Channel &&)=delete | |
| Channel & | operator= (Channel &&)=delete |
| virtual | ~Channel ()=default |
| Destroys a Channel instance. | |
| bool | send (const value_type &message) |
| Sends a new message through the channel by reference. | |
| bool | send (value_type &&message) |
| Sends a new message through the channel. | |
| std::optional< value_type > | try_receive (int timeout_millis=0) |
| Try to receive a message from the channel. | |
| size_type constexpr | size () const noexcept |
| Gets the current channel size, number of messages. | |
| bool constexpr | empty () const noexcept |
| Determine whether the channel is empty. | |
| void | close () noexcept |
| Close the channel, no new messages are accepted. | |
| bool | closed () const noexcept |
| Determine whether the channel is closed. | |
Thread-safe communication channel data type.
This channel has been designed specific to enable in-memory communication from the baseline to the intervention scenarios simulations. This is a hard modelling requirement, non-memory communication such as data streaming might offer more scalable alternative, including the option of running a single baseline and multiple interventions in parallel.
| T | The channel data type |
| using hgps::Channel< T >::size_type = std::size_t |
| using hgps::Channel< T >::value_type = T |
|
inlineexplicit |
Initialises a new instance of the Channel class.
| capacity | The channel capacity, if fixed; otherwise, unlimited |
|
delete |
|
delete |
|
virtualdefault |
Destroys a Channel instance.
|
inlinenoexcept |
Close the channel, no new messages are accepted.
|
inlinenoexcept |
Determine whether the channel is closed.
|
inlineconstexprnoexcept |
Determine whether the channel is empty.
|
delete |
|
delete |
|
inline |
Sends a new message through the channel by reference.
| message | The message instance to send |
|
inline |
Sends a new message through the channel.
| message | The message instance to send |
|
inlineconstexprnoexcept |
Gets the current channel size, number of messages.
|
inline |
Try to receive a message from the channel.
| timeout_millis | Max wait timeout, or zero for infinity |