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

#include <tcp_stream.h>

Inheritance diagram for uvco::TcpStream:
Collaboration diagram for uvco::TcpStream:

Public Member Functions

 TcpStream (std::unique_ptr< uv_tcp_t > tcp)
 TcpStream (const TcpStream &)=delete
 TcpStream (TcpStream &&)=default
TcpStreamoperator= (const TcpStream &)=delete
TcpStreamoperator= (TcpStream &&)=default
 ~TcpStream () override=default
AddressHandle getPeerName () const
 Return address of peer.
AddressHandle getSockName () const
 Return bound address of socket.
void keepAlive (bool enable, unsigned int delay=10)
 Set keep-alive delay in seconds.
void noDelay (bool enable)
 Enable Nagle's algorithm.
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

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 a TCP connection.

Constructor & Destructor Documentation

◆ TcpStream() [1/3]

uvco::TcpStream::TcpStream ( std::unique_ptr< uv_tcp_t > tcp)
inlineexplicit
25 : StreamBase{std::move(tcp)} {}
StreamBase(std::unique_ptr< Stream > stream)
Definition stream.h:37

◆ TcpStream() [2/3]

uvco::TcpStream::TcpStream ( const TcpStream & )
delete

◆ TcpStream() [3/3]

uvco::TcpStream::TcpStream ( TcpStream && )
default

◆ ~TcpStream()

uvco::TcpStream::~TcpStream ( )
overridedefault

Member Function Documentation

◆ getPeerName()

AddressHandle uvco::TcpStream::getPeerName ( ) const
nodiscard

Return address of peer.

24 {
25 struct sockaddr_storage addr{};
26 int namelen = sizeof(addr);
27 uv_tcp_getpeername((const uv_tcp_t *)underlying(), (struct sockaddr *)&addr,
28 &namelen);
29 const AddressHandle address{(struct sockaddr *)&addr};
30 return address;
31};
const uv_stream_t * underlying() const
Return the underlying UV stream object.
Definition stream.h:100

◆ getSockName()

AddressHandle uvco::TcpStream::getSockName ( ) const
nodiscard

Return bound address of socket.

15 {
16 struct sockaddr_storage addr{};
17 int namelen = sizeof(addr);
18 uv_tcp_getsockname((const uv_tcp_t *)underlying(), (struct sockaddr *)&addr,
19 &namelen);
20 const AddressHandle address{(struct sockaddr *)&addr};
21 return address;
22}

◆ keepAlive()

void uvco::TcpStream::keepAlive ( bool enable,
unsigned int delay = 10 )

Set keep-alive delay in seconds.

33 {
34 uv_tcp_keepalive((uv_tcp_t *)&stream(), static_cast<int>(enable), delay);
35}
uv_stream_t & stream()
Definition stream.h:105

◆ noDelay()

void uvco::TcpStream::noDelay ( bool enable)

Enable Nagle's algorithm.

37 {
38 uv_tcp_nodelay((uv_tcp_t *)&stream(), static_cast<int>(enable));
39}

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

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