70 lines
2.6 KiB
Lua
70 lines
2.6 KiB
Lua
---@meta
|
||
---socket channel 在创建时,并不会立即建立连接。如果你什么都不做,那么连接建立会推迟到第一次 request 请求时。这种被动建立连接的过程会不断的尝试,即使第一次没有连接上,也会重试。
|
||
---@class socketchannel
|
||
local socket_channel = {}
|
||
|
||
---创建一个新的套接字频道
|
||
---返回结构:
|
||
---* {
|
||
---* __host = assert(desc.host),
|
||
---* __port = assert(desc.port),
|
||
---* __backup = desc.backup,
|
||
---* __auth = desc.auth,
|
||
---* __response = desc.response, -- It's for session mode
|
||
---* __request = {}, -- request seq { response func or session } -- It's for order mode
|
||
---* __thread = {}, -- coroutine seq or session->coroutine map
|
||
---* __result = {}, -- response result { coroutine -> result }
|
||
---* __result_data = {},
|
||
---* __connecting = {},
|
||
---* __sock = false,
|
||
---* __closed = false,
|
||
---* __authcoroutine = false,
|
||
---* __nodelay = desc.nodelay,
|
||
---* __overload_notify = desc.overload,
|
||
---* __overload = false,
|
||
---* }
|
||
---@param desc table {host, port, backup, auth, response, nodelay, overload}
|
||
---@return socketchannel
|
||
function socket_channel.channel(desc)
|
||
|
||
end
|
||
|
||
---连接频道
|
||
---@param once boolean tryConnectOnceOrMulti
|
||
function socket_channel:connect(once)
|
||
|
||
end
|
||
|
||
---返回值 true 表示协议解析成功,如果为 false 表示协议出错,这会导致连接断开且让 request 的调用者也获得一个 error
|
||
---在 response 函数内的任何异常以及 sock:read 或 sock:readline 读取出错,都会以 error 的形式抛给 request 的调用者。
|
||
---@alias ResponseFunction fun(sock:table): boolean, string
|
||
|
||
---发送请求
|
||
---@param request string binary 请求内容,若不填写 resonse,那么只发送而不接收
|
||
---@param response? ResponseFunction 返回值 true 表示协议解析成功,如果为 false 表示协议出错,这会导致连接断开且让 request 的调用者也获得一个 error
|
||
---@param padding? table
|
||
---@return string # 是由 response 函数返回的回应包的内容(可以是任意类型)
|
||
function socket_channel:request(request, response, padding)
|
||
end
|
||
|
||
---用来单向接收一个包。
|
||
---`local resp = channel:response(dispatch)` 与 `local resp = channel:request(req, dispatch)` 等价
|
||
---@param dispatch any
|
||
function socket_channel:response(dispatch)
|
||
end
|
||
---关闭频道
|
||
function socket_channel:close()
|
||
|
||
end
|
||
---改变目标主机[端口],打开状态会关闭
|
||
---@param host string
|
||
---@param port? number
|
||
function socket_channel:changehost(host, port)
|
||
end
|
||
---改变备用
|
||
---@param backup table
|
||
function socket_channel:changebackup(backup)
|
||
end
|
||
return socket_channel
|
||
|