24#ifndef GOBY_MIDDLEWARE_IO_DETAIL_IO_TRANSPORTERS_H
25#define GOBY_MIDDLEWARE_IO_DETAIL_IO_TRANSPORTERS_H
34class InterThreadTransporter;
35template <
typename InnerTransporter>
class InterProcessForwarder;
57template <
class Derived, Direction direction>
65template <
class Derived, Direction direction>
74 bool use_indexed_group>
79template <
class Derived, const goby::m
iddleware::Group& line_in_group, PubSubLayer layer>
90 this->io_transporter().template publish<line_in_group, Data, scheme>(data);
94template <
class Derived, const goby::m
iddleware::Group& line_in_group, PubSubLayer layer>
100 : in_group_(
std::string(line_in_group), index == -1 ?
Group::invalid_numeric_group : index)
112 this->io_transporter().template publish_dynamic<Data, scheme>(data, in_group_);
120 bool use_indexed_group>
125template <
class Derived, const goby::m
iddleware::Group& line_out_group, PubSubLayer layer>
131 template <
typename Data,
134 layer>::Transporter>(),
138 this->io_transporter().template subscribe<line_out_group, Data, scheme, necessity>(f);
143 layer>::Transporter>()>
146 this->io_transporter().template unsubscribe<line_out_group, Data, scheme>();
150template <
class Derived, const goby::m
iddleware::Group& line_out_group, PubSubLayer layer>
155 : out_group_(
std::string(line_out_group),
156 index == -1 ?
Group::invalid_numeric_group : index)
163 template <
typename Data,
166 layer>::Transporter>(),
170 this->io_transporter().template subscribe_dynamic<Data, scheme>(f, out_group_);
175 layer>::Transporter>()>
178 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,...
The global namespace for the Goby project.
IOPublishTransporter(int index)
void publish_in(std::shared_ptr< Data > data)
IOPublishTransporter(int index)
void publish_in(std::shared_ptr< Data > data)
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)
IOSubscribeTransporter(int index)
Transporter & io_transporter()
Transporter & io_transporter()