uvw 2.12.1
Loading...
Searching...
No Matches
uvw::StreamHandle< T, U > Class Template Reference

The StreamHandle handle. More...

#include <stream.h>

Inheritance diagram for uvw::StreamHandle< T, U >:
Collaboration diagram for uvw::StreamHandle< T, U >:

Public Member Functions

void shutdown ()
 Shutdowns the outgoing (write) side of a duplex stream.
 
void listen (int backlog=DEFAULT_BACKLOG)
 Starts listening for incoming connections.
 
template<typename S >
void accept (S &ref)
 Accepts incoming connections.
 
void read ()
 Starts reading data from an incoming stream.
 
void stop ()
 Stops reading data from the stream.
 
template<typename Deleter >
void write (std::unique_ptr< char[], Deleter > data, unsigned int len)
 Writes data to the stream.
 
void write (char *data, unsigned int len)
 Writes data to the stream.
 
template<typename S , typename Deleter >
void write (S &send, std::unique_ptr< char[], Deleter > data, unsigned int len)
 Extended write function for sending handles over a pipe handle.
 
template<typename S >
void write (S &send, char *data, unsigned int len)
 Extended write function for sending handles over a pipe handle.
 
int tryWrite (std::unique_ptr< char[]> data, unsigned int len)
 Queues a write request if it can be completed immediately.
 
template<typename V , typename W >
int tryWrite (std::unique_ptr< char[]> data, unsigned int len, StreamHandle< V, W > &send)
 Queues a write request if it can be completed immediately.
 
int tryWrite (char *data, unsigned int len)
 Queues a write request if it can be completed immediately.
 
template<typename V , typename W >
int tryWrite (char *data, unsigned int len, StreamHandle< V, W > &send)
 Queues a write request if it can be completed immediately.
 
bool readable () const noexcept
 Checks if the stream is readable.
 
bool writable () const noexcept
 Checks if the stream is writable.
 
bool blocking (bool enable=false)
 Enables or disables blocking mode for a stream.
 
size_t writeQueueSize () const noexcept
 Gets the amount of queued bytes waiting to be sent.
 
- Public Member Functions inherited from uvw::Handle< T, U >
HandleCategory category () const noexcept
 Gets the category of the handle.
 
HandleType type () const noexcept
 Gets the type of the handle.
 
bool active () const noexcept
 Checks if the handle is active.
 
bool closing () const noexcept
 Checks if a handle is closing or closed.
 
void close () noexcept
 Request handle to be closed.
 
void reference () noexcept
 Reference the given handle.
 
void unreference () noexcept
 Unreference the given handle.
 
bool referenced () const noexcept
 Checks if the given handle referenced.
 
std::size_t size () const noexcept
 Returns the size of the underlying handle type.
 
int sendBufferSize ()
 Gets the size of the send buffer used for the socket.
 
bool sendBufferSize (int value)
 Sets the size of the send buffer used for the socket.
 
int recvBufferSize ()
 Gets the size of the receive buffer used for the socket.
 
bool recvBufferSize (int value)
 Sets the size of the receive buffer used for the socket.
 
OSFileDescriptor fd () const
 Gets the platform dependent file descriptor equivalent.
 
- Public Member Functions inherited from uvw::Resource< T, U >
template<typename R = void>
std::shared_ptr< R > data () const
 Gets user-defined data. uvw won't use this field in any case.
 
void data (std::shared_ptr< void > uData)
 Sets arbitrary data. uvw won't use this field in any case.
 
- Public Member Functions inherited from uvw::UnderlyingType< T, U >
Looploop () const noexcept
 Gets the loop from which the resource was originated.
 
const U * raw () const noexcept
 Gets the underlying raw data structure.
 
U * raw () noexcept
 Gets the underlying raw data structure.
 
- Public Member Functions inherited from uvw::Emitter< T >
template<typename E >
Connection< E > on (Listener< E > f)
 Registers a long-lived listener with the event emitter.
 
template<typename E >
Connection< E > once (Listener< E > f)
 Registers a short-lived listener with the event emitter.
 
template<typename E >
void erase (Connection< E > conn) noexcept
 Disconnects a listener from the event emitter.
 
template<typename E >
void clear () noexcept
 Disconnects all the listeners for the given event type.
 
void clear () noexcept
 Disconnects all the listeners.
 
template<typename E >
bool empty () const noexcept
 Checks if there are listeners registered for the specific event.
 
bool empty () const noexcept
 Checks if there are listeners registered with the event emitter.
 

Additional Inherited Members

