@@ -25,9 +25,7 @@ using namespace lldb_private;
25
25
using namespace lldb_dap ;
26
26
using namespace lldb_dap ::protocol;
27
27
28
- static Expected<std::string> ReadFull (IOObjectSP &descriptor, size_t length) {
29
- if (!descriptor || !descriptor->IsValid ())
30
- return createStringError (" transport input is closed" );
28
+ static Expected<std::string> ReadFull (IOObject *descriptor, size_t length) {
31
29
std::string data;
32
30
data.resize (length);
33
31
auto status = descriptor->Read (data.data (), length);
@@ -36,7 +34,7 @@ static Expected<std::string> ReadFull(IOObjectSP &descriptor, size_t length) {
36
34
return data.substr (0 , length);
37
35
}
38
36
39
- static Expected<std::string> ReadUntil (IOObjectSP & descriptor,
37
+ static Expected<std::string> ReadUntil (IOObject * descriptor,
40
38
StringRef delimiter) {
41
39
std::string buffer;
42
40
buffer.reserve (delimiter.size () + 1 );
@@ -68,8 +66,13 @@ Transport::Transport(StringRef client_name, std::ofstream *log,
68
66
m_output (std::move(output)) {}
69
67
70
68
std::optional<Message> Transport::Read () {
69
+ if (!m_input || !m_input->IsValid ()) {
70
+ DAP_LOG (m_log, " ({0}) input is closed" , m_client_name);
71
+ return std::nullopt;
72
+ }
73
+ IOObject *input = m_input.get ();
71
74
Expected<std::string> message_header =
72
- ReadFull (m_input , kHeaderContentLength .size ());
75
+ ReadFull (input , kHeaderContentLength .size ());
73
76
if (!message_header) {
74
77
DAP_LOG_ERROR (m_log, message_header.takeError (), " ({1}) read failed: {0}" ,
75
78
m_client_name);
@@ -85,7 +88,7 @@ std::optional<Message> Transport::Read() {
85
88
return std::nullopt;
86
89
}
87
90
88
- Expected<std::string> raw_length = ReadUntil (m_input , kHeaderSeparator );
91
+ Expected<std::string> raw_length = ReadUntil (input , kHeaderSeparator );
89
92
if (!raw_length) {
90
93
DAP_LOG_ERROR (m_log, raw_length.takeError (), " ({1}) read failed: {0}" ,
91
94
m_client_name);
@@ -99,7 +102,7 @@ std::optional<Message> Transport::Read() {
99
102
return std::nullopt;
100
103
}
101
104
102
- Expected<std::string> raw_json = ReadFull (m_input , length);
105
+ Expected<std::string> raw_json = ReadFull (input , length);
103
106
if (!raw_json) {
104
107
DAP_LOG_ERROR (m_log, raw_json.takeError (), " ({1}) read failed: {0}" ,
105
108
m_client_name);
0 commit comments