Index: runtime/bin/dbg_connection.h |
=================================================================== |
--- runtime/bin/dbg_connection.h (revision 0) |
+++ runtime/bin/dbg_connection.h (revision 0) |
@@ -0,0 +1,67 @@ |
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+#ifndef BIN_DBG_CONNECTION_H_ |
+#define BIN_DBG_CONNECTION_H_ |
+ |
+#include "bin/builtin.h" |
+#include "bin/utils.h" |
+ |
+#include "include/dart_debugger_api.h" |
+ |
+#include "platform/globals.h" |
+#include "platform/thread.h" |
+// Declare the OS-specific types ahead of defining the generic class. |
+#if defined(TARGET_OS_LINUX) |
+#include "bin/dbg_connection_linux.h" |
+#elif defined(TARGET_OS_MACOS) |
+#include "bin/dbg_connection_macos.h" |
+#elif defined(TARGET_OS_WINDOWS) |
+#include "bin/dbg_connection_win.h" |
+#else |
+#error Unknown target os. |
+#endif |
+ |
+ |
+class MessageBuffer; |
+ |
+class DebuggerConnectionHandler { |
+ public: |
+ ~DebuggerConnectionHandler(); |
+ static void StartHandler(const char* address, int port_number); |
+ |
+ static bool IsConnected() { |
+ return debugger_fd_ >= 0; |
+ } |
+ |
+ private: |
+ static void SendBreakpointEvent(Dart_Breakpoint bpt, Dart_StackTrace trace); |
+ static void BreakpointHandler(Dart_Breakpoint bpt, Dart_StackTrace trace); |
+ |
+ static void AcceptDbgConnection(int debug_fd); |
+ static void CloseDbgConnection(); |
+ |
+ static void HandleMessages(); |
+ static void HandleResumeCmd(); |
+ |
+ static bool handler_started_; |
+ |
+ // The socket that is listening for incoming debugger connections. |
+ // This descriptor is created and closed by a VM thread. |
+ static int listener_fd_; |
+ |
+ // The socket that connects with the debugger client. |
+ // The descriptor is created by the debugger connection thread and |
+ // closed by a VM thread. |
+ static int debugger_fd_; |
+ |
+ static MessageBuffer* msgbuf_; |
+ |
+ friend class DebuggerConnectionImpl; |
+ |
+ DISALLOW_ALLOCATION(); |
+ DISALLOW_IMPLICIT_CONSTRUCTORS(DebuggerConnectionHandler); |
+}; |
+ |
+#endif // BIN_DBG_CONNECTION_H_ |