- Public Types inherited from uvw::Emitter< T >
- Static Public Member Functions inherited from uvw::UnderlyingType< T, U >
template<typename... Args>
static std::shared_ptr< T > create (Args &&...args)
 Creates a new resource of the given type.
 
- Protected Types inherited from uvw::Resource< T, U >
- Protected Member Functions inherited from uvw::Handle< T, U >
- Protected Member Functions inherited from uvw::Resource< T, U >
- Protected Member Functions inherited from uvw::UnderlyingType< T, U >
- Protected Member Functions inherited from uvw::Emitter< T >
- Static Protected Member Functions inherited from uvw::Handle< T, U >

Detailed Description

template<typename T, typename U>
class uvw::StreamHandle< T, U >

The StreamHandle handle.

Stream handles provide an abstraction of a duplex communication channel. StreamHandle is an intermediate type, uvw provides three stream implementations: TCPHandle, PipeHandle and TTYHandle.

Definition at line 113 of file stream.h.

Member Function Documentation

◆ accept()

template<typename T , typename U >
template<typename S >
void uvw::StreamHandle< T, U >::accept ( S & ref)
inline

Accepts incoming connections.

This call is used in conjunction with listen() to accept incoming connections. Call this function after receiving a ListenEvent event to accept the connection. Before calling this function, the submitted handle must be initialized.
An ErrorEvent event will be emitted in case of errors.

When the ListenEvent event is emitted it is guaranteed that this function will complete successfully the first time. If you attempt to use it more than once, it may fail.
It is suggested to only call this function once per ListenEvent event.

Note
Both the handles must be running on the same loop.
Parameters
refAn initialized handle to be used to accept the connection.

Definition at line 205 of file stream.h.

◆ blocking()

template<typename T , typename U >
bool uvw::StreamHandle< T, U >::blocking ( bool enable = false)
inline

Enables or disables blocking mode for a stream.

When blocking mode is enabled all writes complete synchronously. The interface remains unchanged otherwise, e.g. completion or failure of the operation will still be reported through events which are emitted asynchronously.

See the official documentation for further details.

Parameters
enableTrue to enable blocking mode, false otherwise.
Returns
True in case of success, false otherwise.

Definition at line 463 of file stream.h.

◆ listen()

template<typename T , typename U >
void uvw::StreamHandle< T, U >::listen ( int backlog = DEFAULT_BACKLOG)
inline

Starts listening for incoming connections.

When a new incoming connection is received, a ListenEvent event is emitted.
An ErrorEvent event will be emitted in case of errors.

Parameters
backlogIndicates the number of connections the kernel might queue, same as listen(2).

Definition at line 181 of file stream.h.

◆ read()

template<typename T , typename U >
void uvw::StreamHandle< T, U >::read ( )
inline

Starts reading data from an incoming stream.

A DataEvent event will be emitted several times until there is no more data to read or stop() is called.
An EndEvent event will be emitted when there is no more data to read.

Definition at line 216 of file stream.h.

◆ readable()

template<typename T , typename U >
bool uvw::StreamHandle< T, U >::readable ( ) const
inlinenoexcept

Checks if the stream is readable.

Returns
True if the stream is readable, false otherwise.

Definition at line 436 of file stream.h.

◆ shutdown()

template<typename T , typename U >
void uvw::StreamHandle< T, U >::shutdown ( )
inline

Shutdowns the outgoing (write) side of a duplex stream.

It waits for pending write requests to complete. The handle should refer to a initialized stream.
A ShutdownEvent event will be emitted after shutdown is complete.

Definition at line 160 of file stream.h.

◆ stop()

template<typename T , typename U >
void uvw::StreamHandle< T, U >::stop ( )
inline

Stops reading data from the stream.

This function is idempotent and may be safely called on a stopped stream.

Definition at line 225 of file stream.h.

◆ tryWrite() [1/4]

template<typename T , typename U >
int uvw::StreamHandle< T, U >::tryWrite ( char * data,
unsigned int len )
inline

Queues a write request if it can be completed immediately.

Same as write(), but won’t queue a write request if it can’t be completed immediately.
An ErrorEvent event will be emitted in case of errors.

Parameters
dataThe data to be written to the stream.
lenThe lenght of the submitted data.
Returns
Number of bytes written.

Definition at line 396 of file stream.h.

◆ tryWrite() [2/4]

template<typename T , typename U >
template<typename V , typename W >
int uvw::StreamHandle< T, U >::tryWrite ( char * data,
unsigned int len,
StreamHandle< V, W > & send )
inline

Queues a write request if it can be completed immediately.

