|
Goby3 3.3.0
2025.07.10
|
Base class for implementing transporters (both portal and forwarder) for the intervehicle layer. More...
#include <goby/middleware/transport/intervehicle.h>
Public Types | |
| enum class | SubscriptionAction { SUBSCRIBE , UNSUBSCRIBE } |
Public Types inherited from goby::middleware::InnerTransporterInterface< Transporter, InnerTransporter, Enable > | |
| using | InnerTransporterType = InnerTransporter |
| the InnerTransporter type (accessible for other uses) | |
Public Member Functions | |
| InterVehicleTransporterBase (InnerTransporter &inner) | |
| InterVehicleTransporterBase () | |
| virtual | ~InterVehicleTransporterBase ()=default |
| template<const Group & group> | |
| void | check_validity () |
| Check validity of the Group for interthread use (at compile time) | |
| template<typename Data , int scheme = goby::middleware::scheme<Data>()> | |
| void | publish_dynamic (const Data &data, const Group &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 = goby::middleware::scheme<Data>()> | |
| void | publish_dynamic (std::shared_ptr< const Data > data, const Group &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 = goby::middleware::scheme<Data>()> | |
| void | publish_dynamic (std::shared_ptr< Data > data, const Group &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() | |
| template<typename Data , int scheme = goby::middleware::scheme<Data>()> | |
| void | subscribe_dynamic (std::function< void(const Data &)> f, const Group &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 = goby::middleware::scheme<Data>()> | |
| void | subscribe_dynamic (std::function< void(std::shared_ptr< const Data >)> f, const Group &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 = goby::middleware::scheme<Data>()> | |
| void | unsubscribe_dynamic (const Group &group=Group(), const Subscriber< Data > &subscriber=Subscriber< Data >()) |
| Unsubscribe from a specific run-time defined group and data type. Where possible, prefer the static variant in StaticTransporterInterface::unsubscribe() | |
Public Member Functions inherited from goby::middleware::StaticTransporterInterface< InterVehicleTransporterBase< Derived, InnerTransporter >, 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::timed_mutex > | poll_mutex () |
| access the mutex used for poll synchronization | |
| std::shared_ptr< std::condition_variable_any > | cv () |
| access the condition variable used for poll synchronization | |
Static Public Member Functions | |
| template<typename Data > | |
| static constexpr int | scheme () |
| returns the marshalling scheme id for a given data type on this layer. Only MarshallingScheme::DCCL is currently supported | |
Protected Member Functions | |
| template<typename Data > | |
| std::shared_ptr< goby::middleware::protobuf::SerializerTransporterMessage > | _set_up_publish (const Data &d, const Group &group, const Publisher< Data > &publisher) |
| template<typename Data > | |
| std::shared_ptr< intervehicle::protobuf::Subscription > | _set_up_subscribe (std::function< void(std::shared_ptr< const Data > d)> func, const Group &group, const Subscriber< Data > &subscriber, SubscriptionAction action) |
| template<int tuple_index, typename AckorExpirePair > | |
| void | _handle_ack_or_expire (const AckorExpirePair &ack_or_expire_pair) |
| void | _receive (const intervehicle::protobuf::DCCLForwardedData &packets) |
| template<typename Data > | |
| std::shared_ptr< intervehicle::protobuf::Subscription > | _serialize_subscription (const Group &group, const Subscriber< Data > &subscriber, SubscriptionAction action) |
| void | _insert_pending_ack (int dccl_id, std::shared_ptr< goby::middleware::protobuf::SerializerTransporterMessage > data, std::shared_ptr< SerializationHandlerBase< intervehicle::protobuf::AckData > > ack_handler, std::shared_ptr< SerializationHandlerBase< intervehicle::protobuf::ExpireData > > expire_handler) |
Protected Member Functions inherited from goby::middleware::StaticTransporterInterface< InterVehicleTransporterBase< Derived, InnerTransporter >, InnerTransporter > | |
| StaticTransporterInterface (InnerTransporter &inner) | |
| StaticTransporterInterface () | |
Protected Member Functions inherited from goby::middleware::Poller< InterVehicleTransporterBase< Derived, InnerTransporter > > | |
| 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::timed_mutex > poll_mutex, std::shared_ptr< std::condition_variable_any > cv) | |
Protected Attributes | |
| std::unordered_map< int, std::unordered_map< std::string, std::shared_ptr< const SerializationHandlerBase< intervehicle::protobuf::Header > > > > | subscriptions_ |
Base class for implementing transporters (both portal and forwarder) for the intervehicle layer.
| Derived | derived class (curiously recurring template pattern) |
| InnerTransporter | inner layer transporter type |
Definition at line 70 of file intervehicle.h.
|
strong |
| Enumerator | |
|---|---|
| SUBSCRIBE | |
| UNSUBSCRIBE | |
Definition at line 82 of file intervehicle.h.
|
inline |
Definition at line 88 of file intervehicle.h.
|
inline |
Definition at line 111 of file intervehicle.h.
|
virtualdefault |
|
inlineprotected |
Definition at line 387 of file intervehicle.h.
|
inlineprotected |
Definition at line 468 of file intervehicle.h.
|
inlineprotected |
Definition at line 430 of file intervehicle.h.
|
inlineprotected |
Definition at line 444 of file intervehicle.h.
|
inlineprotected |
Definition at line 261 of file intervehicle.h.
|
inlineprotected |
Definition at line 302 of file intervehicle.h.
|
inline |
Check validity of the Group for interthread use (at compile time)
The layer requires a valid numeric group
Definition at line 127 of file intervehicle.h.
|
inline |
Publish a message using a run-time defined DynamicGroup (const reference variant). Where possible, prefer the static variant in StaticTransporterInterface::publish()
| Data | data type to publish. Can usually be inferred from the data parameter. |
| scheme | Marshalling scheme id (typically MarshallingScheme::MarshallingSchemeEnum). Can usually be inferred from the Data type. |
| data | Message to publish |
| group | group to publish this message to (typically a DynamicGroup). If a Publisher is provided, the group will be set in the data using Publisher::set_group() |
| publisher | Optional metadata that controls the publication or sets callbacks to monitor the result. |
Definition at line 142 of file intervehicle.h.
|
inline |
Publish a message using a run-time defined DynamicGroup (shared pointer to const data variant). Where possible, prefer the static variant in StaticTransporterInterface::publish()
| Data | data type to publish. Can usually be inferred from the data parameter. |
| scheme | Marshalling scheme id (typically MarshallingScheme::MarshallingSchemeEnum). Can usually be inferred from the Data type. |
| data | Message to publish |
| group | group to publish this message to (typically a DynamicGroup). If a Publisher is provided, the group will be set in the data using Publisher::set_group() |
| publisher | Optional metadata that controls the publication or sets callbacks to monitor the result. |
Definition at line 167 of file intervehicle.h.
|
inline |
Publish a message using a run-time defined DynamicGroup (shared pointer to mutable data variant). Where possible, prefer the static variant in StaticTransporterInterface::publish()
| Data | data type to publish. Can usually be inferred from the data parameter. |
| scheme | Marshalling scheme id (typically MarshallingScheme::MarshallingSchemeEnum). Can usually be inferred from the Data type. |
| data | Message to publish |
| group | group to publish this message to (typically a DynamicGroup). If a Publisher is provided, the group will be set in the data using Publisher::set_group() |
| publisher | Optional metadata that controls the publication or sets callbacks to monitor the result. |
Definition at line 199 of file intervehicle.h.
|
inlinestaticconstexpr |
returns the marshalling scheme id for a given data type on this layer. Only MarshallingScheme::DCCL is currently supported
Definition at line 116 of file intervehicle.h.
|
inline |
Subscribe to a specific run-time defined group and data type (const reference variant). Where possible, prefer the static variant in StaticTransporterInterface::subscribe()
| Data | data type to subscribe to. |
| scheme | Marshalling scheme id (typically MarshallingScheme::MarshallingSchemeEnum). Can usually be inferred from the Data type. |
| f | Callback function or lambda that is called upon receipt of the subscribed data |
| group | group to subscribe to (typically a DynamicGroup) |
| subscriber | Optional metadata that controls the subscription or sets callbacks to monitor the subscription result. Typically unnecessary for interprocess and inner layers. |
Definition at line 213 of file intervehicle.h.
|
inline |
Subscribe to a specific run-time defined group and data type (shared pointer variant). Where possible, prefer the static variant in StaticTransporterInterface::subscribe()
| Data | data type to subscribe to. |
| scheme | Marshalling scheme id (typically MarshallingScheme::MarshallingSchemeEnum). Can usually be inferred from the Data type. |
| f | Callback function or lambda that is called upon receipt of the subscribed data |
| group | group to subscribe to (typically a DynamicGroup) |
| subscriber | Optional metadata that controls the subscription or sets callbacks to monitor the subscription result. Typically unnecessary for interprocess and inner layers. |
Definition at line 231 of file intervehicle.h.
|
inline |
Unsubscribe from a specific run-time defined group and data type. Where possible, prefer the static variant in StaticTransporterInterface::unsubscribe()
| Data | data type to unsubscribe from. |
| scheme | Marshalling scheme id (typically MarshallingScheme::MarshallingSchemeEnum). Can usually be inferred from the Data type. |
| group | group to subscribe to (typically a DynamicGroup) |
| subscriber | Optional metadata that controls the subscription or sets callbacks to monitor the subscription result. Typically unnecessary for interprocess and inner layers. |
Definition at line 248 of file intervehicle.h.
|
protected |
Definition at line 487 of file intervehicle.h.