|
|
@@ -1,10 +1,21 @@
|
|
|
+--[[
|
|
|
+@module libnet
|
|
|
+@summary libnet 在socket库基础上的同步阻塞api,socket库本身是异步非阻塞api
|
|
|
+@version 1.0
|
|
|
+@date 2023.03.16
|
|
|
+@author lisiqi
|
|
|
+]]
|
|
|
+
|
|
|
local libnet = {}
|
|
|
|
|
|
---- 阻塞等待网卡的网络连接上,只能用于任务函数中
|
|
|
--- @string 任务标志
|
|
|
--- @int 超时时间,如果==0或者空,则没有超时一致等待
|
|
|
--- @... 其他参数和socket.linkup一致
|
|
|
--- @return 失败或者超时返回false 成功返回true
|
|
|
+--[[
|
|
|
+阻塞等待网卡的网络连接上,只能用于sysplus.taskInitEx创建的任务函数中
|
|
|
+@api libnet.waitLink(taskName,timeout,...)
|
|
|
+@string 任务标志
|
|
|
+@int 超时时间,如果==0或者空,则没有超时一致等待
|
|
|
+@... 其他参数和socket.linkup一致
|
|
|
+@return boolean 失败或者超时返回false 成功返回true
|
|
|
+]]
|
|
|
function libnet.waitLink(taskName, timeout, ...)
|
|
|
local succ, result = socket.linkup(...)
|
|
|
if not succ then
|
|
|
@@ -22,11 +33,15 @@ function libnet.waitLink(taskName, timeout, ...)
|
|
|
end
|
|
|
end
|
|
|
|
|
|
---- 阻塞等待IP或者域名连接上,如果加密连接还要等握手完成,只能用于任务函数中
|
|
|
--- @string 任务标志
|
|
|
--- @int 超时时间,如果==0或者空,则没有超时一致等待
|
|
|
--- @... 其他参数和socket.connect一致
|
|
|
--- @return 失败或者超时返回false 成功返回true
|
|
|
+
|
|
|
+--[[
|
|
|
+阻塞等待IP或者域名连接上,如果加密连接还要等握手完成,只能用于sysplus.taskInitEx创建的任务函数中
|
|
|
+@api libnet.connect(taskName,timeout,...)
|
|
|
+@string 任务标志
|
|
|
+@int 超时时间,如果==0或者空,则没有超时一致等待
|
|
|
+@... 其他参数和socket.connect一致
|
|
|
+@return boolean 失败或者超时返回false 成功返回true
|
|
|
+]]
|
|
|
function libnet.connect(taskName,timeout, ... )
|
|
|
local succ, result = socket.connect(...)
|
|
|
if not succ then
|
|
|
@@ -44,11 +59,14 @@ function libnet.connect(taskName,timeout, ... )
|
|
|
end
|
|
|
end
|
|
|
|
|
|
---- 阻塞等待客户端连接上,只能用于任务函数中
|
|
|
--- @string 任务标志
|
|
|
--- @int 超时时间,如果==0或者空,则没有超时一致等待
|
|
|
--- @... 其他参数和socket.listen一致
|
|
|
--- @return 失败或者超时返回false 成功返回true
|
|
|
+--[[
|
|
|
+阻塞等待客户端连接上,只能用于sysplus.taskInitEx创建的任务函数中
|
|
|
+@api libnet.listen(taskName,timeout,...)
|
|
|
+@string 任务标志
|
|
|
+@int 超时时间,如果==0或者空,则没有超时一致等待
|
|
|
+@... 其他参数和socket.listen一致
|
|
|
+@return boolean 失败或者超时返回false 成功返回true
|
|
|
+]]
|
|
|
function libnet.listen(taskName,timeout, ... )
|
|
|
local succ, result = socket.listen(...)
|
|
|
if not succ then
|
|
|
@@ -66,13 +84,15 @@ function libnet.listen(taskName,timeout, ... )
|
|
|
end
|
|
|
end
|
|
|
|
|
|
---- 阻塞等待数据发送完成,只能用于任务函数中
|
|
|
--- @string 任务标志
|
|
|
--- @int 超时时间,如果==0或者空,则没有超时一致等待
|
|
|
--- @... 其他参数和socket.tx一致
|
|
|
--- @return
|
|
|
--- @boolean 失败或者超时返回false,缓冲区满了或者成功返回true
|
|
|
--- @boolean 缓存区是否满了
|
|
|
+--[[
|
|
|
+阻塞等待数据发送完成,只能用于sysplus.taskInitEx创建的任务函数中
|
|
|
+@api libnet.tx(taskName,timeout,...)
|
|
|
+@string 任务标志
|
|
|
+@int 超时时间,如果==0或者空,则没有超时一直等待
|
|
|
+@... 其他参数和socket.tx一致
|
|
|
+@return boolean 失败或者超时返回false,缓冲区满了或者成功返回true
|
|
|
+@return boolean 缓存区是否满了
|
|
|
+]]
|
|
|
function libnet.tx(taskName,timeout, ...)
|
|
|
local succ, is_full, result = socket.tx(...)
|
|
|
if not succ then
|
|
|
@@ -93,13 +113,15 @@ function libnet.tx(taskName,timeout, ...)
|
|
|
end
|
|
|
end
|
|
|
|
|
|
---- 阻塞等待新的网络事件或者特定事件,只能用于任务函数中
|
|
|
--- @string 任务标志
|
|
|
--- @int 超时时间,如果==0或者空,则没有超时一致等待
|
|
|
--- @... 其他参数和socket.wait一致
|
|
|
--- @return
|
|
|
--- @boolean 网络异常返回false,其他返回true
|
|
|
--- @table or boolean 超时返回false,有新的数据到返回true,被其他事件退出的,返回接收到的事件
|
|
|
+--[[
|
|
|
+阻塞等待新的网络事件,只能用于sysplus.taskInitEx创建的任务函数中,可以通过sysplus.sendMsg(taskName,socket.EVENT,0)或者sys_send(taskName,socket.EVENT,0)强制退出
|
|
|
+@api libnet.wait(taskName,timeout, netc)
|
|
|
+@string 任务标志
|
|
|
+@int 超时时间,如果==0或者空,则没有超时一致等待
|
|
|
+@userdata socket.create返回的netc
|
|
|
+@return boolean 网络异常返回false,其他返回true
|
|
|
+@return boolean 超时返回false,有新的网络事件到返回true
|
|
|
+]]
|
|
|
function libnet.wait(taskName,timeout, netc)
|
|
|
local succ, result = socket.wait(netc)
|
|
|
if not succ then
|
|
|
@@ -121,11 +143,13 @@ function libnet.wait(taskName,timeout, netc)
|
|
|
end
|
|
|
end
|
|
|
|
|
|
---- 阻塞等待网络断开连接,只能用于任务函数中
|
|
|
--- @string 任务标志
|
|
|
--- @int 超时时间,如果==0或者空,则没有超时一致等待
|
|
|
--- @... 其他参数和socket.close一致
|
|
|
--- @return 无
|
|
|
+--[[
|
|
|
+阻塞等待网络断开连接,只能用于sysplus.taskInitEx创建的任务函数中
|
|
|
+@api libnet.close(taskName,timeout, netc)
|
|
|
+@string 任务标志
|
|
|
+@int 超时时间,如果==0或者空,则没有超时一致等待
|
|
|
+@userdata socket.create返回的netc
|
|
|
+]]
|
|
|
function libnet.close(taskName,timeout, netc)
|
|
|
local succ, result = socket.discon(netc)
|
|
|
if not succ then
|