Same as tryWrite for sending handles over a pipe.
An ErrorEvent event will be emitted in case of errors.

Parameters
dataThe data to be written to the stream.
lenThe lenght of the submitted data.
sendA valid handle suitable for the purpose.
Returns
Number of bytes written.

Definition at line 420 of file stream.h.

◆ tryWrite() [3/4]

template<typename T , typename U >
int uvw::StreamHandle< T, U >::tryWrite ( std::unique_ptr< char[]> data,
unsigned int len )
inline

Queues a write request if it can be completed immediately.

Same as write(), but won’t queue a write request if it can’t be completed immediately.
An ErrorEvent event will be emitted in case of errors.

Parameters
dataThe data to be written to the stream.
lenThe lenght of the submitted data.
Returns
Number of bytes written.

Definition at line 349 of file stream.h.

◆ tryWrite() [4/4]

template<typename T , typename U >
template<typename V , typename W >
int uvw::StreamHandle< T, U >::tryWrite ( std::unique_ptr< char[]> data,
unsigned int len,
StreamHandle< V, W > & send )
inline

Queues a write request if it can be completed immediately.

Same as tryWrite for sending handles over a pipe.
An ErrorEvent event will be emitted in case of errors.

Parameters
dataThe data to be written to the stream.
lenThe lenght of the submitted data.
sendA valid handle suitable for the purpose.
Returns
Number of bytes written.

Definition at line 373 of file stream.h.

◆ writable()

template<typename T , typename U >
bool uvw::StreamHandle< T, U >::writable ( ) const
inlinenoexcept

Checks if the stream is writable.

Returns
True if the stream is writable, false otherwise.

Definition at line 444 of file stream.h.

◆ write() [1/4]

template<typename T , typename U >
void uvw::StreamHandle< T, U >::write ( char * data,
unsigned int len )
inline

Writes data to the stream.

Data are written in order. The handle doesn't take the ownership of the data. Be sure that their lifetime overcome the one of the request.

A WriteEvent event will be emitted when the data have been written.
An ErrorEvent event will be emitted in case of errors.

Parameters
dataThe data to be written to the stream.
lenThe lenght of the submitted data.

Definition at line 265 of file stream.h.

◆ write() [2/4]

template<typename T , typename U >
template<typename S >
void uvw::StreamHandle< T, U >::write ( S & send,
char * data,
unsigned int len )
inline

Extended write function for sending handles over a pipe handle.

The pipe must be initialized with ipc == true.

send must be a TCPHandle or PipeHandle handle, which is a server or a connection (listening or connected state). Bound sockets or pipes will be assumed to be servers.

The handle doesn't take the ownership of the data. Be sure that their lifetime overcome the one of the request.

A WriteEvent event will be emitted when the data have been written.
An ErrorEvent wvent will be emitted in case of errors.

Parameters
sendThe handle over which to write data.
dataThe data to be written to the stream.
lenThe lenght of the submitted data.

Definition at line 327 of file stream.h.

◆ write() [3/4]

template<typename T , typename U >
template<typename S , typename Deleter >
void uvw::StreamHandle< T, U >::write ( S & send,
std::unique_ptr< char[], Deleter > data,
unsigned int len )
inline

Extended write function for sending handles over a pipe handle.

The pipe must be initialized with ipc == true.

send must be a TCPHandle or PipeHandle handle, which is a server or a connection (listening or connected state). Bound sockets or pipes will be assumed to be servers.

The handle takes the ownership of the data and it is in charge of delete them.

A WriteEvent event will be emitted when the data have been written.
An ErrorEvent wvent will be emitted in case of errors.

Parameters
sendThe handle over which to write data.
dataThe data to be written to the stream.
lenThe lenght of the submitted data.

Definition at line 296 of file stream.h.

◆ write() [4/4]

template<typename T , typename U >
template<typename Deleter >
void uvw::StreamHandle< T, U >::write ( std::unique_ptr< char[], Deleter > data,
unsigned int len )
inline

Writes data to the stream.

Data are written in order. The handle takes the ownership of the data and it is in charge of delete them.

A WriteEvent event will be emitted when the data have been written.
An ErrorEvent event will be emitted in case of errors.

Parameters
dataThe data to be written to the stream.
lenThe lenght of the submitted data.

Definition at line 242 of file stream.h.

◆ writeQueueSize()

template<typename T , typename U >
size_t uvw::StreamHandle< T, U >::writeQueueSize ( ) const
inlinenoexcept

Gets the amount of queued bytes waiting to be sent.

Returns
Amount of queued bytes waiting to be sent.

Definition at line 471 of file stream.h.


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