123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- ---@meta
- -- luacheck: no unused args
- error('Cannot require a meta file')
- --- Stream handles provide an abstraction of a duplex communication channel.
- --- `uv_stream_t` is an abstract type, libuv provides 3 stream implementations
- --- in the form of `uv_tcp_t`, `uv_pipe_t` and `uv_tty_t`.
- ---
- ---@class uv.uv_stream_t : uv.uv_handle_t
- ---
- local stream = {} -- luacheck: no unused
- --- This call is used in conjunction with `uv.listen()` to accept incoming
- --- connections. Call this function after receiving a callback to accept the
- --- connection.
- ---
- --- When the connection callback is called 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 call.
- ---
- --- ```lua
- --- server:listen(128, function (err)
- --- local client = uv.new_tcp()
- --- server:accept(client)
- --- end)
- --- ```
- ---
- ---@param client_stream uv.uv_stream_t
- ---@return 0|nil success
- ---@return uv.error.message|nil err
- ---@return uv.error.name|nil err_name
- function stream:accept(client_stream) end
- --- Returns the stream's write queue size.
- ---
- ---@return integer size
- function stream:get_write_queue_size() end
- --- Returns `true` if the stream is readable, `false` otherwise.
- ---
- ---@return boolean readable
- function stream:is_readable() end
- --- Returns `true` if the stream is writable, `false` otherwise.
- ---
- ---@return boolean writable
- function stream:is_writable() end
- --- Start listening for incoming connections.
- ---
- --- `backlog` indicates the number of connections the kernel might queue, same as `listen(2)`.
- ---
- --- When a new incoming connection is received the callback is called.
- ---
- ---@param backlog integer
- ---@param callback uv.listen.callback
- ---@return 0|nil success
- ---@return uv.error.message|nil err
- ---@return uv.error.name|nil err_name
- function stream:listen(backlog, callback) end
- --- Read data from an incoming stream.
- ---
- --- The callback will be made several times until there is no more data to read or `stream:read_stop()` is called.
- ---
- --- When we've reached EOF, `data` will be `nil`.
- ---
- --- ```lua
- --- stream:read_start(function (err, chunk)
- --- if err then
- --- -- handle read error
- --- elseif chunk then
- --- -- handle data
- --- else
- --- -- handle disconnect
- --- end
- --- end)
- --- ```
- ---
- ---@param callback uv.read_start.callback
- ---@return 0|nil success
- ---@return uv.error.message|nil err
- ---@return uv.error.name|nil err_name
- function stream:read_start(callback) end
- --- Stop reading data from the stream.
- ---
- --- The read callback will no longer be called.
- ---
- --- This function is idempotent and may be safely called on a stopped stream.
- ---
- ---@return 0|nil success
- ---@return uv.error.message|nil err
- ---@return uv.error.name|nil err_name
- function stream:read_stop() end
- --- 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 a callback which is made asynchronously.
- ---
- --- **Warning**: Relying too much on this API is not recommended. It is likely to
- --- change significantly in the future. Currently this only works on Windows and
- --- only for `uv_pipe_t` handles. Also libuv currently makes no ordering guarantee
- --- when the blocking mode is changed after write requests have already been
- --- submitted. Therefore it is recommended to set the blocking mode immediately
- --- after opening or creating the stream.
- ---
- ---@param blocking boolean
- ---@return 0|nil success
- ---@return uv.error.message|nil err
- ---@return uv.error.name|nil err_name
- function stream:set_blocking(blocking) end
- --- 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.
- ---
- ---@param callback? uv.shutdown.callback
- ---@return uv.uv_shutdown_t|nil shutdown
- ---@return uv.error.message|nil err
- ---@return uv.error.name|nil err_name
- function stream:shutdown(callback) end
- --- Same as `stream:write()`, but won't queue a write request if it can't be completed
- --- immediately.
- ---
- --- Will return number of bytes written (can be less than the supplied buffer size).
- ---
- ---@param data uv.buffer
- ---@return integer|nil bytes
- ---@return uv.error.message|nil err
- ---@return uv.error.name|nil err_name
- function stream:try_write(data) end
- --- Like `stream:write2()`, but with the properties of `stream:try_write()`. Not supported on Windows, where it returns `UV_EAGAIN`.
- ---
- --- Will return number of bytes written (can be less than the supplied buffer size).
- ---
- ---@param data uv.buffer
- ---@param send_handle uv.uv_stream_t
- ---@return integer|nil bytes
- ---@return uv.error.message|nil err
- ---@return uv.error.name|nil err_name
- function stream:try_write2(data, send_handle) end
- --- Write data to stream.
- ---
- --- `data` can either be a Lua string or a table of strings. If a table is passed
- --- in, the C backend will use writev to send all strings in a single system call.
- ---
- --- The optional `callback` is for knowing when the write is complete.
- ---
- ---@param data uv.buffer
- ---@param callback? uv.write.callback
- ---@return uv.uv_write_t|nil bytes
- ---@return uv.error.message|nil err
- ---@return uv.error.name|nil err_name
- function stream:write(data, callback) end
- --- Extended write function for sending handles over a pipe. The pipe must be
- --- initialized with `ipc` option `true`.
- ---
- --- **Note:** `send_handle` must be a TCP socket or pipe, which is a server or a
- --- connection (listening or connected state). Bound sockets or pipes will be
- --- assumed to be servers.
- ---
- ---@param data uv.buffer
- ---@param send_handle uv.uv_stream_t
- ---@param callback? uv.write2.callback
- ---@return uv.uv_write_t|nil write
- ---@return uv.error.message|nil err
- ---@return uv.error.name|nil err_name
- function stream:write2(data, send_handle, callback) end
|