File indexing completed on 2026-05-10 08:42:49
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef LLDB_HOST_PIPEBASE_H
0011 #define LLDB_HOST_PIPEBASE_H
0012
0013 #include <chrono>
0014 #include <string>
0015
0016 #include "lldb/Utility/Status.h"
0017 #include "llvm/ADT/SmallVector.h"
0018 #include "llvm/ADT/StringRef.h"
0019
0020 namespace lldb_private {
0021 class PipeBase {
0022 public:
0023 virtual ~PipeBase();
0024
0025 virtual Status CreateNew(bool child_process_inherit) = 0;
0026 virtual Status CreateNew(llvm::StringRef name,
0027 bool child_process_inherit) = 0;
0028 virtual Status CreateWithUniqueName(llvm::StringRef prefix,
0029 bool child_process_inherit,
0030 llvm::SmallVectorImpl<char> &name) = 0;
0031
0032 virtual Status OpenAsReader(llvm::StringRef name,
0033 bool child_process_inherit) = 0;
0034
0035 Status OpenAsWriter(llvm::StringRef name, bool child_process_inherit);
0036 virtual Status
0037 OpenAsWriterWithTimeout(llvm::StringRef name, bool child_process_inherit,
0038 const std::chrono::microseconds &timeout) = 0;
0039
0040 virtual bool CanRead() const = 0;
0041 virtual bool CanWrite() const = 0;
0042
0043 virtual lldb::pipe_t GetReadPipe() const = 0;
0044 virtual lldb::pipe_t GetWritePipe() const = 0;
0045
0046 virtual int GetReadFileDescriptor() const = 0;
0047 virtual int GetWriteFileDescriptor() const = 0;
0048 virtual int ReleaseReadFileDescriptor() = 0;
0049 virtual int ReleaseWriteFileDescriptor() = 0;
0050 virtual void CloseReadFileDescriptor() = 0;
0051 virtual void CloseWriteFileDescriptor() = 0;
0052
0053
0054 virtual void Close() = 0;
0055
0056
0057 virtual Status Delete(llvm::StringRef name) = 0;
0058
0059 virtual Status WriteWithTimeout(const void *buf, size_t size,
0060 const std::chrono::microseconds &timeout,
0061 size_t &bytes_written) = 0;
0062 Status Write(const void *buf, size_t size, size_t &bytes_written);
0063 virtual Status ReadWithTimeout(void *buf, size_t size,
0064 const std::chrono::microseconds &timeout,
0065 size_t &bytes_read) = 0;
0066 Status Read(void *buf, size_t size, size_t &bytes_read);
0067 };
0068 }
0069
0070 #endif