uvco 0.1
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Private Member Functions | List of all members
uvco::TtyStream Class Reference

#include <stream.h>

Inheritance diagram for uvco::TtyStream:
Inheritance graph
[legend]
Collaboration diagram for uvco::TtyStream:
Collaboration graph
[legend]

Public Member Functions

 TtyStream (TtyStream &&other)=default
 
 TtyStream (const TtyStream &other)=delete
 
TtyStreamoperator= (TtyStream &&)=default
 
TtyStreamoperator= (const TtyStream &)=delete
 
 ~TtyStream () override=default
 
- Public Member Functions inherited from uvco::StreamBase
template<typename Stream >
 StreamBase (std::unique_ptr< Stream > stream)
 
 StreamBase (const StreamBase &)=delete
 
 StreamBase (StreamBase &&)=default
 
StreamBaseoperator= (const StreamBase &)=delete
 
StreamBaseoperator= (StreamBase &&)=default
 
virtual ~StreamBase ()
 
Promise< std::optional< std::string > > read (size_t maxSize=defaultMaxReadSize)
 
Promise< size_t > read (std::span< char > buffer)
 
Promise< size_t > write (std::string buf)
 
Promise< void > shutdown ()
 
Promise< void > close ()
 
const uv_stream_t * underlying () const
 Return the underlying UV stream object.
 

Static Public Member Functions

static TtyStream tty (const Loop &loop, int fd)
 
static TtyStream stdin (const Loop &loop)
 
static TtyStream stdout (const Loop &loop)
 
static TtyStream stderr (const Loop &loop)
 

Private Member Functions

 TtyStream (std::unique_ptr< uv_tty_t > stream)
 

Additional Inherited Members

- Static Public Attributes inherited from uvco::StreamBase
static constexpr size_t defaultMaxReadSize = 4096
 
- Protected Member Functions inherited from uvco::StreamBase
uv_stream_t & stream ()
 
void destroyStream ()
 

Detailed Description

A stream referring to stdin/stdout/stderr. Should be created using one of the static member functions, each of which creates a TTY stream referring to the respective standard stream.

Note: these must be TTYs; input/output redirection may cause failures in libuv. Normal files are not yet implemented.

Constructor & Destructor Documentation

◆ TtyStream() [1/3]

uvco::TtyStream::TtyStream ( TtyStream &&  other)
default

◆ TtyStream() [2/3]

uvco::TtyStream::TtyStream ( const TtyStream other)
delete

◆ ~TtyStream()

uvco::TtyStream::~TtyStream ( )
overridedefault

◆ TtyStream() [3/3]

uvco::TtyStream::TtyStream ( std::unique_ptr< uv_tty_t >  stream)
inlineexplicitprivate
183 : StreamBase{std::move(stream)} {}
uv_stream_t & stream()
Definition stream.h:91
StreamBase(std::unique_ptr< Stream > stream)
Definition stream.h:35

Member Function Documentation

◆ operator=() [1/2]

TtyStream & uvco::TtyStream::operator= ( const TtyStream )
delete

◆ operator=() [2/2]

TtyStream & uvco::TtyStream::operator= ( TtyStream &&  )
default

◆ stderr()

static TtyStream uvco::TtyStream::stderr ( const Loop loop)
inlinestatic
179{ return tty(loop, 2); }
static TtyStream tty(const Loop &loop, int fd)
Definition stream.cc:40

◆ stdin()

static TtyStream uvco::TtyStream::stdin ( const Loop loop)
inlinestatic
177{ return tty(loop, 0); }

◆ stdout()

static TtyStream uvco::TtyStream::stdout ( const Loop loop)
inlinestatic
178{ return tty(loop, 1); }

◆ tty()

TtyStream uvco::TtyStream::tty ( const Loop loop,
int  fd 
)
static
40 {
41 auto tty = std::make_unique<uv_tty_t>();
42 uv_status status = uv_tty_init(loop.uvloop(), tty.get(), fd, 0);
43 if (status != 0) {
44 throw UvcoException(status,
45 fmt::format("opening TTY with fd {} failed", fd));
46 }
47 return TtyStream{std::move(tty)};
48}
TtyStream(TtyStream &&other)=default
int uv_status
Result of a libuv operation, an errno error code.
Definition internal_utils.h:22

The documentation for this class was generated from the following files: