Goby3 3.5.1
2026.06.04
Loading...
Searching...
No Matches
goby::middleware::io::TCPClientThreadLineBased< line_in_group, line_out_group, publish_layer, subscribe_layer, Config, ThreadType, use_indexed_groups > Class Template Reference

Reads/Writes strings from/to a TCP connection using a line-based (typically ASCII) protocol with a defined end-of-line regex. More...

#include <goby/middleware/io/line_based/tcp_client.h>

Inheritance diagram for goby::middleware::io::TCPClientThreadLineBased< line_in_group, line_out_group, publish_layer, subscribe_layer, Config, ThreadType, use_indexed_groups >:
goby::middleware::io::detail::TCPClientThread< line_in_group, line_out_group, PubSubLayer::INTERPROCESS, PubSubLayer::INTERTHREAD, goby::middleware::protobuf::TCPClientConfig, goby::zeromq::SimpleThread, false > goby::middleware::io::detail::IOThread< line_in_group, line_out_group, publish_layer, subscribe_layer, goby::middleware::protobuf::TCPClientConfig, boost::asio::ip::tcp::socket, goby::zeromq::SimpleThread, use_indexed_groups > goby::middleware::SimpleThread< Config, detail::InterProcessTag > goby::middleware::io::detail::IOPublishTransporter< IOThread< line_in_group, line_out_group, publish_layer, subscribe_layer, goby::middleware::protobuf::TCPClientConfig, boost::asio::ip::tcp::socket, goby::zeromq::SimpleThread, use_indexed_groups >, line_in_group, publish_layer, goby::zeromq::SimpleThread< goby::middleware::protobuf::TCPClientConfig >::Transporter::implementation_tag, use_indexed_groups > goby::middleware::io::detail::IOSubscribeTransporter< IOThread< line_in_group, line_out_group, publish_layer, subscribe_layer, goby::middleware::protobuf::TCPClientConfig, boost::asio::ip::tcp::socket, goby::zeromq::SimpleThread, use_indexed_groups >, line_out_group, subscribe_layer, goby::zeromq::SimpleThread< goby::middleware::protobuf::TCPClientConfig >::Transporter::implementation_tag, use_indexed_groups > goby::middleware::Thread< Config, TransporterType > goby::middleware::coroner::Thread< Derived >

Public Member Functions

 TCPClientThreadLineBased (const goby::middleware::protobuf::TCPClientConfig &config, int index=-1)
 Constructs the thread.
 ~TCPClientThreadLineBased ()
Public Member Functions inherited from goby::middleware::io::detail::TCPClientThread< line_in_group, line_out_group, PubSubLayer::INTERPROCESS, PubSubLayer::INTERTHREAD, goby::middleware::protobuf::TCPClientConfig, goby::zeromq::SimpleThread, false >
 TCPClientThread (const goby::middleware::protobuf::TCPClientConfig &config, int index=-1)
 Constructs the thread.
 ~TCPClientThread () override
Public Member Functions inherited from goby::middleware::io::detail::IOThread< line_in_group, line_out_group, publish_layer, subscribe_layer, goby::middleware::protobuf::TCPClientConfig, boost::asio::ip::tcp::socket, goby::zeromq::SimpleThread, use_indexed_groups >
 IOThread (const goby::middleware::protobuf::TCPClientConfig &config, int index, std::string glog_group="i/o")
 Constructs the thread.
void initialize () override
void finalize () override
virtual ~IOThread ()
Public Member Functions inherited from goby::middleware::SimpleThread< Config, detail::InterProcessTag >
 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.
 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 an index.
InterVehicleForwarder< InterProcessForwarder< InterThreadTransporter, detail::InterProcessTag > > & intervehicle ()
 Access the transporter on the intervehicle layer (which wraps interprocess and interthread).
InterProcessForwarder< InterThreadTransporter, detail::InterProcessTag > & interprocess ()
 Access the transporter on the interprocess layer (which wraps interthread).
InterThreadTransporterinterthread ()
 Access the transporter on the interthread layer (this is the innermost transporter).
Public Member Functions inherited from goby::middleware::Thread< Config, TransporterType >
 Thread (const Config &cfg, TransporterType *transporter, int index)
 Construct a thread with a given configuration, underlying transporter, and index (for multiple instantiations), but without any loop() frequency.
 Thread (const Config &cfg, TransporterType *transporter, double loop_freq_hertz=0, int index=-1)
 Construct a thread with all possible metadata (using double to specify frequency in Hertz).
 Thread (const Config &cfg, TransporterType *transporter, boost::units::quantity< boost::units::si::frequency > loop_freq, int index=-1)
 Construct a thread with all possible metadata (using boost::units to specify frequency).
virtual ~Thread ()
void run (std::atomic< bool > &alive)
 Run the thread until the boolean reference passed is set false. This call blocks, and should be run in a std::thread by the caller.
int index () const
std::type_index type_index ()
void set_type_index (std::type_index type_i)
std::string name ()
void set_name (const std::string &name)
int uid ()
void set_uid (int uid)
double loop_frequency_hertz () const
decltype(loop_frequency_) loop_frequency () const
void set_loop_frequency_hertz (double loop_freq_hertz)
void set_loop_frequency (boost::units::quantity< boost::units::si::frequency > loop_freq)

