Import the TCPListenSocket removed by Chromium
[platform/framework/web/crosswalk-tizen.git] / atom / browser / node_debugger.h
1 // Copyright (c) 2014 GitHub, Inc.
2 // Use of this source code is governed by the MIT license that can be
3 // found in the LICENSE file.
4
5 #ifndef ATOM_BROWSER_NODE_DEBUGGER_H_
6 #define ATOM_BROWSER_NODE_DEBUGGER_H_
7
8 #include <string>
9
10 #include "base/memory/scoped_ptr.h"
11 #include "base/memory/weak_ptr.h"
12 #include "base/threading/thread.h"
13 #include "net/test/embedded_test_server/stream_listen_socket.h"
14 #include "v8/include/v8-debug.h"
15
16 namespace atom {
17
18 // Add support for node's "--debug" switch.
19 class NodeDebugger : public net::test_server::StreamListenSocket::Delegate {
20  public:
21   explicit NodeDebugger(v8::Isolate* isolate);
22   virtual ~NodeDebugger();
23
24   bool IsRunning() const;
25
26  private:
27   void StartServer(int port);
28   void CloseSession();
29   void OnMessage(const std::string& message);
30   void SendMessage(const std::string& message);
31   void SendConnectMessage();
32
33   static void DebugMessageHandler(const v8::Debug::Message& message);
34
35   // net::test_server::StreamListenSocket::Delegate:
36   void DidAccept(
37       net::test_server::StreamListenSocket* server,
38       scoped_ptr<net::test_server::StreamListenSocket> socket) override;
39   void DidRead(net::test_server::StreamListenSocket* socket,
40                const char* data,
41                int len) override;
42   void DidClose(net::test_server::StreamListenSocket* socket) override;
43
44   v8::Isolate* isolate_;
45
46   base::Thread thread_;
47   scoped_ptr<net::test_server::StreamListenSocket> server_;
48   scoped_ptr<net::test_server::StreamListenSocket> accepted_socket_;
49
50   std::string buffer_;
51   int content_length_;
52
53   base::WeakPtrFactory<NodeDebugger> weak_factory_;
54
55   DISALLOW_COPY_AND_ASSIGN(NodeDebugger);
56 };
57
58 }  // namespace atom
59
60 #endif  // ATOM_BROWSER_NODE_DEBUGGER_H_