//===-- SBPlatform.h --------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLDB_SBPlatform_h_ #define LLDB_SBPlatform_h_ #include "lldb/API/SBDefines.h" #include struct PlatformConnectOptions; struct PlatformShellCommand; namespace lldb { class SBLaunchInfo; class LLDB_API SBPlatformConnectOptions { public: SBPlatformConnectOptions(const char *url); SBPlatformConnectOptions(const SBPlatformConnectOptions &rhs); ~SBPlatformConnectOptions(); SBPlatformConnectOptions &operator=(const SBPlatformConnectOptions &rhs); const char *GetURL(); void SetURL(const char *url); bool GetRsyncEnabled(); void EnableRsync(const char *options, const char *remote_path_prefix, bool omit_remote_hostname); void DisableRsync(); const char *GetLocalCacheDirectory(); void SetLocalCacheDirectory(const char *path); protected: PlatformConnectOptions *m_opaque_ptr; }; class LLDB_API SBPlatformShellCommand { public: SBPlatformShellCommand(const char *shell_command); SBPlatformShellCommand(const SBPlatformShellCommand &rhs); SBPlatformShellCommand &operator=(const SBPlatformShellCommand &rhs); ~SBPlatformShellCommand(); void Clear(); const char *GetCommand(); void SetCommand(const char *shell_command); const char *GetWorkingDirectory(); void SetWorkingDirectory(const char *path); uint32_t GetTimeoutSeconds(); void SetTimeoutSeconds(uint32_t sec); int GetSignal(); int GetStatus(); const char *GetOutput(); protected: friend class SBPlatform; PlatformShellCommand *m_opaque_ptr; }; class LLDB_API SBPlatform { public: SBPlatform(); SBPlatform(const char *platform_name); SBPlatform(const SBPlatform &rhs); SBPlatform &operator=(const SBPlatform &rhs); ~SBPlatform(); explicit operator bool() const; bool IsValid() const; void Clear(); const char *GetWorkingDirectory(); bool SetWorkingDirectory(const char *path); const char *GetName(); SBError ConnectRemote(SBPlatformConnectOptions &connect_options); void DisconnectRemote(); bool IsConnected(); // The following functions will work if the platform is connected const char *GetTriple(); const char *GetHostname(); const char *GetOSBuild(); const char *GetOSDescription(); uint32_t GetOSMajorVersion(); uint32_t GetOSMinorVersion(); uint32_t GetOSUpdateVersion(); SBError Put(SBFileSpec &src, SBFileSpec &dst); SBError Get(SBFileSpec &src, SBFileSpec &dst); SBError Install(SBFileSpec &src, SBFileSpec &dst); SBError Run(SBPlatformShellCommand &shell_command); SBError Launch(SBLaunchInfo &launch_info); SBError Kill(const lldb::pid_t pid); SBError MakeDirectory(const char *path, uint32_t file_permissions = eFilePermissionsDirectoryDefault); uint32_t GetFilePermissions(const char *path); SBError SetFilePermissions(const char *path, uint32_t file_permissions); SBUnixSignals GetUnixSignals() const; protected: friend class SBDebugger; friend class SBTarget; lldb::PlatformSP GetSP() const; void SetSP(const lldb::PlatformSP &platform_sp); SBError ExecuteConnected( const std::function &func); lldb::PlatformSP m_opaque_sp; }; } // namespace lldb #endif // LLDB_SBPlatform_h_