1 //===-- PipeBase.h -----------------------------------------------*- C++
4 // The LLVM Compiler Infrastructure
6 // This file is distributed under the University of Illinois Open Source
7 // License. See LICENSE.TXT for details.
9 //===----------------------------------------------------------------------===//
11 #ifndef liblldb_Host_PipeBase_h_
12 #define liblldb_Host_PipeBase_h_
17 #include "lldb/Core/Error.h"
18 #include "llvm/ADT/SmallVector.h"
19 #include "llvm/ADT/StringRef.h"
21 namespace lldb_private {
26 virtual Error CreateNew(bool child_process_inherit) = 0;
27 virtual Error CreateNew(llvm::StringRef name, bool child_process_inherit) = 0;
28 virtual Error CreateWithUniqueName(llvm::StringRef prefix,
29 bool child_process_inherit,
30 llvm::SmallVectorImpl<char> &name) = 0;
32 virtual Error OpenAsReader(llvm::StringRef name,
33 bool child_process_inherit) = 0;
35 Error OpenAsWriter(llvm::StringRef name, bool child_process_inherit);
37 OpenAsWriterWithTimeout(llvm::StringRef name, bool child_process_inherit,
38 const std::chrono::microseconds &timeout) = 0;
40 virtual bool CanRead() const = 0;
41 virtual bool CanWrite() const = 0;
43 virtual int GetReadFileDescriptor() const = 0;
44 virtual int GetWriteFileDescriptor() const = 0;
45 virtual int ReleaseReadFileDescriptor() = 0;
46 virtual int ReleaseWriteFileDescriptor() = 0;
47 virtual void CloseReadFileDescriptor() = 0;
48 virtual void CloseWriteFileDescriptor() = 0;
50 // Close both descriptors
51 virtual void Close() = 0;
54 virtual Error Delete(llvm::StringRef name) = 0;
56 virtual Error Write(const void *buf, size_t size, size_t &bytes_written) = 0;
57 virtual Error ReadWithTimeout(void *buf, size_t size,
58 const std::chrono::microseconds &timeout,
59 size_t &bytes_read) = 0;
60 Error Read(void *buf, size_t size, size_t &bytes_read);