9#include <initializer_list>
69 return std::static_pointer_cast<Stream>(Handle::shared_from_this());
73 return std::static_pointer_cast<const Stream>(Handle::shared_from_this());
83 void Shutdown(
const std::shared_ptr<ShutdownReq>& req);
92 void Shutdown(std::function<
void()> callback =
nullptr);
128 void Write(std::span<const Buffer> bufs,
129 const std::shared_ptr<WriteReq>& req);
147 void Write(std::initializer_list<Buffer> bufs,
148 const std::shared_ptr<WriteReq>& req) {
149 Write({bufs.begin(), bufs.end()}, req);
165 void Write(std::span<const Buffer> bufs,
166 std::function<
void(std::span<Buffer>,
Error)> callback);
181 void Write(std::initializer_list<Buffer> bufs,
182 std::function<
void(std::span<Buffer>,
Error)> callback) {
183 Write({bufs.begin(), bufs.end()}, std::move(callback));
211 return TryWrite({bufs.begin(), bufs.end()});
241 return TryWrite2({bufs.begin(), bufs.end()}, send);
307template <
typename T,
typename U>
311 return std::static_pointer_cast<T>(Handle::shared_from_this());
315 return std::static_pointer_cast<const T>(Handle::shared_from_this());
Error code.
Definition Error.hpp:14
bool Invoke(F &&f, Args &&... args) const
Definition Handle.hpp:265
uv_handle_t * GetRawHandle() const noexcept
Get the underlying handle data structure.
Definition Handle.hpp:178
Handle(const Handle &)=delete
uv_shutdown_t * GetRaw() noexcept
Definition Request.hpp:149
RequestImpl()
Definition Request.hpp:162
Stream & GetStream() const
Definition Stream.hpp:32
wpi::util::sig::Signal complete
Shutdown completed signal.
Definition Stream.hpp:39
Stream handle.
Definition Stream.hpp:66
void Write(std::initializer_list< Buffer > bufs, std::function< void(std::span< Buffer >, Error)> callback)
Write data to the stream.
Definition Stream.hpp:181
int TryWrite(std::initializer_list< Buffer > bufs)
Queue a write request if it can be completed immediately.
Definition Stream.hpp:210
wpi::util::sig::Signal end
Signal generated when no more read data is available.
Definition Stream.hpp:300
void Shutdown(const std::shared_ptr< ShutdownReq > &req)
Shutdown the outgoing (write) side of a duplex stream.
size_t GetWriteQueueSize() const noexcept
Gets the amount of queued bytes waiting to be sent.
Definition Stream.hpp:279
Stream(uv_stream_t *uv_stream)
Definition Stream.hpp:303
int TryWrite2(std::initializer_list< Buffer > bufs, Stream &send)
Same as TryWrite() and extended write function for sending handles over a pipe.
Definition Stream.hpp:240
void Write(std::initializer_list< Buffer > bufs, const std::shared_ptr< WriteReq > &req)
Write data to the stream.
Definition Stream.hpp:147
std::shared_ptr< const Stream > shared_from_this() const
Definition Stream.hpp:72
void Shutdown(std::function< void()> callback=nullptr)
Shutdown the outgoing (write) side of a duplex stream.
bool SetBlocking(bool enable) noexcept
Enable or disable blocking mode for a stream.
Definition Stream.hpp:271
wpi::util::sig::Signal< Buffer &, size_t > data
Signal generated when data was read on a stream.
Definition Stream.hpp:295
uv_stream_t * GetRawStream() const noexcept
Get the underlying stream data structure.
Definition Stream.hpp:288
bool IsReadable() const noexcept
Check if the stream is readable.
Definition Stream.hpp:248
int TryWrite2(std::span< const Buffer > bufs, Stream &send)
Same as TryWrite() and extended write function for sending handles over a pipe.
void StartRead()
Start reading data from an incoming stream.
int TryWrite(std::span< const Buffer > bufs)
Queue a write request if it can be completed immediately.
std::shared_ptr< Stream > shared_from_this()
Definition Stream.hpp:68
bool IsWritable() const noexcept
Checks if the stream is writable.
Definition Stream.hpp:256
void StopRead()
Stop reading data from the stream.
Definition Stream.hpp:110
void Write(std::span< const Buffer > bufs, std::function< void(std::span< Buffer >, Error)> callback)
Write data to the stream.
void Write(std::span< const Buffer > bufs, const std::shared_ptr< WriteReq > &req)
Write data to the stream.
U * GetRaw() const noexcept
Get the underlying handle data structure.
Definition Stream.hpp:323
std::shared_ptr< T > shared_from_this()
Definition Stream.hpp:310
StreamImpl()
Definition Stream.hpp:328
std::shared_ptr< const T > shared_from_this() const
Definition Stream.hpp:314
Stream & GetStream() const
Definition Stream.hpp:49
wpi::util::sig::Signal< Error > finish
Write completed signal.
Definition Stream.hpp:57
Definition StringMap.hpp:773
Definition Prepare.hpp:14
SignalBase< detail::NullMutex, T... > Signal
Specialization of SignalBase to be used in single threaded contexts.
Definition Signal.h:809
UV_REQ_FIELDS uv_stream_t * handle
Definition uv.h:454
uv_stream_t * handle
Definition uv.h:571
UV_EXTERN int uv_read_stop(uv_stream_t *)
UV_EXTERN int uv_stream_set_blocking(uv_stream_t *handle, int blocking)
UV_EXTERN int uv_is_writable(const uv_stream_t *handle)
struct uv_handle_s uv_handle_t
Definition uv.h:216
UV_EXTERN int uv_is_readable(const uv_stream_t *handle)
struct uv_stream_s uv_stream_t
Definition uv.h:218