| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- //===-- PipeBase.h -----------------------------------------------*- C++
- //-*-===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLDB_HOST_PIPEBASE_H
- #define LLDB_HOST_PIPEBASE_H
- #include <chrono>
- #include <string>
- #include "lldb/Utility/Status.h"
- #include "llvm/ADT/SmallVector.h"
- #include "llvm/ADT/StringRef.h"
- namespace lldb_private {
- class PipeBase {
- public:
- virtual ~PipeBase();
- virtual Status CreateNew(bool child_process_inherit) = 0;
- virtual Status CreateNew(llvm::StringRef name,
- bool child_process_inherit) = 0;
- virtual Status CreateWithUniqueName(llvm::StringRef prefix,
- bool child_process_inherit,
- llvm::SmallVectorImpl<char> &name) = 0;
- virtual Status OpenAsReader(llvm::StringRef name,
- bool child_process_inherit) = 0;
- Status OpenAsWriter(llvm::StringRef name, bool child_process_inherit);
- virtual Status
- OpenAsWriterWithTimeout(llvm::StringRef name, bool child_process_inherit,
- const std::chrono::microseconds &timeout) = 0;
- virtual bool CanRead() const = 0;
- virtual bool CanWrite() const = 0;
- virtual lldb::pipe_t GetReadPipe() const = 0;
- virtual lldb::pipe_t GetWritePipe() const = 0;
- virtual int GetReadFileDescriptor() const = 0;
- virtual int GetWriteFileDescriptor() const = 0;
- virtual int ReleaseReadFileDescriptor() = 0;
- virtual int ReleaseWriteFileDescriptor() = 0;
- virtual void CloseReadFileDescriptor() = 0;
- virtual void CloseWriteFileDescriptor() = 0;
- // Close both descriptors
- virtual void Close() = 0;
- // Delete named pipe.
- virtual Status Delete(llvm::StringRef name) = 0;
- virtual Status Write(const void *buf, size_t size, size_t &bytes_written) = 0;
- virtual Status ReadWithTimeout(void *buf, size_t size,
- const std::chrono::microseconds &timeout,
- size_t &bytes_read) = 0;
- Status Read(void *buf, size_t size, size_t &bytes_read);
- };
- }
- #endif
|