1 //===-- SBPlatform.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 LLDB_SBPlatform_h_ 11 #define LLDB_SBPlatform_h_ 12 13 #include "lldb/API/SBDefines.h" 14 15 #include <functional> 16 17 struct PlatformConnectOptions; 18 struct PlatformShellCommand; 19 20 namespace lldb { 21 22 class SBLaunchInfo; 23 24 class LLDB_API SBPlatformConnectOptions { 25 public: 26 SBPlatformConnectOptions(const char *url); 27 28 SBPlatformConnectOptions(const SBPlatformConnectOptions &rhs); 29 30 ~SBPlatformConnectOptions(); 31 32 void operator=(const SBPlatformConnectOptions &rhs); 33 34 const char *GetURL(); 35 36 void SetURL(const char *url); 37 38 bool GetRsyncEnabled(); 39 40 void EnableRsync(const char *options, const char *remote_path_prefix, 41 bool omit_remote_hostname); 42 43 void DisableRsync(); 44 45 const char *GetLocalCacheDirectory(); 46 47 void SetLocalCacheDirectory(const char *path); 48 49 protected: 50 PlatformConnectOptions *m_opaque_ptr; 51 }; 52 53 class LLDB_API SBPlatformShellCommand { 54 public: 55 SBPlatformShellCommand(const char *shell_command); 56 57 SBPlatformShellCommand(const SBPlatformShellCommand &rhs); 58 59 ~SBPlatformShellCommand(); 60 61 void Clear(); 62 63 const char *GetCommand(); 64 65 void SetCommand(const char *shell_command); 66 67 const char *GetWorkingDirectory(); 68 69 void SetWorkingDirectory(const char *path); 70 71 uint32_t GetTimeoutSeconds(); 72 73 void SetTimeoutSeconds(uint32_t sec); 74 75 int GetSignal(); 76 77 int GetStatus(); 78 79 const char *GetOutput(); 80 81 protected: 82 friend class SBPlatform; 83 84 PlatformShellCommand *m_opaque_ptr; 85 }; 86 87 class LLDB_API SBPlatform { 88 public: 89 SBPlatform(); 90 91 SBPlatform(const char *platform_name); 92 93 ~SBPlatform(); 94 95 bool IsValid() const; 96 97 void Clear(); 98 99 const char *GetWorkingDirectory(); 100 101 bool SetWorkingDirectory(const char *path); 102 103 const char *GetName(); 104 105 SBError ConnectRemote(SBPlatformConnectOptions &connect_options); 106 107 void DisconnectRemote(); 108 109 bool IsConnected(); 110 111 //---------------------------------------------------------------------- 112 // The following functions will work if the platform is connected 113 //---------------------------------------------------------------------- 114 const char *GetTriple(); 115 116 const char *GetHostname(); 117 118 const char *GetOSBuild(); 119 120 const char *GetOSDescription(); 121 122 uint32_t GetOSMajorVersion(); 123 124 uint32_t GetOSMinorVersion(); 125 126 uint32_t GetOSUpdateVersion(); 127 128 SBError Put(SBFileSpec &src, SBFileSpec &dst); 129 130 SBError Get(SBFileSpec &src, SBFileSpec &dst); 131 132 SBError Install(SBFileSpec &src, SBFileSpec &dst); 133 134 SBError Run(SBPlatformShellCommand &shell_command); 135 136 SBError Launch(SBLaunchInfo &launch_info); 137 138 SBError Kill(const lldb::pid_t pid); 139 140 SBError 141 MakeDirectory(const char *path, 142 uint32_t file_permissions = eFilePermissionsDirectoryDefault); 143 144 uint32_t GetFilePermissions(const char *path); 145 146 SBError SetFilePermissions(const char *path, uint32_t file_permissions); 147 148 SBUnixSignals GetUnixSignals() const; 149 150 protected: 151 friend class SBDebugger; 152 friend class SBTarget; 153 154 lldb::PlatformSP GetSP() const; 155 156 void SetSP(const lldb::PlatformSP &platform_sp); 157 158 SBError ExecuteConnected( 159 const std::function<lldb_private::Status(const lldb::PlatformSP &)> 160 &func); 161 162 lldb::PlatformSP m_opaque_sp; 163 }; 164 165 } // namespace lldb 166 167 #endif // LLDB_SBPlatform_h_ 168