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     virtual
31     ~PlatformAndroidRemoteGDBServer ();
32 
33     Error
34     ConnectRemote (Args& args) override;
35 
36     Error
37     DisconnectRemote () override;
38 
39 protected:
40     std::string m_device_id;
41     std::map<lldb::pid_t, uint16_t> m_port_forwards;
42 
43     uint16_t
44     LaunchGDBserverAndGetPort (lldb::pid_t &pid) override;
45 
46     bool
47     KillSpawnedProcess (lldb::pid_t pid) override;
48 
49     void
50     DeleteForwardPort (lldb::pid_t pid);
51 
52     std::string
53     MakeUrl(const char* scheme,
54             const char* hostname,
55             uint16_t port,
56             const char* path) override;
57 
58     Error
59     SetPortForwarding(const lldb::pid_t pid, const uint16_t remote_port, uint16_t &local_port);
60 
61 private:
62     DISALLOW_COPY_AND_ASSIGN (PlatformAndroidRemoteGDBServer);
63 
64 };
65 
66 } // namespace platform_android
67 } // namespace lldb_private
68 
69 #endif  // liblldb_PlatformAndroidRemoteGDBServer_h_
70