1 //===-- PlatformAndroidRemoteGDBServer.h ------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef liblldb_PlatformAndroidRemoteGDBServer_h_
11 #define liblldb_PlatformAndroidRemoteGDBServer_h_
12 
13 // C Includes
14 // C++ Includes
15 #include <map>
16 #include <utility>
17 
18 // Other libraries and framework includes
19 // Project includes
20 #include "Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h"
21 
22 namespace lldb_private {
23 namespace platform_android {
24 
25 class PlatformAndroidRemoteGDBServer : public platform_gdb_server::PlatformRemoteGDBServer
26 {
27 public:
28     PlatformAndroidRemoteGDBServer();
29 
30     ~PlatformAndroidRemoteGDBServer() override;
31 
32     Error
33     ConnectRemote (Args& args) override;
34 
35     Error
36     DisconnectRemote () override;
37 
38 protected:
39     std::string m_device_id;
40     std::map<lldb::pid_t, uint16_t> m_port_forwards;
41 
42     bool
43     LaunchGDBServer (lldb::pid_t &pid, std::string &connect_url) override;
44 
45     bool
46     KillSpawnedProcess (lldb::pid_t pid) override;
47 
48     void
49     DeleteForwardPort (lldb::pid_t pid);
50 
51     Error
52     MakeConnectURL(const lldb::pid_t pid,
53                    const uint16_t remote_port,
54                    const char* remote_socket_name,
55                    std::string& connect_url);
56 
57 private:
58     DISALLOW_COPY_AND_ASSIGN (PlatformAndroidRemoteGDBServer);
59 };
60 
61 } // namespace platform_android
62 } // namespace lldb_private
63 
64 #endif // liblldb_PlatformAndroidRemoteGDBServer_h_
65