starting testing cross-language RPC
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Tue, 9 Mar 2021 22:29:55 +0000 (16:29 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Tue, 9 Mar 2021 22:29:55 +0000 (16:29 -0600)
.gitignore [new file with mode: 0644]
pagos-dev-1.rockspec [new file with mode: 0644]
tmp/rpc_client.lua [new file with mode: 0644]
tmp/rpc_server.py

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..0771553
--- /dev/null
@@ -0,0 +1,4 @@
+/luarocks
+/lua
+/lua_modules
+/.luarocks
diff --git a/pagos-dev-1.rockspec b/pagos-dev-1.rockspec
new file mode 100644 (file)
index 0000000..d6902e0
--- /dev/null
@@ -0,0 +1,18 @@
+package = "pagos"
+version = "alpha0.0.1"
+source = {
+   url = "*** please add URL for source tarball, zip or repository here ***"
+}
+description = {
+   summary = "",
+   detailed = "",
+   homepage = "*** please enter a project homepage ***",
+   license = "GPLv2"
+}
+build = {
+   type = "builtin",
+   modules = {},
+   copy_directories = {
+      "docs"
+   }
+}
diff --git a/tmp/rpc_client.lua b/tmp/rpc_client.lua
new file mode 100644 (file)
index 0000000..ad84553
--- /dev/null
@@ -0,0 +1,31 @@
+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
+
+require "xmlrpc.http"
+
+function XMLRPCWrapper(host)
+    local o = { }
+    setmetatable(o, {
+        __index = function(t, func_name)
+            return function(...)
+                local ok, res = xmlrpc.http.call(host, func_name, ...)
+                assert(ok, "RPC failed on " .. func_name)
+                return res
+            end
+        end;
+    })
+    
+    return o
+end
+
+local app = XMLRPCWrapper("http://localhost:8000/RPC2")
+
+print("Result: " .. app.add(2, 3))
+print("Something: " .. app.add_and_get())
+
+print("Sum: " .. app.sum({ 1, 2, 3, 4, 5 }))
+
+local primes = app.get_some_primes()
+for key, prime in ipairs(primes) do
+    print(prime[1], prime[2])
+end
index f30a25f16380069f1e9c304471d8717aee728ac0..c832ffd7079f07a0f9fe5869ed36baec047f6f27 100644 (file)
@@ -18,6 +18,17 @@ with SimpleXMLRPCServer(('localhost', 8000), requestHandler=RequestHandler) as s
     def add(x, y):
         return x + y
 
+    @server.register_function()
+    def sum(numbers):
+        from functools import reduce
+
+        value = reduce(lambda a, b: a + b, numbers.values())
+        return value
+
+    @server.register_function()
+    def get_some_primes():
+        return [ (1, 2), (2, 3), (3, 5), (4, 7), (5, 11), (6, 13) , (7, 17) ]
+
     server.register_instance(SomeState())
 
     server.serve_forever()