tarantoolscript
Version:
TypeScript definitions for Tarantool Lua API.
167 lines (157 loc) • 5.95 kB
TypeScript
/** @noSelfInFile */
import {
AIFlag,
DomainFamily,
Protocol,
SendFlag,
SocketType,
} from './Constants';
import { SocketInfo } from './SocketInfo';
import { SocketObject } from './SocketObject';
import { SocketOptionList } from './SocketOptionList';
/**
* Create a new TCP or UDP socket. The argument values are the same as in the Linux socket(2) man page.
* @param domain Specifies a communication domain; this selects the protocol family which will be used for communication.
* @param type Specifies the communication semantics.
* @param protocol Specifies a particular protocol to be used with the socket.
* @returns An unconnected socket, or nil.
* @see https://www.tarantool.io/en/doc/latest/reference/reference_lua/socket/#lua-function.socket.__call
*/
export declare function __call(
domain: DomainFamily,
type: SocketType,
protocol: Protocol,
): SocketObject | undefined;
/**
* Connect a socket to a remote host.
* @param host URL or IP address.
* @param port Port number.
* @param timeout Number of seconds to wait.
* @returns (if error) {nil, error-message-string}. (if no error) a new socket object.
* @see https://www.tarantool.io/en/doc/latest/reference/reference_lua/socket/#lua-function.socket.tcp_connect
*/
export declare function tcp_connect(
host: string,
port?: number,
timeout?: number,
):
| LuaMultiReturn<[SocketObject, undefined]>
| LuaMultiReturn<[undefined, string]>;
/**
* Useful for finding information about a remote site so that the correct arguments for `sock:sysconnect()` can be passed.
* This function may use the `worker_pool_threads` configuration parameter.
* @param host URL or IP address.
* @param port Port number as a numeric or string.
* @param timeout Maximum number of seconds to wait.
* @param optionList A table.
* @returns (if error) `{nil, error-message-string}`.
* (if no error) A table containing these fields: `host`, `family`, `type`, `protocol`, `port`.
* @see https://www.tarantool.io/en/doc/latest/reference/reference_lua/socket/#lua-function.socket.getaddrinfo
*/
export declare function getaddrinfo(
host: string,
port: number | string,
timeout?: number,
optionList?: SocketOptionList,
):
| LuaMultiReturn<
[
{
host: string;
family: string;
type: string;
protocol: string;
port: number;
},
undefined,
]
>
| LuaMultiReturn<[undefined, string]>;
/**
* Useful for finding information about a remote site so that the correct arguments for `sock:sysconnect()` can be passed.
* This function may use the `worker_pool_threads` configuration parameter.
* @param host URL or IP address.
* @param port Port number as a numeric or string.
* @param optionList A table.
* @returns (if error) `{nil, error-message-string}`.
* (if no error) A table containing these fields: `host`, `family`, `type`, `protocol`, `port`.
* @see https://www.tarantool.io/en/doc/latest/reference/reference_lua/socket/#lua-function.socket.getaddrinfo
*/
export declare function getaddrinfo(
host: string,
port: number | string,
optionList?: SocketOptionList,
):
| LuaMultiReturn<
[
{
host: string;
family: string;
type: string;
protocol: string;
port: number;
},
undefined,
]
>
| LuaMultiReturn<[undefined, string]>;
/**
* Makes Tarantool act as a server that can accept connections. Usually the same objective is accomplished with `box.cfg{listen=…}`.
* @param host Host name or IP.
* @param port Host port, may be `0`.
* @param handler What to execute when a connection occurs.
* @param timeout Host resolving timeout in seconds.
* @returns (if error) `{nil, error-message-string}`. (if no error) a new socket object.
* @see https://www.tarantool.io/en/doc/latest/reference/reference_lua/socket/#lua-function.socket.tcp_server
*/
export declare function tcp_server(
host: string,
port: number,
handler:
| {
prepare?: (this: void, sock: SocketObject) => unknown;
handler?: (this: void, sock: SocketObject, from: SocketInfo) => unknown;
name?: string;
}
| ((this: void, ...args: any[]) => unknown),
timeout?: number,
):
| LuaMultiReturn<[SocketObject, undefined]>
| LuaMultiReturn<[undefined, string]>;
/**
* Bind a socket to the given host/port. This is equivalent to `socket_object:bind()`,
* but is done on the result of `require('socket')`, rather than on the socket object.
* @param host URL or IP address.
* @param port Port number.
* @returns (if error) `{nil, error-message-string}`. (if no error) A table which may have information about the bind result.
* @see https://www.tarantool.io/en/doc/latest/reference/reference_lua/socket/#lua-function.socket.bind
*/
export declare function bind(
host: string,
port: number,
): LuaMultiReturn<[LuaTable, undefined]> | LuaMultiReturn<[undefined, string]>;
/**
* The `socket.iowait()` function is used to wait until read-or-write activity occurs for a file descriptor.
* @param fd File descriptor.
* @param readOrWriteFlags
* - `R` or 1 = read;
* - `W` or 2 = write;
* - `RW` or 3 = read|write;
* @param timeout Number of seconds to wait.
*
* If the `fd` parameter is `nil`, then there will be a sleep until the timeout.
* If the timeout parameter is `nil` or unspecified, then timeout is infinite.
* @see https://www.tarantool.io/en/doc/latest/reference/reference_lua/socket/#lua-function.socket.iowait
*/
export declare function iowait(
fd: number | null,
readOrWriteFlags: 'R' | 1 | 'W' | 2 | 'RW' | 3,
timeout?: number,
): 'R' | 1 | 'W' | 2 | 'RW' | 3 | '';
export declare const internal: {
SO_TYPE: { [key in SocketType]: number };
protocols: { [key in Protocol]: number };
SEND_FLAGS: { [key in SendFlag]: number };
DOMAIN: { [key in DomainFamily]: number };
AI_FLAGS: { [key in AIFlag]: number };
};