WPILibC++ 2023.4.3
|
#include <wpinet/uv/Stream.h>
Public Member Functions | |
std::shared_ptr< Stream > | shared_from_this () |
std::shared_ptr< const Stream > | shared_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 (std::span< const Buffer > bufs, const std::shared_ptr< WriteReq > &req) |
Write data to the stream. More... | |
void | Write (std::initializer_list< Buffer > bufs, const std::shared_ptr< WriteReq > &req) |
Write data to the stream. More... | |
void | Write (std::span< const Buffer > bufs, std::function< void(std::span< Buffer >, Error)> callback) |
Write data to the stream. More... | |
void | Write (std::initializer_list< Buffer > bufs, std::function< void(std::span< Buffer >, Error)> callback) |
Write data to the stream. More... | |
int | TryWrite (std::span< const Buffer > bufs) |
Queue a write request if it can be completed immediately. More... | |
int | TryWrite (std::initializer_list< Buffer > bufs) |
Queue a write request if it can be completed immediately. More... | |
int | TryWrite2 (std::span< const Buffer > bufs, Stream &send) |
Same as TryWrite() and extended write function for sending handles over a pipe. More... | |
int | TryWrite2 (std::initializer_list< Buffer > bufs, Stream &send) |
Same as TryWrite() and extended write function for sending handles over a pipe. 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_t * | GetRawStream () const noexcept |
Get the underlying stream data structure. More... | |
Public Member Functions inherited from wpi::uv::Handle | |
Handle (const Handle &)=delete | |
Handle (Handle &&)=delete | |
Handle & | operator= (const Handle &)=delete |
Handle & | operator= (Handle &&)=delete |
virtual | ~Handle () noexcept |
Type | GetType () const noexcept |
Get the type of the handle. More... | |
std::string_view | GetTypeName () const noexcept |
Get the name of the type of the handle. More... | |
std::shared_ptr< Loop > | GetLoop () const noexcept |
Get the loop where this handle runs. More... | |
Loop & | GetLoopRef () 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 | SetLoopClosing (bool loopClosing) noexcept |
Set if the loop is closing. More... | |
bool | IsLoopClosing () const noexcept |
Get the loop closing status. 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_t * | GetRawHandle () 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) const |
Report an error. More... | |
Public Attributes | |
sig::Signal< Buffer &, size_t > | data |
Signal generated when data was read on a stream. More... | |
sig::Signal | end |
Signal generated when no more read data is available. More... | |
Public Attributes inherited from wpi::uv::Handle | |
sig::Signal< Error > | error |
Error signal. More... | |
sig::Signal | closed |
Closed signal. More... | |
Protected Member Functions | |
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) const |
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) |
Stream handle.
Stream handles provide an abstraction of a duplex communication channel. This is an abstract type; there are three stream implementations (Tcp, Pipe, and Tty).
|
inlineexplicitprotected |
|
inlinenoexcept |
Get the underlying stream data structure.
|
inlinenoexcept |
Gets the amount of queued bytes waiting to be sent.
|
inlinenoexcept |
Check if the stream is readable.
|
inlinenoexcept |
Checks if the stream is writable.
|
inlinenoexcept |
Enable or disable 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.
enable | True to enable blocking mode, false otherwise. |
|
inline |
|
inline |
void wpi::uv::Stream::Shutdown | ( | const std::shared_ptr< ShutdownReq > & | req | ) |
Shutdown the outgoing (write) side of a duplex stream.
It waits for pending write requests to complete. HandleShutdownComplete() is called on the request after shutdown is complete.
req | shutdown request |
void wpi::uv::Stream::Shutdown | ( | std::function< void()> | callback = nullptr | ) |
Shutdown the outgoing (write) side of a duplex stream.
It waits for pending write requests to complete. The callback is called after shutdown is complete. Errors will be reported to the stream error handler.
callback | Callback function to call when shutdown completes |
void wpi::uv::Stream::StartRead | ( | ) |
Start reading data from an incoming stream.
This will only succeed after a connection has been established.
A data signal will be emitted several times until there is no more data to read or StopRead()
is called. An end signal will be emitted when there is no more data to read.
|
inline |
Stop reading data from the stream.
This function is idempotent and may be safely called on a stopped stream.
|
inline |
Queue 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 error signal will be emitted in case of errors.
bufs | The buffers to be written to the stream. |
int wpi::uv::Stream::TryWrite | ( | std::span< const Buffer > | bufs | ) |
Queue 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 error signal will be emitted in case of errors.
bufs | The buffers to be written to the stream. |
Same as TryWrite() and extended write function for sending handles over a pipe.
Try to send a handle is not supported on Windows, where it returns UV_EAGAIN.
bufs | The buffers to be written to the stream. |
send | send stream |
Same as TryWrite() and extended write function for sending handles over a pipe.
Try to send a handle is not supported on Windows, where it returns UV_EAGAIN.
bufs | The buffers to be written to the stream. |
send | send stream |
|
inline |
Write data to the stream.
Data are written in order. The lifetime of the data pointers passed in the bufs
parameter must exceed the lifetime of the write request. An easy way to ensure this is to have the write request keep track of the data and use either its Complete() function or destructor to free the data.
The finish signal will be emitted on the request object when the data has been written (or if an error occurs). The error signal will be emitted on the request object in case of errors.
bufs | The buffers to be written to the stream. |
req | write request |
|
inline |
Write data to the stream.
Data are written in order. The lifetime of the data pointers passed in the bufs
parameter must exceed the lifetime of the write request. The callback can be used to free data after the request completes.
The callback will be called when the data has been written (even if an error occurred). Errors will be reported to the stream error handler.
bufs | The buffers to be written to the stream. |
callback | Callback function to call when the write completes |
void wpi::uv::Stream::Write | ( | std::span< const Buffer > | bufs, |
const std::shared_ptr< WriteReq > & | req | ||
) |
Write data to the stream.
Data are written in order. The lifetime of the data pointers passed in the bufs
parameter must exceed the lifetime of the write request. An easy way to ensure this is to have the write request keep track of the data and use either its Complete() function or destructor to free the data.
The finish signal will be emitted on the request object when the data has been written (or if an error occurs). The error signal will be emitted on the request object in case of errors.
bufs | The buffers to be written to the stream. |
req | write request |
void wpi::uv::Stream::Write | ( | std::span< const Buffer > | bufs, |
std::function< void(std::span< Buffer >, Error)> | callback | ||
) |
Write data to the stream.
Data are written in order. The lifetime of the data pointers passed in the bufs
parameter must exceed the lifetime of the write request. The callback can be used to free data after the request completes.
The callback will be called when the data has been written (even if an error occurred). Errors will be reported to the stream error handler.
bufs | The buffers to be written to the stream. |
callback | Callback function to call when the write completes |
sig::Signal<Buffer&, size_t> wpi::uv::Stream::data |
Signal generated when data was read on a stream.
sig::Signal wpi::uv::Stream::end |
Signal generated when no more read data is available.