update network test and fix coroutines errors handling

This commit is contained in:
MihailRis 2025-09-14 14:11:34 +03:00
parent f531d2e358
commit 40eda93398
2 changed files with 46 additions and 24 deletions

View File

@ -1,19 +1,38 @@
local data = "hello, world"
local complete = false
for i=1,3 do
local text = ""
local complete = false
network.tcp_open(7645, function (client)
start_coroutine(function()
local received = client:recv(1024)
if received then
assert (data, utf8.tostring(received))
for j=1,100 do
text = text .. math.random(0, 9)
end
local server = network.tcp_open(7645, function (client)
start_coroutine(function()
local received_text = ""
while client:is_alive() do
local received = client:recv(512)
if received then
received_text = received_text .. utf8.tostring(received)
end
coroutine.yield()
end
assert (received_text == text)
complete = true
end
coroutine.yield()
end, "client-listener")
end)
end, "client-listener")
end)
network.tcp_connect("localhost", 7645, function (socket)
socket:send(data)
end)
network.tcp_connect("localhost", 7645, function (socket)
start_coroutine(function()
local ptr = 1
while ptr < #text do
local n = math.random(1, 20)
socket:send(string.sub(text, ptr, ptr + n - 1))
ptr = ptr + n
end
socket:close()
end, "data-sender")
end)
app.sleep_until(function () return complete end)
app.sleep_until(function () return complete end)
server:close()
end

View File

@ -531,15 +531,18 @@ function start_coroutine(chunk, name)
local co = coroutine.create(function()
local status, error = xpcall(chunk, function(err)
local fullmsg = "error: "..string.match(err, ": (.+)").."\n"..debug.traceback()
gui.alert(fullmsg, function()
if world.is_open() then
__vc_app.close_world()
else
__vc_app.reset_content()
menu:reset()
menu.page = "main"
end
end)
if hud then
gui.alert(fullmsg, function()
if world.is_open() then
__vc_app.close_world()
else
__vc_app.reset_content()
menu:reset()
menu.page = "main"
end
end)
end
return fullmsg
end)
if not status then