Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:42:49

0001 //===-- PipeBase.h -----------------------------------------------*- C++
0002 //-*-===//
0003 //
0004 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0005 // See https://llvm.org/LICENSE.txt for license information.
0006 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
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   // Close both descriptors
0054   virtual void Close() = 0;
0055 
0056   // Delete named pipe.
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