57 :
public IOThread<line_in_group, line_out_group, publish_layer, subscribe_layer, Config,
58 boost::asio::ip::tcp::socket, ThreadType, use_indexed_groups>
60 using Base =
IOThread<line_in_group, line_out_group, publish_layer, subscribe_layer, Config,
61 boost::asio::ip::tcp::socket, ThreadType, use_indexed_groups>;
63 using ConfigType = Config;
70 std::string(
"tcp: ") + config.remote_address() +
":" +
73 boost::asio::ip::tcp::resolver resolver(this->
mutable_io());
76 .resolve(this->cfg().remote_address(), std::to_string(this->cfg().remote_port()),
77 boost::asio::ip::resolver_base::numeric_service)
82 this->interthread().template publish<line_in_group>(ready);
87 auto event = std::make_shared<goby::middleware::protobuf::TCPClientEvent>();
88 if (this->index() != -1)
89 event->set_index(this->index());
91 *
event->mutable_local_endpoint() = endpoint_convert<protobuf::TCPEndPoint>(local_endpoint_);
92 *
event->mutable_remote_endpoint() =
93 endpoint_convert<protobuf::TCPEndPoint>(remote_endpoint_);
95 <<
"Event: " <<
event->ShortDebugString() << std::endl;
96 this->publish_in(event);
102 *io_msg->mutable_tcp_src() = endpoint_convert<protobuf::TCPEndPoint>(remote_endpoint_);
103 *io_msg->mutable_tcp_dest() = endpoint_convert<protobuf::TCPEndPoint>(local_endpoint_);
107 void async_write(std::shared_ptr<const goby::middleware::protobuf::IOData> io_msg)
override
113 void open_socket()
override
117 auto event = std::make_shared<goby::middleware::protobuf::TCPClientEvent>();
118 if (this->index() != -1)
119 event->set_index(this->index());
121 *
event->mutable_local_endpoint() = endpoint_convert<protobuf::TCPEndPoint>(local_endpoint_);
122 *
event->mutable_remote_endpoint() =
123 endpoint_convert<protobuf::TCPEndPoint>(remote_endpoint_);
125 <<
"Event: " <<
event->ShortDebugString() << std::endl;
126 this->publish_in(event);
132 boost::asio::ip::tcp::endpoint remote_endpoint_;
133 boost::asio::ip::tcp::endpoint local_endpoint_;