Files
BR_YKC/4G/tools/resource/soc_script/v2025.12.31.22/lib/libnet.lua

168 lines
4.4 KiB
Lua
Raw Normal View History

2026-03-31 15:46:04 +08:00
--[[
@module libnet
@summary libnet socket库基础上的同步阻塞apisocket库本身是异步非阻塞api
@version 1.0
@date 2023.03.16
@author lisiqi
]]
local libnet = {}
--[[
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
return false
end
if not result then
result = sysplus.waitMsg(taskName, socket.LINK, timeout)
else
return true
end
if type(result) == 'table' and result[2] == 0 then
return true
else
return false
end
end
--[[
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
return false
end
if not result then
result = sysplus.waitMsg(taskName, socket.ON_LINE, timeout)
else
return true
end
if type(result) == 'table' and result[2] == 0 then
return true
else
return false
end
end
--[[
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
return false
end
if not result then
result = sysplus.waitMsg(taskName, socket.ON_LINE, timeout)
else
return true
end
if type(result) == 'table' and result[2] == 0 then
return true
else
return false
end
end
--[[
sysplus.taskInitEx创建的任务函数中
@api libnet.tx(taskName,timeout,...)
@string
@int ==0
@... socket.tx一致
@return boolean falsetrue
@return boolean
]]
function libnet.tx(taskName,timeout, ...)
local succ, is_full, result = socket.tx(...)
if not succ then
return false, is_full
end
if is_full then
return true, true
end
if not result then
result = sysplus.waitMsg(taskName, socket.TX_OK, timeout)
else
return true, is_full
end
if type(result) == 'table' and result[2] == 0 then
return true, false
else
return false, is_full
end
end
--[[
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 falsetrue
@return boolean falsetrue
]]
function libnet.wait(taskName,timeout, netc)
local succ, result = socket.wait(netc)
if not succ then
return false,false
end
if not result then
result = sysplus.waitMsg(taskName, socket.EVENT, timeout)
else
return true,true
end
if type(result) == 'table' then
if result[2] == 0 then
return true, true
else
return false, false
end
else
return true, false
end
end
--[[
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
socket.close(netc)
return
end
if not result then
result = sysplus.waitMsg(taskName, socket.CLOSED, timeout)
else
socket.close(netc)
return
end
socket.close(netc)
end
return libnet