37 lines
983 B
Lua
37 lines
983 B
Lua
if not fs.exists("data.db") then
|
|
local file = fs.open("data.db", "w")
|
|
file.write("{}")
|
|
file.close()
|
|
end
|
|
local file = fs.open("data.db","r+")
|
|
local eplib = require("entrypointlib")
|
|
if not file then error("failed to open db file") end
|
|
|
|
local function readTable()
|
|
file.seek("set")
|
|
return textutils.unserialise(file.readAll() or "{}") or {}
|
|
end
|
|
|
|
local function writeTable(t)
|
|
file.seek("set")
|
|
file.write(textutils.serialise(t))
|
|
file.flush()
|
|
end
|
|
|
|
local function receive()
|
|
while true do
|
|
sleep(0)
|
|
local _,msg,id = os.pullEvent("network_packet")
|
|
if msg.proto == "getTable" then
|
|
eplib.send({proto = "resp", table = readTable()}, id)
|
|
print("sent table to "..tostring(id))
|
|
elseif msg.proto == "setTable" then
|
|
writeTable(msg.table)
|
|
print("updated table from "..tostring(id))
|
|
eplib.send({proto="OK"},id)
|
|
end
|
|
end
|
|
end
|
|
|
|
parallel.waitForAny(eplib.loop,receive)
|