Zorya-NEO/lib/util_zlan/pack.lua

26 lines
574 B
Lua

local function recv_pack_head(sock)
local head = sock:r(6)
local jv = head:byte(1)
local nv = head:byte(2)
local id = head:byte(3)
local mx = head:byte(4)
local size = head:byte(5) | (head:byte(6) << 8)
return jv, nv, id, mx, head:r(size)
end
local function recv_full_pack(sock)
local packets = {}
local rt = 0
while true do
if not computer.pullSignal(2) then
rt = rt + 1
if (rt > 3) then
return nil, "timeout"
end
else
local _, _, _, mx, dat = recv_pack_head(sock)
packets[#packets+1] = dat
end
end
return table.concat(packets, "")
end