|
| | InterVehiclePortal (const intervehicle::protobuf::PortalConfig &cfg) |
| | Instantiate a portal with the given configuration (with the portal owning the inner transporter)
|
| |
| | InterVehiclePortal (InnerTransporter &inner, const intervehicle::protobuf::PortalConfig &cfg) |
| | Instantiate a portal with the given configuration and a reference to an external inner transporter.
|
| |
| | ~InterVehiclePortal () |
| |
| | InterVehicleTransporterBase (InnerTransporter &inner) |
| |
| | InterVehicleTransporterBase () |
| |
| virtual | ~InterVehicleTransporterBase ()=default |
| |
| void | check_validity () |
| | Check validity of the Group for interthread use (at compile time)
|
| |
| 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()
|
| |
| 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()
|
| |
| 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()
|
| |
| 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()
|
| |
| 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()
|
| |
| 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()
|
| |
| 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.
|
| |
| 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
|
| |
| 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 constexpr int | scheme () |
| | returns the marshalling scheme id for a given data type on this layer. Only MarshallingScheme::DCCL is currently supported
|
| |
| 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)
|
| |
| 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::InterVehiclePortal< InnerTransporter >
Implements a portal for the intervehicle layer based on Goby Acomms.
- Template Parameters
-
| InnerTransporter | The type of the inner transporter used to forward data to and from this node. This portal uses goby::middleware::InterThreadTransport internally, so the innermost transporter must be goby::middleware::InterThreadTransport. This allows for use of any InterProcessPortal, as long as that InterProcessPortal has an inner transporter of goby::middleware::InterThreadTransport. |
Definition at line 642 of file intervehicle.h.