|
Goby3 3.4.0
2026.04.13
|
Implements the forwarder concept for the intermodule layer. More...
#include <goby/middleware/transport/intermodule.h>
Public Types | |
| using | Base = InterModuleTransporterBase< InterModuleForwarder< InnerTransporter, ImplementationTag >, InnerTransporter, ImplementationTag > |
Public Types inherited from goby::middleware::InterProcessTransporterBase< Derived, 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 | |
| InterModuleForwarder (InnerTransporter &inner) | |
| Construct a forwarder for the intermodule layer. | |
| virtual | ~InterModuleForwarder () |
Public Member Functions inherited from goby::middleware::InterProcessTransporterBase< Derived, InnerTransporter, ImplementationTag > | |
| InterProcessTransporterBase (InnerTransporter &inner) | |
| InterProcessTransporterBase () | |
| virtual | ~InterProcessTransporterBase () |
| template<typename Data , int scheme = InterProcessTransporterBase::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() | |
| template<typename Data , int scheme = InterProcessTransporterBase::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() | |
| template<typename Data , int scheme = InterProcessTransporterBase::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() | |
| 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. | |
| template<typename Data , int scheme = InterProcessTransporterBase::scheme<Data>()> | |
| 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() | |
| template<typename Data , int scheme = InterProcessTransporterBase::scheme<Data>()> | |
| 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() | |
| template<typename Data , int scheme = InterProcessTransporterBase::scheme<Data>()> | |
| 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. | |
| template<typename Data , int scheme = InterProcessTransporterBase::scheme<Data>()> | |
| 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. | |
| template<const Group & group, typename Data , int scheme = InterProcessTransporterBase::scheme<Data>()> | |
| 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. | |
| template<const Group & group> | |
| 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< InterProcessTransporterBase< Derived, InnerTransporter, ImplementationTag >, InnerTransporter > | |
| void | publish (const Data &data, const Publisher< Data > &publisher=Publisher< Data >()) |
| Publish a message (const reference variant) | |
| void | publish (std::shared_ptr< const Data > data, const Publisher< Data > &publisher=Publisher< Data >()) |
| Publish a message (shared pointer to const data variant) | |
| void | publish (std::shared_ptr< Data > data, const Publisher< Data > &publisher=Publisher< Data >()) |
| Publish a message (shared pointer to mutable data variant) | |
| 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) | |
| 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) | |
| 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. | |
| 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 |
Additional Inherited Members | |
Static Public Member Functions inherited from goby::middleware::InterProcessTransporterBase< Derived, InnerTransporter, ImplementationTag > | |
| template<typename Data > | |
| static constexpr int | scheme () |
| returns the marshalling scheme id for a given data type on this layer | |
Protected Member Functions inherited from goby::middleware::StaticTransporterInterface< InterProcessTransporterBase< Derived, InnerTransporter, ImplementationTag >, InnerTransporter > | |
| StaticTransporterInterface (InnerTransporter &inner) | |
| StaticTransporterInterface () | |
Protected Member Functions inherited from goby::middleware::Poller< InterProcessTransporterBase< Derived, InnerTransporter, ImplementationTag > > | |
| Poller (PollerInterface *inner_poller=nullptr) | |
| Construct this Poller with a pointer to the inner Poller (unless this is the innermost Poller) | |
| PollerInterface * | inner_poller () |
Protected Member Functions inherited from goby::middleware::PollerInterface | |
| PollerInterface (std::shared_ptr< std::mutex > poll_mutex, std::shared_ptr< std::condition_variable > cv) | |
Static Protected Attributes inherited from goby::middleware::InterProcessTransporterBase< Derived, InnerTransporter, ImplementationTag > | |
| static constexpr auto | to_portal_group_name_ |
| static constexpr auto | regex_group_name_ |
| static constexpr auto | from_portal_group_name_ |
| static constexpr Group | to_portal_group_ {to_portal_group_name_.data()} |
| static constexpr Group | regex_group_ {regex_group_name_.data()} |
| static constexpr Group | from_portal_group_ {from_portal_group_name_.data()} |
Implements the forwarder concept for the intermodule layer.
Implements the forwarder concept for the intermodule 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.
| 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::InterModuleTag or detail::InterModuleTag) |
| InnerTransporter | The type of the inner transporter used to forward data to and from this node |
| ImplementationTag | Must be provided explicitly; use zeromq::InterModuleForwarder or udpm::InterModuleForwarder for the common cases |
Definition at line 74 of file intermodule.h.
| using goby::middleware::InterModuleForwarder< InnerTransporter, ImplementationTag >::Base = InterModuleTransporterBase<InterModuleForwarder<InnerTransporter, ImplementationTag>, InnerTransporter, ImplementationTag> |
Definition at line 79 of file intermodule.h.
|
inline |
Construct a forwarder for the intermodule layer.
| inner | A reference to the inner transporter used to forward messages to and from the portal |
Definition at line 86 of file intermodule.h.
|
inlinevirtual |
Definition at line 87 of file intermodule.h.
| friend goby::middleware::InterModuleForwarder< InnerTransporter, ImplementationTag >::Base |
Definition at line 89 of file intermodule.h.