56 :
public IOThread<line_in_group, line_out_group, publish_layer, subscribe_layer, Config,
57 boost::asio::ip::tcp::socket, ThreadType, use_indexed_groups>
59 using Base =
IOThread<line_in_group, line_out_group, publish_layer, subscribe_layer, Config,
60 boost::asio::ip::tcp::socket, ThreadType, use_indexed_groups>;
62 using ConfigType = Config;
69 std::string(
"tcp: ") + config.remote_address() +
":" +
72 boost::asio::ip::tcp::resolver resolver(this->
mutable_io());
75 .resolve(this->cfg().remote_address(), std::to_string(this->cfg().remote_port()),
76 boost::asio::ip::resolver_base::numeric_service)
81 this->interthread().template publish<line_in_group>(ready);
86 auto event = std::make_shared<goby::middleware::protobuf::TCPClientEvent>();
87 if (this->index() != -1)
88 event->set_index(this->index());
90 *
event->mutable_local_endpoint() = endpoint_convert<protobuf::TCPEndPoint>(local_endpoint_);
91 *
event->mutable_remote_endpoint() =
92 endpoint_convert<protobuf::TCPEndPoint>(remote_endpoint_);
94 <<
"Event: " <<
event->ShortDebugString() << std::endl;
95 this->publish_in(event);
101 *io_msg->mutable_tcp_src() = endpoint_convert<protobuf::TCPEndPoint>(remote_endpoint_);
102 *io_msg->mutable_tcp_dest() = endpoint_convert<protobuf::TCPEndPoint>(local_endpoint_);
106 void async_write(std::shared_ptr<const goby::middleware::protobuf::IOData> io_msg)
override
112 void open_socket()
override
116 auto event = std::make_shared<goby::middleware::protobuf::TCPClientEvent>();
117 if (this->index() != -1)
118 event->set_index(this->index());
120 *
event->mutable_local_endpoint() = endpoint_convert<protobuf::TCPEndPoint>(local_endpoint_);
121 *
event->mutable_remote_endpoint() =
122 endpoint_convert<protobuf::TCPEndPoint>(remote_endpoint_);
124 <<
"Event: " <<
event->ShortDebugString() << std::endl;
125 this->publish_in(event);
131 boost::asio::ip::tcp::endpoint remote_endpoint_;
132 boost::asio::ip::tcp::endpoint local_endpoint_;