From: Brendan Hansen Date: Thu, 18 Mar 2021 01:50:19 +0000 (-0500) Subject: just working on stuff X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=4349e15766bae19be7007f7254672cb86bda673b;p=pagos.git just working on stuff --- diff --git a/app/conf.lua b/app/conf.lua new file mode 100644 index 0000000..0468fc3 --- /dev/null +++ b/app/conf.lua @@ -0,0 +1,13 @@ +package.path = "lua_modules/share/lua/5.1/?.lua;lua_modules/share/lua/5.1/?/init.lua;" .. package.path +package.cpath = "lua_modules/lib/lua/5.1/?.so;" .. package.cpath + +local inifile = require "inifile" +local serpent = require "serpent" + +function love.conf(t) + local data = inifile.parse("test.ini") + + t.window.title = data.app.title or "" + t.window.width = data.app.width or 800 + t.window.height = data.app.height or 600 +end diff --git a/app/main.lua b/app/main.lua new file mode 100644 index 0000000..467120e --- /dev/null +++ b/app/main.lua @@ -0,0 +1,48 @@ +package.path = "lua_modules/share/lua/5.1/?.lua;lua_modules/share/lua/5.1/?/init.lua;" .. package.path +package.cpath = "lua_modules/lib/lua/5.1/?.so;" .. package.cpath + +local inifile = require "inifile" +local serpent = require "serpent" +require "xmlrpc.http" + +local ui = require "ui" +local rpc = require "rpc" + +local app = nil +local value = 0 + +function love.load() + app = rpc.XMLRPCWrapper "http://localhost:8000/RPC2" + + ui.register_component "test" { + test = function() end + } + + value = app.get() + + local data = inifile.parse("test.ini") + print(serpent.block(data)) + + local info = app.get_some_info() + for k, v in pairs(info) do print(k, v) end +end + + +local last_down = false +function love.update(dt) + if love.keyboard.isDown "escape" then + love.event.quit() + end + + + local down = love.keyboard.isDown "space" + if down and not last_down then + value = app.add_and_get() + end + + last_down = down +end + +function love.draw() + love.graphics.print("Hello, World! " .. tostring(value), 100, 100) +end diff --git a/app/rpc.lua b/app/rpc.lua new file mode 100644 index 0000000..8673ef0 --- /dev/null +++ b/app/rpc.lua @@ -0,0 +1,24 @@ + +require "xmlrpc.http" + +module (..., package.seeall) + +function XMLRPCWrapper(rpc_host) + local o = { } + setmetatable(o, { + __index = function(t, func_name) + return function(...) + local status, ok, res = pcall(xmlrpc.http.call, rpc_host, func_name, ...) + + if not status then + print("RPC failed on " .. func_name) + print(ok) + end + + return res + end + end; + }) + + return o +end diff --git a/app/test.ini b/app/test.ini new file mode 120000 index 0000000..d26c574 --- /dev/null +++ b/app/test.ini @@ -0,0 +1 @@ +../test.ini \ No newline at end of file diff --git a/app/ui.lua b/app/ui.lua new file mode 100644 index 0000000..502d3c4 --- /dev/null +++ b/app/ui.lua @@ -0,0 +1,33 @@ + +local print = print + +local components = {} +local function component_lookup(type_, name) + if not components[type_] then + error("Component " .. type_ .. " not found.") + end + + if type(components[type_][name]) == "function" then + return components[type_][name] + end + + if components[type_].extends then + local l = component_lookup(components[type_].extends, name) + if l then return l end + return false + end + + return false +end + +module(...) + +function register_component(name) + if components[name] ~= nil then + error("Component with name " .. name .. " already registered") + end + + return function(component) + components[name] = component + end +end diff --git a/pagos-dev-1.rockspec b/pagos-dev-1.rockspec index d6902e0..0ef5e9c 100644 --- a/pagos-dev-1.rockspec +++ b/pagos-dev-1.rockspec @@ -1,5 +1,5 @@ package = "pagos" -version = "alpha0.0.1" +version = "dev-1" source = { url = "*** please add URL for source tarball, zip or repository here ***" } @@ -16,3 +16,8 @@ build = { "docs" } } +dependencies = { + "inifile ~> 1.0", + "serpent ~> 0.28", + "luaxmlrpc ~> 1.2", +} diff --git a/test.ini b/test.ini new file mode 100644 index 0000000..4d8ad62 --- /dev/null +++ b/test.ini @@ -0,0 +1,9 @@ +[server] +host=0.0.0.0 +port=9243 + +[app] +title=Ice Shack Application +width=800 +height=480 + diff --git a/tmp/rpc_client.lua b/tmp/rpc_client.lua index ad84553..0f8468f 100644 --- a/tmp/rpc_client.lua +++ b/tmp/rpc_client.lua @@ -25,7 +25,14 @@ print("Something: " .. app.add_and_get()) print("Sum: " .. app.sum({ 1, 2, 3, 4, 5 })) +print("Primes") local primes = app.get_some_primes() for key, prime in ipairs(primes) do print(prime[1], prime[2]) end + +print("Squares") +local nums = { 1, 2, 3, 4, 5, 6, 7, 8 } +for key, value in ipairs(app.square_some_numbers(nums)) do + print(key, value) +end diff --git a/tmp/rpc_server.py b/tmp/rpc_server.py index c832ffd..3966159 100644 --- a/tmp/rpc_server.py +++ b/tmp/rpc_server.py @@ -1,17 +1,19 @@ from xmlrpc.server import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler -class RequestHandler(SimpleXMLRPCRequestHandler): - rpc_paths = ('/RPC2',) - class SomeState: def __init__(self): self.number = 0 + def get(self): + return self.number + def add_and_get(self): self.number += 1 return self.number -with SimpleXMLRPCServer(('localhost', 8000), requestHandler=RequestHandler) as server: +with SimpleXMLRPCServer( + ('localhost', 8000), + requestHandler=SimpleXMLRPCRequestHandler) as server: server.register_introspection_functions() @server.register_function() @@ -29,6 +31,24 @@ with SimpleXMLRPCServer(('localhost', 8000), requestHandler=RequestHandler) as s def get_some_primes(): return [ (1, 2), (2, 3), (3, 5), (4, 7), (5, 11), (6, 13) , (7, 17) ] + @server.register_function() + def square_some_numbers(numbers): + if type(numbers) is dict: + numbers = numbers.values() + + res = [] + for x in numbers: + res.append(x * x) + return res + + @server.register_function() + def get_some_info(): + return { + "name": "Joe", + "age": 39, + "height": 100, + } + server.register_instance(SomeState()) server.serve_forever()