update network test and fix coroutines errors handling
This commit is contained in:
parent
f531d2e358
commit
40eda93398
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user