24#ifndef GOBY_MIDDLEWARE_APPLICATION_SIMPLE_THREAD_H
25#define GOBY_MIDDLEWARE_APPLICATION_SIMPLE_THREAD_H
44template <
typename Config,
typename ImplementationTag =
void>
46 :
public Thread<Config, InterVehicleForwarder<
47 InterProcessForwarder<InterThreadTransporter, ImplementationTag>>>,
50 using SimpleThreadBase =
Thread<
72 SimpleThread(
const Config&
cfg, boost::units::quantity<boost::units::si::frequency> loop_freq,
74 : SimpleThreadBase(
cfg, loop_freq,
index)
89 InterVehicleForwarder<InterProcessForwarder<InterThreadTransporter, ImplementationTag>>&
105 std::unique_ptr<InterThreadTransporter> interthread_;
106 std::unique_ptr<InterProcessForwarder<InterThreadTransporter, ImplementationTag>> interprocess_;
123template <
typename Config>
125 :
public SimpleThread<Config, zeromq::detail::InterProcessTag>
130 [[deprecated(
"Use goby::zeromq::SimpleThread or goby::udpm::SimpleThread instead of "
131 "goby::middleware::SimpleThread")]]
137 [[deprecated(
"Use goby::zeromq::SimpleThread or goby::udpm::SimpleThread instead of "
138 "goby::middleware::SimpleThread")]]
139 SimpleThread(
const Config&
cfg, boost::units::quantity<boost::units::si::frequency> loop_freq,
InnerTransporter & inner()
Implements the forwarder concept for the interprocess layer.
A transporter for the interthread layer.
Implements the forwarder concept for the intervehicle layer.
SimpleThread(const Config &cfg, double loop_freq_hertz=0, int index=-1)
SimpleThread(const Config &cfg, boost::units::quantity< boost::units::si::frequency > loop_freq, int index=-1)
SimpleThread< Config, zeromq::detail::InterProcessTag > Base
InterVehicleForwarder< InterProcessForwarder< InterThreadTransporter, ImplementationTag > > & intervehicle()
Access the transporter on the intervehicle layer (which wraps interprocess and interthread).
SimpleThread(const Config &cfg, double loop_freq_hertz=0, int index=-1)
Construct a thread with a given configuration, optionally a loop frequency and/or index.
InterThreadTransporter & interthread()
Access the transporter on the interthread layer (this is the innermost transporter).
SimpleThread(const Config &cfg, boost::units::quantity< boost::units::si::frequency > loop_freq, int index=-1)
Construct a thread with a given configuration, a loop frequency (using boost::units) and optionally a...
InterProcessForwarder< InterThreadTransporter, ImplementationTag > & interprocess()
Access the transporter on the interprocess layer (which wraps interthread).
Thread(const Config &cfg, InterVehicleForwarder< InterProcessForwarder< InterThreadTransporter, void > > *transporter, int index)
void set_transporter(InterVehicleForwarder< InterProcessForwarder< InterThreadTransporter, void > > *transporter)
InterVehicleForwarder< InterProcessForwarder< InterThreadTransporter, void > > & transporter() const
const Config & cfg() const
Objects implementing the Goby nested middleware.
The global namespace for the Goby project.