MCPcopy Create free account
hub / github.com/OpenImageDebugger/OpenImageDebugger / is_connected

Method is_connected

src/ipc/asio_transport.cpp:139–159  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

137}
138
139bool AsioTransport::is_connected() const {
140 if (disconnected_ || !socket_.is_open()) {
141 return false;
142 }
143 asio::error_code ec;
144 const bool prev_nb = socket_.non_blocking();
145 socket_.non_blocking(true, ec);
146 char probe = 0;
147 const std::size_t n = socket_.receive(
148 asio::buffer(&probe, 1), asio::socket_base::message_peek, ec);
149 asio::error_code restore_ec;
150 socket_.non_blocking(prev_nb, restore_ec);
151 if (ec == asio::error::would_block) {
152 return true; // connected, nothing to read yet
153 }
154 if (ec || n == 0) {
155 disconnected_ = true; // EOF/error -> peer gone
156 return false;
157 }
158 return true; // data pending -> connected
159}
160
161void AsioTransport::set_timeout(std::chrono::milliseconds timeout) {
162 timeout_ = timeout;

Callers 4

startMethod · 0.80
ConnectSocketsMethod · 0.80
TESTFunction · 0.80

Calls 1

receiveMethod · 0.45

Tested by 2

ConnectSocketsMethod · 0.64
TESTFunction · 0.64