77// ===----------------------------------------------------------------------===//
88
99#include " DAP.h"
10+ #include " DAPLog.h"
1011#include " Handler/ResponseHandler.h"
1112#include " JSONUtils.h"
1213#include " LLDBUtils.h"
2526#include " llvm/ADT/ArrayRef.h"
2627#include " llvm/ADT/ScopeExit.h"
2728#include " llvm/ADT/StringExtras.h"
29+ #include " llvm/ADT/StringRef.h"
2830#include " llvm/ADT/Twine.h"
2931#include " llvm/Support/Error.h"
3032#include " llvm/Support/ErrorHandling.h"
@@ -61,10 +63,10 @@ const char DEV_NULL[] = "/dev/null";
6163
6264namespace lldb_dap {
6365
64- DAP::DAP (std::string name , llvm::StringRef path, std::ofstream *log,
66+ DAP::DAP (llvm::StringRef client_name , llvm::StringRef path, std::ofstream *log,
6567 lldb::IOObjectSP input, lldb::IOObjectSP output, ReplMode repl_mode,
6668 std::vector<std::string> pre_init_commands)
67- : name(std::move(name) ), debug_adapter_path(path), log(log),
69+ : client_name(client_name ), debug_adapter_path(path), log(log),
6870 input (std::move(input)), output(std::move(output)),
6971 broadcaster(" lldb-dap" ), exception_breakpoints(),
7072 pre_init_commands(std::move(pre_init_commands)),
@@ -239,14 +241,7 @@ void DAP::SendJSON(const llvm::json::Value &json) {
239241 std::lock_guard<std::mutex> locker (mutex);
240242 SendJSON (json_str);
241243
242- if (log) {
243- auto now = std::chrono::duration<double >(
244- std::chrono::system_clock::now ().time_since_epoch ());
245- *log << llvm::formatv (" {0:f9} {1} <-- " , now.count (), name).str ()
246- << std::endl
247- << " Content-Length: " << json_str.size () << " \r\n\r\n "
248- << llvm::formatv (" {0:2}" , json).str () << std::endl;
249- }
244+ DAP_LOG (log, " ({0}) <-- {1}" , client_name, json_str);
250245}
251246
252247// Read a JSON packet from the "in" stream.
@@ -270,13 +265,7 @@ std::string DAP::ReadJSON() {
270265 if (!input.read_full (log, length, json_str))
271266 return json_str;
272267
273- if (log) {
274- auto now = std::chrono::duration<double >(
275- std::chrono::system_clock::now ().time_since_epoch ());
276- *log << llvm::formatv (" {0:f9} {1} --> " , now.count (), name).str ()
277- << std::endl
278- << " Content-Length: " << length << " \r\n\r\n " ;
279- }
268+ DAP_LOG (log, " ({0}) --> {1}" , client_name, json_str);
280269 return json_str;
281270}
282271
@@ -711,22 +700,15 @@ PacketStatus DAP::GetNextObject(llvm::json::Object &object) {
711700
712701 llvm::StringRef json_sref (json);
713702 llvm::Expected<llvm::json::Value> json_value = llvm::json::parse (json_sref);
714- if (auto error = json_value.takeError ()) {
715- std::string error_str = llvm::toString (std::move (error));
716- if (log)
717- *log << " error: failed to parse JSON: " << error_str << std::endl
718- << json << std::endl;
703+ if (!json_value) {
704+ DAP_LOG_ERROR (log, json_value.takeError (),
705+ " ({1}) failed to parse JSON: {0}" , client_name);
719706 return PacketStatus::JSONMalformed;
720707 }
721708
722- if (log) {
723- *log << llvm::formatv (" {0:2}" , *json_value).str () << std::endl;
724- }
725-
726709 llvm::json::Object *object_ptr = json_value->getAsObject ();
727710 if (!object_ptr) {
728- if (log)
729- *log << " error: json packet isn't a object" << std::endl;
711+ DAP_LOG (log, " ({0}) error: json packet isn't a object" , client_name);
730712 return PacketStatus::JSONNotObject;
731713 }
732714 object = *object_ptr;
@@ -744,9 +726,7 @@ bool DAP::HandleObject(const llvm::json::Object &object) {
744726 return true ; // Success
745727 }
746728
747- if (log)
748- *log << " error: unhandled command \" " << command.data () << " \" "
749- << std::endl;
729+ DAP_LOG (log, " ({0}) error: unhandled command '{1}'" , client_name, command);
750730 return false ; // Fail
751731 }
752732
0 commit comments