|
| InterVehiclePortal (const intervehicle::protobuf::PortalConfig &cfg) |
| Instantiate a portal with the given configuration (with the portal owning the inner transporter) More...
|
|
| InterVehiclePortal (InnerTransporter &inner, const intervehicle::protobuf::PortalConfig &cfg) |
| Instantiate a portal with the given configuration and a reference to an external inner transporter. More...
|
|
| ~InterVehiclePortal () |
|
| 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::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.