diff options
-rw-r--r-- | docs/src/stream.rst | 10 | ||||
-rw-r--r-- | include/uv.h | 4 | ||||
-rw-r--r-- | src/unix/stream.c | 10 | ||||
-rw-r--r-- | src/win/stream.c | 10 |
4 files changed, 33 insertions, 1 deletions
diff --git a/docs/src/stream.rst b/docs/src/stream.rst index 58ef7d98..ca7e83f7 100644 --- a/docs/src/stream.rst +++ b/docs/src/stream.rst @@ -207,6 +207,16 @@ API * < 0: negative error code (``UV_EAGAIN`` is returned if no data can be sent immediately). +.. c:function:: int uv_try_write2(uv_stream_t* handle, const uv_buf_t bufs[], unsigned int nbufs, uv_stream_t* send_handle) + + Same as :c:func:`uv_try_write` and extended write function for sending + handles over a pipe like c:func:`uv_write2`. + + Try to send a handle is not supported on Windows, + where it returns ``UV_EAGAIN``. + + .. versionadded:: 1.42.0 + .. c:function:: int uv_is_readable(const uv_stream_t* handle) Returns 1 if the stream is readable, 0 otherwise. diff --git a/include/uv.h b/include/uv.h index 7524ff95..77503bde 100644 --- a/include/uv.h +++ b/include/uv.h @@ -528,6 +528,10 @@ UV_EXTERN int uv_write2(uv_write_t* req, UV_EXTERN int uv_try_write(uv_stream_t* handle, const uv_buf_t bufs[], unsigned int nbufs); +UV_EXTERN int uv_try_write2(uv_stream_t* handle, + const uv_buf_t bufs[], + unsigned int nbufs, + uv_stream_t* send_handle); /* uv_write_t is a subclass of uv_req_t. */ struct uv_write_s { diff --git a/src/unix/stream.c b/src/unix/stream.c index dd1f5538..f64c01cf 100644 --- a/src/unix/stream.c +++ b/src/unix/stream.c @@ -1525,6 +1525,14 @@ int uv_write(uv_write_t* req, int uv_try_write(uv_stream_t* stream, const uv_buf_t bufs[], unsigned int nbufs) { + return uv_try_write2(stream, bufs, nbufs, NULL); +} + + +int uv_try_write2(uv_stream_t* stream, + const uv_buf_t bufs[], + unsigned int nbufs, + uv_stream_t* send_handle) { int err; /* Connecting or already writing some data */ @@ -1535,7 +1543,7 @@ int uv_try_write(uv_stream_t* stream, if (err < 0) return err; - return uv__try_write(stream, bufs, nbufs, NULL); + return uv__try_write(stream, bufs, nbufs, send_handle); } diff --git a/src/win/stream.c b/src/win/stream.c index ebb5fe5c..abf477f6 100644 --- a/src/win/stream.c +++ b/src/win/stream.c @@ -188,6 +188,16 @@ int uv_try_write(uv_stream_t* stream, } +int uv_try_write2(uv_stream_t* stream, + const uv_buf_t bufs[], + unsigned int nbufs, + uv_stream_t* send_handle) { + if (send_handle != NULL) + return UV_EAGAIN; + return uv_try_write(stream, bufs, nbufs); +} + + int uv_shutdown(uv_shutdown_t* req, uv_stream_t* handle, uv_shutdown_cb cb) { uv_loop_t* loop = handle->loop; |