|
| InterVehicleForwarder (InnerTransporter &inner) |
| Construct a forwarder for the intervehicle layer. More...
|
|
virtual | ~InterVehicleForwarder ()=default |
|
| 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...
|
|
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...
|
|
InnerTransporter & | 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...
|
|
|
static constexpr int | scheme () |
| returns the marshalling scheme id for a given data type on this layer. Only MarshallingScheme::DCCL is currently supported More...
|
|
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) |
|
| StaticTransporterInterface (InnerTransporter &inner) |
|
| StaticTransporterInterface () |
|
| Poller (PollerInterface *inner_poller=nullptr) |
| Construct this Poller with a pointer to the inner Poller (unless this is the innermost Poller) More...
|
|
PollerInterface * | inner_poller () |
|
| PollerInterface (std::shared_ptr< std::timed_mutex > poll_mutex, std::shared_ptr< std::condition_variable_any > cv) |
|
std::unordered_map< int, std::unordered_map< std::string, std::shared_ptr< const SerializationHandlerBase< intervehicle::protobuf::Header > > > > | subscriptions_ |
|
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
-
InnerTransporter | The type of the inner transporter used to forward data to and from this node |
Definition at line 576 of file intervehicle.h.