24#ifndef GOBY_MIDDLEWARE_IO_DETAIL_IO_TRANSPORTERS_H
25#define GOBY_MIDDLEWARE_IO_DETAIL_IO_TRANSPORTERS_H
35class InterThreadTransporter;
54template <
class Derived, Direction direction,
typename ImplementationTag, PubSubLayer layer>
59template <
class Derived, Direction direction,
typename ImplementationTag>
66template <
class Derived, Direction direction,
typename ImplementationTag>
74 typename ImplementationTag,
bool use_indexed_group>
80 typename ImplementationTag>
85 template <
typename Data,
88 ImplementationTag, layer>::Transporter>()>
91 this->io_transporter().template publish<line_in_group, Data, scheme>(data);
96 typename ImplementationTag>
102 : in_group_(
std::string(line_in_group), index == -1 ?
Group::invalid_numeric_group : index)
108 template <
typename Data,
111 ImplementationTag, layer>::Transporter>()>
114 this->io_transporter().template publish_dynamic<Data, scheme>(data, in_group_);
122 typename ImplementationTag,
bool use_indexed_group>
128 typename ImplementationTag>
134 template <
typename Data,
137 ImplementationTag, layer>::Transporter>(),
141 this->io_transporter().template subscribe<line_out_group, Data, scheme, necessity>(f);
144 template <
typename Data,
147 ImplementationTag, layer>::Transporter>()>
150 this->io_transporter().template unsubscribe<line_out_group, Data, scheme>();
155 typename ImplementationTag>
160 : out_group_(
std::string(line_out_group),
161 index == -1 ?
Group::invalid_numeric_group : index)
168 template <
typename Data,
171 ImplementationTag, layer>::Transporter>(),
175 this->io_transporter().template subscribe_dynamic<Data, scheme>(f, out_group_);
178 template <
typename Data,
181 ImplementationTag, layer>::Transporter>()>
184 this->io_transporter().template unsubscribe_dynamic<Data, scheme>(out_group_);
simple exception class for goby applications
Implementation of Group for dynamic (run-time) instantiations. Use Group directly for static (compile...
Class for grouping publications in the Goby middleware. Analogous to "topics" in ROS,...
static constexpr std::uint32_t maximum_valid_group
A transporter for the interthread layer.
detail namespace with internal helper functions
constexpr int transporter_scheme()
Helper function for calling a particular transporter's scheme method.
constexpr int scheme()
Placeholder to provide an interface for the scheme() function family.
Necessity
Used to tag subscriptions based on their necessity (e.g. required for correct functioning,...
middleware::InterProcessForwarder< InnerTransporter, detail::InterProcessTag > InterProcessForwarder
The global namespace for the Goby project.
void publish_in(std::shared_ptr< Data > data)
IOPublishTransporter(int index)
void publish_in(std::shared_ptr< Data > data)
IOPublishTransporter(int index)
IOSubscribeTransporter(int index)
void subscribe_out(std::function< void(std::shared_ptr< const Data >)> f)
IOSubscribeTransporter(int index)
void subscribe_out(std::function< void(std::shared_ptr< const Data >)> f)
Transporter & io_transporter()
Transporter & io_transporter()