================ @@ -221,52 +222,22 @@ void DAP::StopEventHandlers() { } } -// Send the JSON in "json_str" to the "out" stream. Correctly send the -// "Content-Length:" field followed by the length, followed by the raw -// JSON bytes. -void DAP::SendJSON(const std::string &json_str) { - output.write_full("Content-Length: "); - output.write_full(llvm::utostr(json_str.size())); - output.write_full("\r\n\r\n"); - output.write_full(json_str); -} - // Serialize the JSON value into a string and send the JSON packet to // the "out" stream. void DAP::SendJSON(const llvm::json::Value &json) { - std::string json_str; - llvm::raw_string_ostream strm(json_str); - strm << json; - static std::mutex mutex; - std::lock_guard<std::mutex> locker(mutex); - SendJSON(json_str); - - DAP_LOG(log, "({0}) <-- {1}", client_name, json_str); -} - -// Read a JSON packet from the "in" stream. -std::string DAP::ReadJSON() { - std::string length_str; - std::string json_str; - int length; - - if (!input.read_expected(log, "Content-Length: ")) - return json_str; - - if (!input.read_line(log, length_str)) - return json_str; - - if (!llvm::to_integer(length_str, length)) - return json_str; - - if (!input.read_expected(log, "\r\n")) - return json_str; - - if (!input.read_full(log, length, json_str)) - return json_str; - - DAP_LOG(log, "({0}) --> {1}", client_name, json_str); - return json_str; + // FIXME: Instead of parsing the output message from JSON, pass the `Message` + // as parameter to `SendJSON`. + protocol::Message message; + llvm::json::Path::Root root; + if (!fromJSON(json, message, root)) { + DAP_LOG_ERROR(log, root.getError(), "({1}) encoding failed: {0}", + client_name); + return; + } + auto err = transport.Write(message); + if (err) { + DAP_LOG_ERROR(log, std::move(err), "({1}) write failed: {0}", client_name); + } ---------------- JDevlieghere wrote:
Nit: the type of `err` is not obvious from the RHS so I don't think `auto` is appropriate. Also no braces for single line `if`s: ```suggestion if (llvm::Error err = transport.Write(message)) DAP_LOG_ERROR(log, std::move(err), "({1}) write failed: {0}", client_name); ``` https://github.com/llvm/llvm-project/pull/130026 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits