WPILibC++ 2023.4.3
|
#include <wpinet/uv/Pipe.h>
Public Member Functions | |
Pipe (const private_init &) | |
~Pipe () noexcept override=default | |
void | Reuse (std::function< void()> callback, bool ipc=false) |
Reuse this handle. More... | |
std::shared_ptr< Pipe > | Accept () |
Accept incoming connection. More... | |
bool | Accept (const std::shared_ptr< Pipe > &client) |
Accept incoming connection. More... | |
void | Open (uv_file file) |
Open an existing file descriptor or HANDLE as a pipe. More... | |
void | Bind (std::string_view name) |
Bind the pipe to a file path (Unix) or a name (Windows). More... | |
void | Connect (std::string_view name, const std::shared_ptr< PipeConnectReq > &req) |
Connect to the Unix domain socket or the named pipe. More... | |
void | Connect (std::string_view name, std::function< void()> callback) |
Connect to the Unix domain socket or the named pipe. More... | |
std::string | GetSock () |
Get the name of the Unix domain socket or the named pipe. More... | |
std::string | GetPeer () |
Get the name of the Unix domain socket or the named pipe to which the handle is connected. More... | |
void | SetPendingInstances (int count) |
Set the number of pending pipe instance handles when the pipe server is waiting for connections. More... | |
void | Chmod (int flags) |
Alters pipe permissions, allowing it to be accessed from processes run by different users. More... | |
Public Member Functions inherited from wpi::uv::NetworkStreamImpl< Pipe, uv_pipe_t > | |
std::shared_ptr< Pipe > | shared_from_this () |
std::shared_ptr< const Pipe > | shared_from_this () const |
uv_pipe_t * | GetRaw () const noexcept |
Get the underlying handle data structure. More... | |
Public Member Functions inherited from wpi::uv::NetworkStream | |
std::shared_ptr< NetworkStream > | shared_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< NetworkStream > | Accept () |
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< 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... | |
Static Public Member Functions | |
static std::shared_ptr< Pipe > | Create (Loop &loop, bool ipc=false) |
Create a pipe handle. More... | |
static std::shared_ptr< Pipe > | Create (const std::shared_ptr< Loop > &loop, bool ipc=false) |
Create a pipe handle. More... | |
Additional Inherited Members | |
Public Types inherited from wpi::uv::Handle | |
using | Type = uv_handle_type |
Public Attributes inherited from wpi::uv::NetworkStream | |
sig::Signal | connection |
Signal generated when an incoming connection is received. More... | |
Public Attributes inherited from wpi::uv::Stream | |
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... | |
Static Public Attributes inherited from wpi::uv::NetworkStream | |
static constexpr int | kDefaultBacklog = 128 |
Protected Member Functions inherited from wpi::uv::NetworkStreamImpl< Pipe, uv_pipe_t > | |
NetworkStreamImpl () | |
Protected Member Functions inherited from wpi::uv::NetworkStream | |
NetworkStream (uv_stream_t *uv_stream) | |
virtual NetworkStream * | DoAccept ()=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) const |
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) |
Pipe handle.
Pipe handles provide an abstraction over local domain sockets on Unix and named pipes on Windows.
|
inlineexplicit |
|
overridedefaultnoexcept |
std::shared_ptr< Pipe > wpi::uv::Pipe::Accept | ( | ) |
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.
|
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.
client | Client stream object. |
void wpi::uv::Pipe::Bind | ( | std::string_view | name | ) |
Bind the pipe to a file path (Unix) or a name (Windows).
sizeof(sockaddr_un.sun_path)
bytes, typically between 92 and 108 bytes.name | File path (Unix) or name (Windows). |
|
inline |
Alters pipe permissions, allowing it to be accessed from processes run by different users.
Makes the pipe writable or readable by all users. Mode can be UV_WRITABLE, UV_READABLE, or both. This function is blocking.
flags | chmod flags |
void wpi::uv::Pipe::Connect | ( | std::string_view | name, |
const std::shared_ptr< PipeConnectReq > & | req | ||
) |
Connect to the Unix domain socket or the named pipe.
sizeof(sockaddr_un.sun_path)
bytes, typically between 92 and 108 bytes.HandleConnected() is called on the request when the connection has been established. HandleError() is called on the request in case of errors during the connection.
name | File path (Unix) or name (Windows). |
req | connection request |
void wpi::uv::Pipe::Connect | ( | std::string_view | name, |
std::function< void()> | callback | ||
) |
Connect to the Unix domain socket or the named pipe.
sizeof(sockaddr_un.sun_path)
bytes, typically between 92 and 108 bytes.The callback is called when the connection has been established. Errors are reported to the stream error handler.
name | File path (Unix) or name (Windows). |
callback | Callback function to call when connection established |
|
inlinestatic |
Create a pipe handle.
loop | Loop object where this handle runs. |
ipc | Indicates if this pipe will be used for handle passing between processes. |
Create a pipe handle.
loop | Loop object where this handle runs. |
ipc | Indicates if this pipe will be used for handle passing between processes. |
std::string wpi::uv::Pipe::GetPeer | ( | ) |
Get the name of the Unix domain socket or the named pipe to which the handle is connected.
std::string wpi::uv::Pipe::GetSock | ( | ) |
Get the name of the Unix domain socket or the named pipe.
|
inline |
Open an existing file descriptor or HANDLE as a pipe.
file | A valid file handle (either a file descriptor or a HANDLE). |
void wpi::uv::Pipe::Reuse | ( | std::function< void()> | callback, |
bool | ipc = false |
||
) |
Reuse this handle.
This closes the handle, and after the close completes, reinitializes it (identically to Create) and calls the provided callback. Unlike Close(), it does NOT emit the closed signal, however, IsClosing() will return true until the callback is called. This does nothing if IsClosing() is true (e.g. if Close() was called).
ipc | IPC |
callback | Callback |
|
inline |
Set the number of pending pipe instance handles when the pipe server is waiting for connections.
count | Number of pending handles. |