|
| InterThreadTransporter () |
|
virtual | ~InterThreadTransporter () |
|
template<const Group & group> |
void | check_validity () |
| Check validity of the Group for interthread use (at compile time) More...
|
|
void | check_validity_runtime (const Group &group) |
| Check validity of the Group for interthread use (for DynamicGroup at run time) More...
|
|
template<typename Data , int scheme = scheme<Data>()> |
void | publish_dynamic (const Data &data, const Group &group, const Publisher< Data > &publisher=Publisher< Data >()) |
| Publish a message using a run-time defined DynamicGroup (const reference variant). Where possible, prefer the static variant in StaticTransporterInterface::publish() More...
|
|
template<typename Data , int scheme = scheme<Data>()> |
void | publish_dynamic (std::shared_ptr< const Data > data, const Group &group, const Publisher< Data > &publisher=Publisher< Data >()) |
| Publish a message using a run-time defined DynamicGroup (shared pointer to const data variant). Where possible, prefer the static variant in StaticTransporterInterface::publish() More...
|
|
template<typename Data , int scheme = scheme<Data>()> |
void | publish_dynamic (std::shared_ptr< Data > data, const Group &group, const Publisher< Data > &publisher=Publisher< Data >()) |
| Publish a message using a run-time defined DynamicGroup (shared pointer to mutable data variant). Where possible, prefer the static variant in StaticTransporterInterface::publish() More...
|
|
template<const Group & group> |
void | publish_empty () |
| Publish with no data (used to signal another thread) More...
|
|
template<typename Data , int scheme = scheme<Data>()> |
void | subscribe_dynamic (std::function< void(const Data &)> f, const Group &group, const Subscriber< Data > &=Subscriber< Data >()) |
| Subscribe to a specific run-time defined group and data type (const reference variant). Where possible, prefer the static variant in StaticTransporterInterface::subscribe() More...
|
|
template<typename Data , int scheme = scheme<Data>()> |
void | subscribe_dynamic (std::function< void(std::shared_ptr< const Data >)> f, const Group &group, const Subscriber< Data > &=Subscriber< Data >()) |
| Subscribe to a specific run-time defined group and data type (shared pointer variant). Where possible, prefer the static variant in StaticTransporterInterface::subscribe() More...
|
|
template<const Group & group> |
void | subscribe_empty (const std::function< void()> &f) |
| Subscribe with no data (used to receive a signal from another thread) More...
|
|
template<typename Data , int scheme = scheme<Data>()> |
void | unsubscribe_dynamic (const Group &group, const Subscriber< Data > &=Subscriber< Data >()) |
| Unsubscribe to a specific run-time defined group and data type. Where possible, prefer the static variant in StaticTransporterInterface::unsubscribe() More...
|
|
void | unsubscribe_all () |
| Unsubscribe from all current subscriptions. More...
|
|
void | publish (const Data &data, const Publisher< Data > &publisher=Publisher< Data >()) |
| Publish a message (const reference variant) More...
|
|
void | publish (std::shared_ptr< const Data > data, const Publisher< Data > &publisher=Publisher< Data >()) |
| Publish a message (shared pointer to const data variant) More...
|
|
void | publish (std::shared_ptr< Data > data, const Publisher< Data > &publisher=Publisher< Data >()) |
| Publish a message (shared pointer to mutable data variant) More...
|
|
void | subscribe (std::function< void(const Data &)> f, const Subscriber< Data > &subscriber=Subscriber< Data >()) |
| Subscribe to a specific group and data type (const reference variant) More...
|
|
void | subscribe (std::function< void(std::shared_ptr< const Data >)> f, const Subscriber< Data > &subscriber=Subscriber< Data >()) |
| Subscribe to a specific group and data type (shared pointer variant) More...
|
|
void | subscribe (Func f) |
| Simplified version of subscribe() that can deduce Data from the first argument of the function (lambda, function pointer, etc.) passed to it. More...
|
|
void | unsubscribe (const Subscriber< Data > &subscriber=Subscriber< Data >()) |
| Unsubscribe to a specific group and data type. More...
|
|
void | unsubscribe_all () |
| Unsubscribe to all messages that this transporter has subscribed to. More...
|
|
NullTransporter & | inner () |
|
auto | innermost () |
|
template<class Clock = std::chrono::system_clock, class Duration = typename Clock::duration> |
int | poll (const std::chrono::time_point< Clock, Duration > &timeout=std::chrono::time_point< Clock, Duration >::max()) |
| poll for data. Blocks until a data event occurs or a timeout when a particular time has been reached More...
|
|
template<class Clock = std::chrono::system_clock, class Duration = typename Clock::duration> |
int | poll (Duration wait_for) |
| poll for data. Blocks until a data event occurs or a certain duration of time elapses (timeout) More...
|
|
std::shared_ptr< std::timed_mutex > | poll_mutex () |
| access the mutex used for poll synchronization More...
|
|
std::shared_ptr< std::condition_variable_any > | cv () |
| access the condition variable used for poll synchronization More...
|
|
A transporter for the interthread layer.
As no layer exists inside the interthread layer, no distinction is made between interthread "portals" and "forwarders". This class serves both purposes, providing a no-copy publish/subscribe interface for interthread communications using std::shared_ptr (for maximum efficiency, use the shared pointer overloads for publish). As no copy is made, the publisher must not modify the underlying data after calling publish, as this would lead to potentially unsafe data races when subscribed nodes read the data.
auto data = std::make_shared<protobuf::NavigationReport>();
data->set_x(100);
interthread.publish<groups::nav>(data);
Definition at line 56 of file interthread.h.