19 #include <boost/asio/io_context.hpp>
31 use_independent_context_(false),
32 retry_interval_(3000),
34 connection_timeout_(5000) {
43 std::unique_ptr<wrapper::TcpClient> client;
44 if (use_independent_context_) {
45 client = std::make_unique<wrapper::TcpClient>(host_, port_, std::make_shared<boost::asio::io_context>());
46 client->set_manage_external_context(
true);
48 client = std::make_unique<wrapper::TcpClient>(host_, port_);
51 if (on_data_) client->on_data(on_data_);
52 if (on_connect_) client->on_connect(on_connect_);
53 if (on_disconnect_) client->on_disconnect(on_disconnect_);
54 if (on_error_) client->on_error(on_error_);
56 client->set_retry_interval(retry_interval_);
57 client->set_max_retries(max_retries_);
58 client->set_connection_timeout(connection_timeout_);
61 client->auto_manage(
true);
73 on_data_ = std::move(handler);
78 on_connect_ = std::move(handler);
83 on_disconnect_ = std::move(handler);
88 on_error_ = std::move(handler);
93 retry_interval_ = std::chrono::milliseconds(milliseconds);
103 connection_timeout_ = std::chrono::milliseconds(milliseconds);
108 use_independent_context_ = use_independent;
static void ensure_io_context_running()
Automatically start IoContextManager if not running.
Modernized Builder for TcpClient.
TcpClientBuilder & auto_manage(bool auto_manage=true) override
Enable auto-manage functionality.
TcpClientBuilder & on_connect(std::function< void(const wrapper::ConnectionContext &)> handler) override
Set connection handler callback.
TcpClientBuilder(const std::string &host, uint16_t port)
TcpClientBuilder & use_independent_context(bool use_independent=true)
Use independent IoContext for this client.
std::unique_ptr< wrapper::TcpClient > build() override
Build and return the configured product.
TcpClientBuilder & connection_timeout(uint32_t milliseconds)
Set connection timeout.
TcpClientBuilder & retry_interval(uint32_t milliseconds)
Set connection retry interval.
TcpClientBuilder & on_error(std::function< void(const wrapper::ErrorContext &)> handler) override
Set error handler callback.
TcpClientBuilder & on_data(std::function< void(const wrapper::MessageContext &)> handler) override
Set data handler callback.
TcpClientBuilder & on_disconnect(std::function< void(const wrapper::ConnectionContext &)> handler) override
Set disconnection handler callback.
TcpClientBuilder & max_retries(int max_retries)
Set maximum connection retries (-1 for unlimited)
Context for connection/disconnection events.
Context for error events.
Context for data/message related events.
diagnostics::BuilderException BuilderException