From f7cc00822ab0ad81b935b0412d079e7fea8ee8fa Mon Sep 17 00:00:00 2001 From: XeonSquared Date: Wed, 25 Dec 2019 16:29:58 +1100 Subject: [PATCH] added two programs using the RPC library, for exporting and importing programs over the network --- RPC/OpenOS/usr/bin/exportcomponent.lua | 11 ++++++++++ RPC/OpenOS/usr/bin/importcomponent.lua | 29 ++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 RPC/OpenOS/usr/bin/exportcomponent.lua create mode 100644 RPC/OpenOS/usr/bin/importcomponent.lua diff --git a/RPC/OpenOS/usr/bin/exportcomponent.lua b/RPC/OpenOS/usr/bin/exportcomponent.lua new file mode 100644 index 0000000..36ccb14 --- /dev/null +++ b/RPC/OpenOS/usr/bin/exportcomponent.lua @@ -0,0 +1,11 @@ +local component = require "component" +local rpc = require "rpc" +local tA = {...} + +for k,v in ipairs(tA) do + local px = component.proxy(component.get(v)) + print(px.type.."_"..px.address) + for l,m in pairs(px) do + rpc.register(px.type.."_"..px.address.."_"..l,m) + end +end diff --git a/RPC/OpenOS/usr/bin/importcomponent.lua b/RPC/OpenOS/usr/bin/importcomponent.lua new file mode 100644 index 0000000..d049b89 --- /dev/null +++ b/RPC/OpenOS/usr/bin/importcomponent.lua @@ -0,0 +1,29 @@ +local vcomponent = require "vcomponent" +local rpc = require "rpc" +local tA = {...} +local host, ctype, addr = tA[1], tA[2], tA[3] + +if #tA < 3 then + print("Usage: importcomponent ") + return +end + +local saddr = addr:gsub("%-","%%-") + +if addr:len() < 36 then + local flist = rpc.call(host,"list") + for k,v in pairs(flist) do + faddr = v:match(ctype.."_("..saddr..".*)_") or faddr + end +end +print(faddr) +saddr = (faddr or addr):gsub("%-","%%-") +local px = rpc.proxy(host,ctype.."_"..saddr..".*_") +local mc = 0 +for k,v in pairs(px) do + mc = mc + 1 +end +if mc < 1 then + error("no such remote component: "..addr) +end +vcomponent.register(faddr or addr, ctype, px)