|
Goby3 3.4.0
2026.04.13
|
Implements the forwarder concept for the interprocess layer. More...
#include <goby/middleware/transport/interprocess.h>
Public Types | |
| using | Base = InterProcessTransporterBase< InterProcessForwarder< InnerTransporter, ImplementationTag >, InnerTransporter, ImplementationTag > |
Public Types inherited from goby::middleware::InterProcessTransporterBase< InterProcessForwarder< InnerTransporter, ImplementationTag >, InnerTransporter, ImplementationTag > | |
| using | implementation_tag = ImplementationTag |
| The ImplementationTag for this transporter (allows InterVehiclePortal to match the driver thread's forwarder tag to the InnerTransporter's tag) | |
Public Types inherited from goby::middleware::InnerTransporterInterface< Transporter, InnerTransporter, Enable > | |
| using | InnerTransporterType = InnerTransporter |
| the InnerTransporter type (accessible for other uses) | |
Public Member Functions | |
| InterProcessForwarder (InnerTransporter &inner) | |
| Construct a forwarder for the interprocess layer. | |
| virtual | ~InterProcessForwarder () |
Public Member Functions inherited from goby::middleware::InterProcessTransporterBase< InterProcessForwarder< InnerTransporter, ImplementationTag >, InnerTransporter, ImplementationTag > | |
| InterProcessTransporterBase (InnerTransporter &inner) | |
| InterProcessTransporterBase () | |
| virtual | ~InterProcessTransporterBase () |
| 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() | |
| 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() | |
| 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() | |
| void | publish_serialized (std::string type_name, int scheme, const std::vector< char > &bytes, const goby::middleware::Group &group) |
| Publish a message that has already been serialized for the given scheme. | |
| void | subscribe_dynamic (std::function< void(const Data &)> f, const Group &group, const Subscriber< Data > &subscriber=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() | |
| void | subscribe_dynamic (std::function< void(std::shared_ptr< const Data >)> f, const Group &group, const Subscriber< Data > &subscriber=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() | |
| void | unsubscribe_dynamic (const Group &group, const Subscriber< Data > &subscriber=Subscriber< Data >()) |
| Unsubscribe to a specific run-time defined group and data type. Where possible, prefer the static variant in StaticTransporterInterface::unsubscribe() | |
| void | unsubscribe_all () |
| Unsubscribe from all current subscriptions. | |
| std::shared_ptr< SerializationSubscriptionRegex > | subscribe_regex (std::function< void(const std::vector< unsigned char > &, int scheme, const std::string &type, const Group &group)> f, const std::set< int > &schemes, const std::string &type_regex=".*", const std::string &group_regex=".*") |
| Subscribe to multiple groups and/or types at once using regular expressions. | |
| std::shared_ptr< SerializationSubscriptionRegex > | subscribe_type_regex (std::function< void(std::shared_ptr< const Data >, const std::string &type)> f, const Group &group, const std::string &type_regex=".*") |
| Subscribe to a number of types within a given group and scheme using a regular expression. | |
| void | subscribe_type_regex (std::function< void(std::shared_ptr< const Data >, const std::string &type)> f, const std::string &type_regex=".*") |
| Subscribe to a number of types within a given group and scheme using a regular expression. | |
| void | check_validity () |
| Check validity of the Group for interthread use (at compile time) | |
| void | check_validity_runtime (const Group &group) |
| Check validity of the Group for interthread use (for DynamicGroup at run time) | |
Public Member Functions inherited from goby::middleware::StaticTransporterInterface< Transporter, InnerTransporter > | |
| template<const Group & group, typename Data , int scheme = transporter_scheme<Data, Transporter>()> | |
| void | publish (const Data &data, const Publisher< Data > &publisher=Publisher< Data >()) |
| Publish a message (const reference variant) | |
| template<const Group & group, typename Data , int scheme = transporter_scheme<Data, Transporter>()> | |
| void | publish (std::shared_ptr< const Data > data, const Publisher< Data > &publisher=Publisher< Data >()) |
| Publish a message (shared pointer to const data variant) | |
| template<const Group & group, typename Data , int scheme = transporter_scheme<Data, Transporter>()> | |
| void | publish (std::shared_ptr< Data > data, const Publisher< Data > &publisher=Publisher< Data >()) |
| Publish a message (shared pointer to mutable data variant) | |
| template<const Group & group, typename Data , int scheme = transporter_scheme<Data, Transporter>(), Necessity necessity = Necessity::OPTIONAL> | |
| 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) | |
| template<const Group & group, typename Data , int scheme = transporter_scheme<Data, Transporter>(), Necessity necessity = Necessity::OPTIONAL> | |
| 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) | |
| template<const Group & group, Necessity necessity = Necessity::OPTIONAL, typename Func > | |
| 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. | |
| template<const Group & group, typename Data , int scheme = transporter_scheme<Data, Transporter>()> | |
| void | unsubscribe (const Subscriber< Data > &subscriber=Subscriber< Data >()) |
| Unsubscribe to a specific group and data type. | |
| void | unsubscribe_all () |
| Unsubscribe to all messages that this transporter has subscribed to. | |
Public Member Functions inherited from goby::middleware::InnerTransporterInterface< Transporter, InnerTransporter, Enable > | |
| InnerTransporter & | inner () |
| auto | innermost () |
Public Member Functions inherited from goby::middleware::PollerInterface | |
| 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 | |
| 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) | |
| std::shared_ptr< std::mutex > | poll_mutex () |
| access the mutex used for poll synchronization | |
| std::shared_ptr< std::condition_variable > | cv () |
| access the condition variable used for poll synchronization | |
| void | attach (PollerInterface *poller) |
| Attach another PollerInterface to this one so that its _transporter_poll() is also called during _poll_all() | |
Public Attributes | |
| friend | Base |
Implements the forwarder concept for the interprocess layer.
Implements the forwarder concept for the interprocess layer (implementation)
The forwarder is intended to be used by inner nodes within the layer that do not connect directly to other nodes on that layer. For example, the main thread might instantiate a portal and then spawn several threads that instantiate forwarders. These auxiliary threads can then communicate on the interprocess layer as if they had a direct connection to other interprocess nodes.
| InnerTransporter | The type of the inner transporter used to forward data to and from this node |
| ImplementationTag | Distinguishes different implementations using different internal groups (e.g. detail::InterProcessTag or detail::InterProcessTag) |
| InnerTransporter | The type of the inner transporter used to forward data to and from this node |
| ImplementationTag | Must be provided explicitly; use zeromq::InterProcessForwarder or udpm::InterProcessForwarder for the common cases |
Definition at line 311 of file interprocess.h.
| using goby::middleware::InterProcessForwarder< InnerTransporter, ImplementationTag >::Base = InterProcessTransporterBase<InterProcessForwarder<InnerTransporter, ImplementationTag>, InnerTransporter, ImplementationTag> |
Definition at line 316 of file interprocess.h.
|
inline |
Construct a forwarder for the interprocess layer.
| inner | A reference to the inner transporter used to forward messages to and from the portal |
Definition at line 323 of file interprocess.h.
|
inlinevirtual |
Definition at line 333 of file interprocess.h.
| friend goby::middleware::InterProcessForwarder< InnerTransporter, ImplementationTag >::Base |
Definition at line 347 of file interprocess.h.