uvco 0.1
Loading...
Searching...
No Matches
uvco::TtyStream Class Reference

#include <stream.h>

Inheritance diagram for uvco::TtyStream:
Collaboration diagram for uvco::TtyStream:

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< size_t > writeBorrowed (std::span< const char > buf)
Promise< void > shutdown ()
void close ()
const uv_stream_t * underlying () const
 Return the underlying UV stream object.
uv_os_fd_t fd () const

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 = 4080
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
144 : StreamBase{std::move(stream)} {}
uv_stream_t & stream()
Definition stream.h:105
StreamBase(std::unique_ptr< Stream > stream)
Definition stream.h:37

Member Function Documentation

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ stderr()

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

◆ stdin()

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

◆ stdout()

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

◆ tty()

TtyStream uvco::TtyStream::tty ( const Loop & loop,
int fd )
static
86 {
87 auto tty = std::make_unique<uv_tty_t>();
88 uv_status status = uv_tty_init(loop.uvloop(), tty.get(), fd, 0);
89 if (status != 0) {
90 throw UvcoException(status,
91 fmt::format("opening TTY with fd {} failed", fd));
92 }
93 return TtyStream{std::move(tty)};
94}
uv_os_fd_t fd() const
Definition stream.cc:343
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: