Goby3  3.1.4
2024.02.22
goby::middleware::InterVehicleForwarder< InnerTransporter > Class Template Reference

Implements the forwarder concept for the intervehicle layer. More...

#include <goby/middleware/transport/intervehicle.h>

Inheritance diagram for goby::middleware::InterVehicleForwarder< InnerTransporter >:
goby::middleware::InterVehicleTransporterBase< InterVehicleForwarder< InnerTransporter >, InnerTransporter > goby::middleware::StaticTransporterInterface< InterVehicleTransporterBase< InterVehicleForwarder< InnerTransporter >, InnerTransporter >, InnerTransporter > goby::middleware::Poller< InterVehicleTransporterBase< InterVehicleForwarder< InnerTransporter >, InnerTransporter > > goby::middleware::InnerTransporterInterface< InterVehicleTransporterBase< InterVehicleForwarder< InnerTransporter >, InnerTransporter >, InnerTransporter > goby::middleware::PollerInterface

Public Types

using Base = InterVehicleTransporterBase< InterVehicleForwarder< InnerTransporter >, InnerTransporter >
 
- Public Types inherited from goby::middleware::InterVehicleTransporterBase< InterVehicleForwarder< InnerTransporter >, InnerTransporter >
enum  SubscriptionAction
 
- Public Types inherited from goby::middleware::InnerTransporterInterface< InterVehicleTransporterBase< InterVehicleForwarder< InnerTransporter >, InnerTransporter >, InnerTransporter >
using InnerTransporterType = InnerTransporter
 the InnerTransporter type (accessible for other uses) More...
 

Public Member Functions

 InterVehicleForwarder (InnerTransporter &inner)
 Construct a forwarder for the intervehicle layer. More...
 
virtual ~InterVehicleForwarder ()=default
 
- Public Member Functions inherited from goby::middleware::InterVehicleTransporterBase< InterVehicleForwarder< InnerTransporter >, InnerTransporter >
 InterVehicleTransporterBase (InnerTransporter &inner)
 
 InterVehicleTransporterBase ()
 
virtual ~InterVehicleTransporterBase ()=default
 
void check_validity ()
 Check validity of the Group for interthread use (at compile time) More...
 
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() More...
 
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() More...
 
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() More...
 
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() More...
 
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() More...
 
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() More...
 
- Public Member Functions inherited from goby::middleware::StaticTransporterInterface< InterVehicleTransporterBase< InterVehicleForwarder< InnerTransporter >, InnerTransporter >, InnerTransporter >
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...
 
- Public Member Functions inherited from goby::middleware::InnerTransporterInterface< InterVehicleTransporterBase< InterVehicleForwarder< InnerTransporter >, InnerTransporter >, InnerTransporter >
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 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...
 

Public Attributes

friend Base
 

Additional Inherited Members

- Static Public Member Functions inherited from goby::middleware::InterVehicleTransporterBase< InterVehicleForwarder< InnerTransporter >, InnerTransporter >
static constexpr int scheme ()
 returns the marshalling scheme id for a given data type on this layer. Only MarshallingScheme::DCCL is currently supported More...
 
- Protected Member Functions inherited from goby::middleware::InterVehicleTransporterBase< InterVehicleForwarder< InnerTransporter >, InnerTransporter >
std::shared_ptr< goby::middleware::protobuf::SerializerTransporterMessage_set_up_publish (const Data &d, const Group &group, const Publisher< Data > &publisher)
 
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)
 
void _handle_ack_or_expire (const AckorExpirePair &ack_or_expire_pair)
 
void _receive (const intervehicle::protobuf::DCCLForwardedData &packets)
 
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< InterVehicleForwarder< InnerTransporter >, InnerTransporter >, InnerTransporter >
 StaticTransporterInterface (InnerTransporter &inner)
 
 StaticTransporterInterface ()
 
- Protected Member Functions inherited from goby::middleware::Poller< InterVehicleTransporterBase< InterVehicleForwarder< InnerTransporter >, InnerTransporter > >
 Poller (PollerInterface *inner_poller=nullptr)
 Construct this Poller with a pointer to the inner Poller (unless this is the innermost Poller) More...
 
PollerInterfaceinner_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 inherited from goby::middleware::InterVehicleTransporterBase< InterVehicleForwarder< InnerTransporter >, InnerTransporter >
std::unordered_map< int, std::unordered_map< std::string, std::shared_ptr< const SerializationHandlerBase< intervehicle::protobuf::Header > > > > subscriptions_
 

Detailed Description

template<typename InnerTransporter>
class goby::middleware::InterVehicleForwarder< InnerTransporter >

Implements the forwarder concept for the intervehicle layer.

This forwarder is used by applications that do not directly communicate with other vehicles, but are connected on the interprocess layer. For example, gobyd instantiates a portal and other processes running on the vehicle can transmit and receive data through that portal via the use of this forwarder.

Template Parameters
InnerTransporterThe type of the inner transporter used to forward data to and from this node

Definition at line 576 of file intervehicle.h.

Member Typedef Documentation

◆ Base

template<typename InnerTransporter >
using goby::middleware::InterVehicleForwarder< InnerTransporter >::Base = InterVehicleTransporterBase<InterVehicleForwarder<InnerTransporter>, InnerTransporter>

Definition at line 581 of file intervehicle.h.

Constructor & Destructor Documentation

◆ InterVehicleForwarder()

template<typename InnerTransporter >
goby::middleware::InterVehicleForwarder< InnerTransporter >::InterVehicleForwarder ( InnerTransporter &  inner)
inline

Construct a forwarder for the intervehicle layer.

Parameters
innerA reference to the inner transporter used to forward messages to and from the portal

Definition at line 586 of file intervehicle.h.

◆ ~InterVehicleForwarder()

template<typename InnerTransporter >
virtual goby::middleware::InterVehicleForwarder< InnerTransporter >::~InterVehicleForwarder ( )
virtualdefault

Member Data Documentation

◆ Base

template<typename InnerTransporter >
friend goby::middleware::InterVehicleForwarder< InnerTransporter >::Base

Definition at line 607 of file intervehicle.h.


The documentation for this class was generated from the following file: