just working on stuff master
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 18 Mar 2021 01:50:19 +0000 (20:50 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 18 Mar 2021 01:50:19 +0000 (20:50 -0500)
app/conf.lua [new file with mode: 0644]
app/main.lua [new file with mode: 0644]
app/rpc.lua [new file with mode: 0644]
app/test.ini [new symlink]
app/ui.lua [new file with mode: 0644]
pagos-dev-1.rockspec
test.ini [new file with mode: 0644]
tmp/rpc_client.lua
tmp/rpc_server.py

diff --git a/app/conf.lua b/app/conf.lua
new file mode 100644 (file)
index 0000000..0468fc3
--- /dev/null
@@ -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 (file)
index 0000000..467120e
--- /dev/null
@@ -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 (file)
index 0000000..8673ef0
--- /dev/null
@@ -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 (symlink)
index 0000000..d26c574
--- /dev/null
@@ -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 (file)
index 0000000..502d3c4
--- /dev/null
@@ -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
index d6902e05b9b7271b5c70c7e4aaf384201cf00f55..0ef5e9c847ce4a76d6d46d956261b61a2e664e57 100644 (file)
@@ -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 (file)
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
+
index ad84553f83f00c67be1aca464861641f3e0b48fb..0f8468f6e9ccf739b79abf4a539a9f1f101a4632 100644 (file)
@@ -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
index c832ffd7079f07a0f9fe5869ed36baec047f6f27..3966159ffa70a1ca4fe657bc10aed4646ccc0cbf 100644 (file)
@@ -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()