48 uint32_t default_timeout_ms = 30000);
63 void close()
override;
73 const std::string& request_json,
74 uint32_t timeout_ms = 0)
override;
86 std::string sse_path_;
87 std::string message_endpoint_;
88 uint32_t default_timeout_ms_;
90 std::unique_ptr<httplib::Client> client_;
91 std::atomic<bool> connected_{
false};
92 std::atomic<bool> running_{
false};
93 std::thread sse_reader_thread_;
95 std::mutex pending_mutex_;
96 std::condition_variable pending_cv_;
97 std::map<int, std::string> pending_responses_;
98 std::atomic<int> next_request_id_{1};
113 void warn_if_cleartext()
const;
123 static bool parse_request_id(
124 const std::string& request_json,
int& request_id);
133 bool post_request(
const std::string& request_json);
143 std::string await_response(
int request_id, uint32_t timeout_ms);
150 void sse_reader_loop();
158 void handle_sse_data(
const std::string& data);
166 void handle_endpoint_event(
const std::string& data);
174 void process_sse_line(
const std::string& line);
176 std::string current_event_type_;