OLD | NEW |
1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 listening_->Wait(); | 98 listening_->Wait(); |
99 } | 99 } |
100 | 100 |
101 void DebuggerAgent::CreateSession(Socket* client) { | 101 void DebuggerAgent::CreateSession(Socket* client) { |
102 ScopedLock with(session_access_); | 102 ScopedLock with(session_access_); |
103 | 103 |
104 // If another session is already established terminate this one. | 104 // If another session is already established terminate this one. |
105 if (session_ != NULL) { | 105 if (session_ != NULL) { |
106 static const char* message = "Remote debugging session already active\r\n"; | 106 static const char* message = "Remote debugging session already active\r\n"; |
107 | 107 |
108 client->Send(message, strlen(message)); | 108 client->Send(message, StrLength(message)); |
109 delete client; | 109 delete client; |
110 return; | 110 return; |
111 } | 111 } |
112 | 112 |
113 // Create a new session and hook up the debug message handler. | 113 // Create a new session and hook up the debug message handler. |
114 session_ = new DebuggerAgentSession(this, client); | 114 session_ = new DebuggerAgentSession(this, client); |
115 v8::Debug::SetMessageHandler2(DebuggerAgentMessageHandler); | 115 v8::Debug::SetMessageHandler2(DebuggerAgentMessageHandler); |
116 session_->Start(); | 116 session_->Start(); |
117 } | 117 } |
118 | 118 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 while (true) { | 165 while (true) { |
166 // Read data from the debugger front end. | 166 // Read data from the debugger front end. |
167 SmartPointer<char> message = DebuggerAgentUtil::ReceiveMessage(client_); | 167 SmartPointer<char> message = DebuggerAgentUtil::ReceiveMessage(client_); |
168 if (*message == NULL) { | 168 if (*message == NULL) { |
169 // Session is closed. | 169 // Session is closed. |
170 agent_->OnSessionClosed(this); | 170 agent_->OnSessionClosed(this); |
171 return; | 171 return; |
172 } | 172 } |
173 | 173 |
174 // Convert UTF-8 to UTF-16. | 174 // Convert UTF-8 to UTF-16. |
175 unibrow::Utf8InputBuffer<> buf(*message, strlen(*message)); | 175 unibrow::Utf8InputBuffer<> buf(*message, |
| 176 StrLength(*message)); |
176 int len = 0; | 177 int len = 0; |
177 while (buf.has_more()) { | 178 while (buf.has_more()) { |
178 buf.GetNext(); | 179 buf.GetNext(); |
179 len++; | 180 len++; |
180 } | 181 } |
181 int16_t* temp = NewArray<int16_t>(len + 1); | 182 int16_t* temp = NewArray<int16_t>(len + 1); |
182 buf.Reset(*message, strlen(*message)); | 183 buf.Reset(*message, StrLength(*message)); |
183 for (int i = 0; i < len; i++) { | 184 for (int i = 0; i < len; i++) { |
184 temp[i] = buf.GetNext(); | 185 temp[i] = buf.GetNext(); |
185 } | 186 } |
186 | 187 |
187 // Send the request received to the debugger. | 188 // Send the request received to the debugger. |
188 v8::Debug::SendCommand(reinterpret_cast<const uint16_t *>(temp), len); | 189 v8::Debug::SendCommand(reinterpret_cast<const uint16_t *>(temp), len); |
189 DeleteArray(temp); | 190 DeleteArray(temp); |
190 } | 191 } |
191 } | 192 } |
192 | 193 |
193 | 194 |
194 void DebuggerAgentSession::DebuggerMessage(Vector<uint16_t> message) { | 195 void DebuggerAgentSession::DebuggerMessage(Vector<uint16_t> message) { |
195 DebuggerAgentUtil::SendMessage(client_, message); | 196 DebuggerAgentUtil::SendMessage(client_, message); |
196 } | 197 } |
197 | 198 |
198 | 199 |
199 void DebuggerAgentSession::Shutdown() { | 200 void DebuggerAgentSession::Shutdown() { |
200 // Shutdown the socket to end the blocking receive. | 201 // Shutdown the socket to end the blocking receive. |
201 client_->Shutdown(); | 202 client_->Shutdown(); |
202 } | 203 } |
203 | 204 |
204 | 205 |
205 const char* DebuggerAgentUtil::kContentLength = "Content-Length"; | 206 const char* DebuggerAgentUtil::kContentLength = "Content-Length"; |
206 int DebuggerAgentUtil::kContentLengthSize = strlen(kContentLength); | 207 int DebuggerAgentUtil::kContentLengthSize = |
| 208 StrLength(kContentLength); |
207 | 209 |
208 | 210 |
209 SmartPointer<char> DebuggerAgentUtil::ReceiveMessage(const Socket* conn) { | 211 SmartPointer<char> DebuggerAgentUtil::ReceiveMessage(const Socket* conn) { |
210 int received; | 212 int received; |
211 | 213 |
212 // Read header. | 214 // Read header. |
213 int content_length = 0; | 215 int content_length = 0; |
214 while (true) { | 216 while (true) { |
215 const int kHeaderBufferSize = 80; | 217 const int kHeaderBufferSize = 80; |
216 char header_buffer[kHeaderBufferSize]; | 218 char header_buffer[kHeaderBufferSize]; |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
414 return total_received; | 416 return total_received; |
415 } | 417 } |
416 total_received += received; | 418 total_received += received; |
417 } | 419 } |
418 return total_received; | 420 return total_received; |
419 } | 421 } |
420 | 422 |
421 } } // namespace v8::internal | 423 } } // namespace v8::internal |
422 | 424 |
423 #endif // ENABLE_DEBUGGER_SUPPORT | 425 #endif // ENABLE_DEBUGGER_SUPPORT |
OLD | NEW |