1 // Copyright (c) 2014 GitHub, Inc. All rights reserved.
2 // Use of this source code is governed by the MIT license that can be
3 // found in the LICENSE file.
5 #ifndef ATOM_BROWSER_NODE_DEBUGGER_H_
6 #define ATOM_BROWSER_NODE_DEBUGGER_H_
10 #include "base/memory/scoped_ptr.h"
11 #include "base/memory/weak_ptr.h"
12 #include "base/threading/thread.h"
13 #include "net/socket/stream_listen_socket.h"
14 #include "v8/include/v8-debug.h"
18 // Add support for node's "--debug" switch.
19 class NodeDebugger : public net::StreamListenSocket::Delegate {
21 explicit NodeDebugger(v8::Isolate* isolate);
22 virtual ~NodeDebugger();
24 bool IsRunning() const;
27 void StartServer(int port);
29 void OnMessage(const std::string& message);
30 void SendMessage(const std::string& message);
31 void SendConnectMessage();
33 static void DebugMessageHandler(const v8::Debug::Message& message);
35 // net::StreamListenSocket::Delegate:
36 virtual void DidAccept(net::StreamListenSocket* server,
37 scoped_ptr<net::StreamListenSocket> socket) OVERRIDE;
38 virtual void DidRead(net::StreamListenSocket* socket,
41 virtual void DidClose(net::StreamListenSocket* socket) OVERRIDE;
43 v8::Isolate* isolate_;
46 scoped_ptr<net::StreamListenSocket> server_;
47 scoped_ptr<net::StreamListenSocket> accepted_socket_;
52 base::WeakPtrFactory<NodeDebugger> weak_factory_;
54 DISALLOW_COPY_AND_ASSIGN(NodeDebugger);
59 #endif // ATOM_BROWSER_NODE_DEBUGGER_H_