Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Side by Side Diff: src/d8-debug.h

Issue 279423004: Remove DebuggerAgent. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: remove some more includes. Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/d8.cc ('k') | src/d8-debug.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2008 the V8 project authors. All rights reserved. 1 // Copyright 2008 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_D8_DEBUG_H_ 5 #ifndef V8_D8_DEBUG_H_
6 #define V8_D8_DEBUG_H_ 6 #define V8_D8_DEBUG_H_
7 7
8 8
9 #include "d8.h" 9 #include "d8.h"
10 #include "debug.h" 10 #include "debug.h"
11 #include "platform/socket.h"
12 11
13 12
14 namespace v8 { 13 namespace v8 {
15 14
16
17 void HandleDebugEvent(const Debug::EventDetails& event_details); 15 void HandleDebugEvent(const Debug::EventDetails& event_details);
18 16
19 // Start the remove debugger connecting to a V8 debugger agent on the specified
20 // port.
21 void RunRemoteDebugger(Isolate* isolate, int port);
22
23 // Forward declerations.
24 class RemoteDebuggerEvent;
25 class ReceiverThread;
26
27
28 // Remote debugging class.
29 class RemoteDebugger {
30 public:
31 explicit RemoteDebugger(Isolate* isolate, int port)
32 : isolate_(isolate),
33 port_(port),
34 event_available_(0),
35 head_(NULL), tail_(NULL) {}
36 void Run();
37
38 // Handle events from the subordinate threads.
39 void MessageReceived(i::SmartArrayPointer<char> message);
40 void KeyboardCommand(i::SmartArrayPointer<char> command);
41 void ConnectionClosed();
42
43 private:
44 // Add new debugger event to the list.
45 void AddEvent(RemoteDebuggerEvent* event);
46 // Read next debugger event from the list.
47 RemoteDebuggerEvent* GetEvent();
48
49 // Handle a message from the debugged V8.
50 void HandleMessageReceived(char* message);
51 // Handle a keyboard command.
52 void HandleKeyboardCommand(char* command);
53
54 // Get connection to agent in debugged V8.
55 i::Socket* conn() { return conn_; }
56
57 Isolate* isolate_;
58 int port_; // Port used to connect to debugger V8.
59 i::Socket* conn_; // Connection to debugger agent in debugged V8.
60
61 // Linked list of events from debugged V8 and from keyboard input. Access to
62 // the list is guarded by a mutex and a semaphore signals new items in the
63 // list.
64 i::Mutex event_access_;
65 i::Semaphore event_available_;
66 RemoteDebuggerEvent* head_;
67 RemoteDebuggerEvent* tail_;
68
69 friend class ReceiverThread;
70 };
71
72
73 // Thread reading from debugged V8 instance.
74 class ReceiverThread: public i::Thread {
75 public:
76 explicit ReceiverThread(RemoteDebugger* remote_debugger)
77 : Thread("d8:ReceiverThrd"),
78 remote_debugger_(remote_debugger) {}
79 ~ReceiverThread() {}
80
81 void Run();
82
83 private:
84 RemoteDebugger* remote_debugger_;
85 };
86
87
88 // Thread reading keyboard input.
89 class KeyboardThread: public i::Thread {
90 public:
91 explicit KeyboardThread(RemoteDebugger* remote_debugger)
92 : Thread("d8:KeyboardThrd"),
93 remote_debugger_(remote_debugger) {}
94 ~KeyboardThread() {}
95
96 void Run();
97
98 private:
99 RemoteDebugger* remote_debugger_;
100 };
101
102
103 // Events processed by the main deubgger thread.
104 class RemoteDebuggerEvent {
105 public:
106 RemoteDebuggerEvent(int type, i::SmartArrayPointer<char> data)
107 : type_(type), data_(data), next_(NULL) {
108 ASSERT(type == kMessage || type == kKeyboard || type == kDisconnect);
109 }
110
111 static const int kMessage = 1;
112 static const int kKeyboard = 2;
113 static const int kDisconnect = 3;
114
115 int type() { return type_; }
116 char* data() { return data_.get(); }
117
118 private:
119 void set_next(RemoteDebuggerEvent* event) { next_ = event; }
120 RemoteDebuggerEvent* next() { return next_; }
121
122 int type_;
123 i::SmartArrayPointer<char> data_;
124 RemoteDebuggerEvent* next_;
125
126 friend class RemoteDebugger;
127 };
128
129
130 } // namespace v8 17 } // namespace v8
131 18
132 19
133 #endif // V8_D8_DEBUG_H_ 20 #endif // V8_D8_DEBUG_H_
OLDNEW
« no previous file with comments | « src/d8.cc ('k') | src/d8-debug.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698