WPILibC++  2019.3.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
wpi::uv::NetworkStream Class Referenceabstract

Network stream handle. More...

#include <NetworkStream.h>

Inheritance diagram for wpi::uv::NetworkStream:
wpi::uv::Stream wpi::uv::Handle wpi::uv::NetworkStreamImpl< Pipe, uv_pipe_t > wpi::uv::NetworkStreamImpl< Tcp, uv_tcp_t > wpi::uv::NetworkStreamImpl< T, U > wpi::uv::Pipe wpi::uv::Tcp

Public Member Functions

std::shared_ptr< NetworkStreamshared_from_this ()
 
std::shared_ptr< const
NetworkStream
shared_from_this () const
 
void Listen (int backlog=kDefaultBacklog)
 Start listening for incoming connections. More...
 
void Listen (std::function< void()> callback, int backlog=kDefaultBacklog)
 Start listening for incoming connections. More...
 
std::shared_ptr< NetworkStreamAccept ()
 Accept incoming connection. More...
 
bool Accept (const std::shared_ptr< NetworkStream > &client)
 Accept incoming connection. More...
 
- Public Member Functions inherited from wpi::uv::Stream
std::shared_ptr< Streamshared_from_this ()
 
std::shared_ptr< const Streamshared_from_this () const
 
void Shutdown (const std::shared_ptr< ShutdownReq > &req)
 Shutdown the outgoing (write) side of a duplex stream. More...
 
void Shutdown (std::function< void()> callback=nullptr)
 Shutdown the outgoing (write) side of a duplex stream. More...
 
void StartRead ()
 Start reading data from an incoming stream. More...
 
void StopRead ()
 Stop reading data from the stream. More...
 
void Write (ArrayRef< Buffer > bufs, const std::shared_ptr< WriteReq > &req)
 Write data to the stream. More...
 
void Write (ArrayRef< Buffer > bufs, std::function< void(MutableArrayRef< Buffer >, Error)> callback)
 Write data to the stream. More...
 
int TryWrite (ArrayRef< Buffer > bufs)
 Queue a write request if it can be completed immediately. More...
 
bool IsReadable () const noexcept
 Check if the stream is readable. More...
 
bool IsWritable () const noexcept
 Checks if the stream is writable. More...
 
bool SetBlocking (bool enable) noexcept
 Enable or disable blocking mode for a stream. More...
 
size_t GetWriteQueueSize () const noexcept
 Gets the amount of queued bytes waiting to be sent. More...
 
uv_stream_tGetRawStream () const noexcept
 Get the underlying stream data structure. More...
 
- Public Member Functions inherited from wpi::uv::Handle
 Handle (const Handle &)=delete
 
 Handle (Handle &&)=delete
 
Handleoperator= (const Handle &)=delete
 
Handleoperator= (Handle &&)=delete
 
Type GetType () const noexcept
 Get the type of the handle. More...
 
StringRef GetTypeName () const noexcept
 Get the name of the type of the handle. More...
 
std::shared_ptr< LoopGetLoop () const noexcept
 Get the loop where this handle runs. More...
 
LoopGetLoopRef () const noexcept
 Get the loop where this handle runs. More...
 
bool IsActive () const noexcept
 Check if the handle is active. More...
 
bool IsClosing () const noexcept
 Check if a handle is closing or closed. More...
 
void Close () noexcept
 Request handle to be closed. More...
 
void Reference () noexcept
 Reference the given handle. More...
 
void Unreference () noexcept
 Unreference the given handle. More...
 
bool HasReference () const noexcept
 Check if the given handle is referenced. More...
 
size_t RawSize () const noexcept
 Return the size of the underlying handle type. More...
 
uv_handle_tGetRawHandle () const noexcept
 Get the underlying handle data structure. More...
 
void SetBufferAllocator (std::function< Buffer(size_t)> alloc, std::function< void(Buffer &)> dealloc)
 Set the functions used for allocating and releasing buffers. More...
 
void FreeBuf (Buffer &buf) const noexcept
 Free a buffer. More...
 
template<typename T = void>
std::shared_ptr< T > GetData () const
 Gets user-defined data. More...
 
void SetData (std::shared_ptr< void > data)
 Sets user-defined data. More...
 
void ReportError (int err)
 Report an error. More...
 

Public Attributes

sig::Signal connection
 Signal generated when an incoming connection is received.
 
- Public Attributes inherited from wpi::uv::Stream
sig::Signal< Buffer &, size_t > data
 Signal generated when data was read on a stream.
 
sig::Signal end
 Signal generated when no more read data is available.
 
- Public Attributes inherited from wpi::uv::Handle
sig::Signal< Errorerror
 Error signal.
 
sig::Signal closed
 Closed signal.
 

Static Public Attributes

static constexpr int kDefaultBacklog = 128
 

Protected Member Functions

 NetworkStream (uv_stream_t *uv_stream)
 
virtual NetworkStreamDoAccept ()=0
 
- Protected Member Functions inherited from wpi::uv::Stream
 Stream (uv_stream_t *uv_stream)
 
- Protected Member Functions inherited from wpi::uv::Handle
 Handle (uv_handle_t *uv_handle)
 
void Keep () noexcept
 
void Release () noexcept
 
void ForceClosed () noexcept
 
template<typename F , typename... Args>
bool Invoke (F &&f, Args &&...args)
 

Additional Inherited Members

- Public Types inherited from wpi::uv::Handle
using Type = uv_handle_type
 
- Static Protected Member Functions inherited from wpi::uv::Handle
static void AllocBuf (uv_handle_t *handle, size_t size, uv_buf_t *buf)
 
static void DefaultFreeBuf (Buffer &buf)
 

Detailed Description

Network stream handle.

This is an abstract type; there are two network stream implementations (Tcp and Pipe).

Member Function Documentation

std::shared_ptr<NetworkStream> wpi::uv::NetworkStream::Accept ( )
inline

Accept incoming connection.

This call is used in conjunction with Listen() to accept incoming connections. Call this function after receiving a ListenEvent event to accept the connection. An error signal will be emitted in case of errors.

When the connection signal 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 connection signal.

Returns
The stream handle for the accepted connection, or nullptr on error.
bool wpi::uv::NetworkStream::Accept ( const std::shared_ptr< NetworkStream > &  client)
inline

Accept incoming connection.

This call is used in conjunction with Listen() to accept incoming connections. Call this function after receiving a connection signal to accept the connection. An error signal will be emitted in case of errors.

When the connection signal 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 connection signal.

Parameters
clientClient stream object.
Returns
False on error.
void wpi::uv::NetworkStream::Listen ( int  backlog = kDefaultBacklog)

Start listening for incoming connections.

When a new incoming connection is received the connection signal is generated.

Parameters
backlogthe number of connections the kernel might queue, same as listen(2).
void wpi::uv::NetworkStream::Listen ( std::function< void()>  callback,
int  backlog = kDefaultBacklog 
)

Start listening for incoming connections.

This is a convenience wrapper around Listen(int) that also connects a callback to the connection signal. When a new incoming connection is received the connection signal is generated (and the callback is called).

Parameters
callbackthe callback to call when a connection is received. Accept() should be called from this callback.
backlogthe number of connections the kernel might queue, same as listen(2).

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