]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - include/lldb/Host/PipeBase.h
Vendor import of lldb trunk r290819:
[FreeBSD/FreeBSD.git] / include / lldb / Host / PipeBase.h
1 //===-- PipeBase.h -----------------------------------------------*- C++
2 //-*-===//
3 //
4 //                     The LLVM Compiler Infrastructure
5 //
6 // This file is distributed under the University of Illinois Open Source
7 // License. See LICENSE.TXT for details.
8 //
9 //===----------------------------------------------------------------------===//
10
11 #ifndef liblldb_Host_PipeBase_h_
12 #define liblldb_Host_PipeBase_h_
13
14 #include <chrono>
15 #include <string>
16
17 #include "lldb/Core/Error.h"
18 #include "llvm/ADT/SmallVector.h"
19 #include "llvm/ADT/StringRef.h"
20
21 namespace lldb_private {
22 class PipeBase {
23 public:
24   virtual ~PipeBase();
25
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;
31
32   virtual Error OpenAsReader(llvm::StringRef name,
33                              bool child_process_inherit) = 0;
34
35   Error OpenAsWriter(llvm::StringRef name, bool child_process_inherit);
36   virtual Error
37   OpenAsWriterWithTimeout(llvm::StringRef name, bool child_process_inherit,
38                           const std::chrono::microseconds &timeout) = 0;
39
40   virtual bool CanRead() const = 0;
41   virtual bool CanWrite() const = 0;
42
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;
49
50   // Close both descriptors
51   virtual void Close() = 0;
52
53   // Delete named pipe.
54   virtual Error Delete(llvm::StringRef name) = 0;
55
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);
61 };
62 }
63
64 #endif