]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/include/lldb/Host/PipeBase.h
MFV r337200:
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / 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/Utility/Status.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 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;
32
33   virtual Status OpenAsReader(llvm::StringRef name,
34                               bool child_process_inherit) = 0;
35
36   Status OpenAsWriter(llvm::StringRef name, bool child_process_inherit);
37   virtual Status
38   OpenAsWriterWithTimeout(llvm::StringRef name, bool child_process_inherit,
39                           const std::chrono::microseconds &timeout) = 0;
40
41   virtual bool CanRead() const = 0;
42   virtual bool CanWrite() const = 0;
43
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;
50
51   // Close both descriptors
52   virtual void Close() = 0;
53
54   // Delete named pipe.
55   virtual Status Delete(llvm::StringRef name) = 0;
56
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);
62 };
63 }
64
65 #endif