31 boost::asio::io_context ctx;
32 ossia::net::websocket_simple_client socket;
34 bool socket_ready{}, payload_ready{};
40 : socket{{.url = fmt::format(
"ws://127.0.0.1:{}", port)}, ctx}
42 socket.on_open.connect<&client::on_open>(*this);
43 socket.on_fail.connect<&client::on_error>(*this);
44 socket.on_close.connect<&client::on_error>(*this);
46 socket.websocket_client::connect(fmt::format(
"ws://127.0.0.1:{}", port));
49 void set_payload(std::string json)
51 payload = std::move(json);
52 if(echo_stdout && !payload.empty())
54 std::fwrite(payload.data(), 1, payload.size(), stdout);
55 std::fwrite(
"\n", 1, 1, stdout);
64 if(socket_ready && payload_ready)
68 socket.send_message(payload);
77 auto delay = std::make_shared<boost::asio::steady_timer>(ctx);
78 delay->expires_after(std::chrono::milliseconds(500));
80 [
this, delay](
auto) { std::_Exit(payload.empty() ? 1 : 0); });
86 auto line = fmt::format(
"[{}] socket error\n", log_name);
87 std::fwrite(line.data(), 1, line.size(), stderr);