poppy-server/main.lua

44 lines
1005 B
Lua

print("Startup!")
local constants = require("constants")
local rpc = require("rpc")
local socket = require("socket")
local v1_message = {}
require("clientid")(v1_message)
require("world")(v1_message)
local server = assert(socket.udp())
local ip, port = nil, nil
server:settimeout(nil)
assert(server:setsockname("*", 42069))
if not server or not socket then error("failed to listen on socket") end
while true do
::nw_next::
print("iteration start")
local data
data, ip, port = server:receivefrom()
print("received data from " .. ip)
if not data then
local err_code = ip
print(err_code)
goto nw_next
end
for _, req in ipairs(rpc.parse_multiple(data)) do
local response = rpc.eval(v1_message, req)
if response then
local payload = "poppyV001" .. constants.RS .. response
print("sending response to " .. ip .. ":" .. port .. " " .. payload)
server:sendto(payload, ip, port)
else
print(req .. " had no return value!")
end
end
print("iteration over")
end
::nw_break::