Files
neovim/runtime/lua/uv/_meta/uv_stream_t.lua
Christian Clason 0ee5a4d481 feat(meta): vendor luv meta files
Problem: No type information for `vim.uv`.

Solution: Vendor https://github.com/LuaCATS/luv (which is what
luals bundles). This will allow other tooling to work out-of-the-box and
make these files available to users and plugins without the need for
`lazydev.nvim` etc.
2025-04-10 09:13:13 +02:00

176 lines
6.0 KiB
Lua

---@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