LLDB mainline
PipeBase.h
Go to the documentation of this file.
1//===-- PipeBase.h -----------------------------------------------*- C++
2//-*-===//
3//
4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5// See https://llvm.org/LICENSE.txt for license information.
6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLDB_HOST_PIPEBASE_H
11#define LLDB_HOST_PIPEBASE_H
12
13#include "lldb/Utility/Status.h"
15#include "llvm/ADT/SmallVector.h"
16#include "llvm/ADT/StringRef.h"
17#include "llvm/Support/Error.h"
18
19namespace lldb_private {
20class PipeBase {
21public:
22 virtual ~PipeBase();
23
24 virtual Status CreateNew() = 0;
25 virtual Status CreateNew(llvm::StringRef name) = 0;
26 virtual Status CreateWithUniqueName(llvm::StringRef prefix,
28
29 virtual Status OpenAsReader(llvm::StringRef name) = 0;
30
31 virtual llvm::Error OpenAsWriter(llvm::StringRef name,
32 const Timeout<std::micro> &timeout) = 0;
33
34 virtual bool CanRead() const = 0;
35 virtual bool CanWrite() const = 0;
36
37 virtual lldb::pipe_t GetReadPipe() const = 0;
38 virtual lldb::pipe_t GetWritePipe() const = 0;
39
40 virtual int GetReadFileDescriptor() const = 0;
41 virtual int GetWriteFileDescriptor() const = 0;
42 virtual int ReleaseReadFileDescriptor() = 0;
43 virtual int ReleaseWriteFileDescriptor() = 0;
44 virtual void CloseReadFileDescriptor() = 0;
45 virtual void CloseWriteFileDescriptor() = 0;
46
47 // Close both descriptors
48 virtual void Close() = 0;
49
50 // Delete named pipe.
51 virtual Status Delete(llvm::StringRef name) = 0;
52
53 virtual llvm::Expected<size_t>
54 Write(const void *buf, size_t size,
55 const Timeout<std::micro> &timeout = std::nullopt) = 0;
56
57 virtual llvm::Expected<size_t>
58 Read(void *buf, size_t size,
59 const Timeout<std::micro> &timeout = std::nullopt) = 0;
60};
61}
62
63#endif
virtual Status CreateWithUniqueName(llvm::StringRef prefix, llvm::SmallVectorImpl< char > &name)=0
virtual Status Delete(llvm::StringRef name)=0
virtual int GetReadFileDescriptor() const =0
virtual int GetWriteFileDescriptor() const =0
virtual void Close()=0
virtual llvm::Error OpenAsWriter(llvm::StringRef name, const Timeout< std::micro > &timeout)=0
virtual void CloseWriteFileDescriptor()=0
virtual int ReleaseReadFileDescriptor()=0
virtual llvm::Expected< size_t > Write(const void *buf, size_t size, const Timeout< std::micro > &timeout=std::nullopt)=0
virtual bool CanWrite() const =0
virtual Status CreateNew()=0
virtual llvm::Expected< size_t > Read(void *buf, size_t size, const Timeout< std::micro > &timeout=std::nullopt)=0
virtual void CloseReadFileDescriptor()=0
virtual bool CanRead() const =0
virtual Status CreateNew(llvm::StringRef name)=0
virtual int ReleaseWriteFileDescriptor()=0
virtual Status OpenAsReader(llvm::StringRef name)=0
virtual lldb::pipe_t GetWritePipe() const =0
virtual lldb::pipe_t GetReadPipe() const =0
An error handling class.
Definition Status.h:118
A class that represents a running process on the host machine.
int pipe_t
Definition lldb-types.h:64