Additional Inherited Members

Public Types inherited from goby::middleware::Thread< Config, TransporterType >
using Transporter = TransporterType
Static Public Attributes inherited from goby::middleware::Thread< Config, TransporterType >
static constexpr goby::middleware::Group shutdown_group_ {"goby::middleware::Thread::shutdown"}
static constexpr goby::middleware::Group joinable_group_ {"goby::middleware::Thread::joinable"}
Protected Member Functions inherited from goby::middleware::io::detail::TCPClientThread< line_in_group, line_out_group, PubSubLayer::INTERPROCESS, PubSubLayer::INTERTHREAD, goby::middleware::protobuf::TCPClientConfig, goby::zeromq::SimpleThread, false >
void insert_endpoints (std::shared_ptr< goby::middleware::protobuf::IOData > &io_msg)
Protected Member Functions inherited from goby::middleware::io::detail::IOThread< line_in_group, line_out_group, publish_layer, subscribe_layer, goby::middleware::protobuf::TCPClientConfig, boost::asio::ip::tcp::socket, goby::zeromq::SimpleThread, use_indexed_groups >
void write (std::shared_ptr< const goby::middleware::protobuf::IOData > io_msg)
void handle_read_success (std::size_t bytes_transferred, const std::string &bytes)
void handle_write_success (std::size_t bytes_transferred)
void handle_read_error (const boost::system::error_code &ec)
void handle_write_error (const boost::system::error_code &ec)
boost::asio::ip::tcp::socket & mutable_socket ()
 Access the (mutable) socket (or serial_port) object.
boost::asio::io_contextmutable_io ()
bool socket_is_open ()
 Does the socket exist and is it open?
const std::string & glog_group ()
Protected Member Functions inherited from goby::middleware::Thread< Config, TransporterType >
 Thread (const Config &cfg, boost::units::quantity< boost::units::si::frequency > loop_freq, int index=-1)
void set_transporter (TransporterType *transporter)
double loop_max_frequency () const
void run_once ()
TransporterType & transporter () const
const Config & cfg () const
void thread_health (goby::middleware::protobuf::ThreadHealth &health)
virtual void health (goby::middleware::protobuf::ThreadHealth &health)
 Called when HealthRequest is made by goby_coroner.
void thread_quit ()
bool alive ()
Protected Member Functions inherited from goby::middleware::coroner::Thread< Derived >
void subscribe_coroner ()

Detailed Description

template<const goby::middleware::Group & line_in_group, const goby::middleware::Group & line_out_group, PubSubLayer publish_layer = PubSubLayer::INTERPROCESS, PubSubLayer subscribe_layer = PubSubLayer::INTERTHREAD, typename Config = goby::middleware::protobuf::TCPClientConfig, template< class > class ThreadType = goby::zeromq::SimpleThread, bool use_indexed_groups = false>
class goby::middleware::io::TCPClientThreadLineBased< line_in_group, line_out_group, publish_layer, subscribe_layer, Config, ThreadType, use_indexed_groups >

Reads/Writes strings from/to a TCP connection using a line-based (typically ASCII) protocol with a defined end-of-line regex.

Template Parameters
line_in_groupgoby::middleware::Group to publish to after receiving data from the TCP socket
line_out_groupgoby::middleware::Group to subcribe to for data to send to the TCP socket

Definition at line 74 of file tcp_client.h.

Constructor & Destructor Documentation

◆ TCPClientThreadLineBased()

template<const goby::middleware::Group & line_in_group, const goby::middleware::Group & line_out_group, PubSubLayer publish_layer = PubSubLayer::INTERPROCESS, PubSubLayer subscribe_layer = PubSubLayer::INTERTHREAD, typename Config = goby::middleware::protobuf::TCPClientConfig, template< class > class ThreadType = goby::zeromq::SimpleThread, bool use_indexed_groups = false>
goby::middleware::io::TCPClientThreadLineBased< line_in_group, line_out_group, publish_layer, subscribe_layer, Config, ThreadType, use_indexed_groups >::TCPClientThreadLineBased ( const goby::middleware::protobuf::TCPClientConfig & config,
int index = -1 )
inline

Constructs the thread.

Parameters
configA reference to the Protocol Buffers config read by the main application at launch
indexThread index for multiple instances in a given application (-1 indicates a single instance)

Definition at line 85 of file tcp_client.h.

◆ ~TCPClientThreadLineBased()

template<const goby::middleware::Group & line_in_group, const goby::middleware::Group & line_out_group, PubSubLayer publish_layer = PubSubLayer::INTERPROCESS, PubSubLayer subscribe_layer = PubSubLayer::INTERTHREAD, typename Config = goby::middleware::protobuf::TCPClientConfig, template< class > class ThreadType = goby::zeromq::SimpleThread, bool use_indexed_groups = false>
goby::middleware::io::TCPClientThreadLineBased< line_in_group, line_out_group, publish_layer, subscribe_layer, Config, ThreadType, use_indexed_groups >::~TCPClientThreadLineBased ( )
inline

Definition at line 91 of file tcp_client.h.


The documentation for this class was generated from the following file: