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/Utility/Status.h"
18 #include "llvm/ADT/SmallVector.h"
19 #include "llvm/ADT/StringRef.h"
21 namespace lldb_private {
26 virtual Status CreateNew(bool child_process_inherit) = 0;
27 virtual Status CreateNew(llvm::StringRef name,
28 bool child_process_inherit) = 0;
29 virtual Status CreateWithUniqueName(llvm::StringRef prefix,
30 bool child_process_inherit,
31 llvm::SmallVectorImpl<char> &name) = 0;
33 virtual Status OpenAsReader(llvm::StringRef name,
34 bool child_process_inherit) = 0;
36 Status OpenAsWriter(llvm::StringRef name, bool child_process_inherit);
38 OpenAsWriterWithTimeout(llvm::StringRef name, bool child_process_inherit,
39 const std::chrono::microseconds &timeout) = 0;
41 virtual bool CanRead() const = 0;
42 virtual bool CanWrite() const = 0;
44 virtual int GetReadFileDescriptor() const = 0;
45 virtual int GetWriteFileDescriptor() const = 0;
46 virtual int ReleaseReadFileDescriptor() = 0;
47 virtual int ReleaseWriteFileDescriptor() = 0;
48 virtual void CloseReadFileDescriptor() = 0;
49 virtual void CloseWriteFileDescriptor() = 0;
51 // Close both descriptors
52 virtual void Close() = 0;
55 virtual Status Delete(llvm::StringRef name) = 0;
57 virtual Status Write(const void *buf, size_t size, size_t &bytes_written) = 0;
58 virtual Status ReadWithTimeout(void *buf, size_t size,
59 const std::chrono::microseconds &timeout,
60 size_t &bytes_read) = 0;
61 Status Read(void *buf, size_t size, size_t &bytes_read);