added two programs using the RPC library, for exporting and importing programs over the network

This commit is contained in:
Izaya 2019-12-25 16:29:58 +11:00
parent effcadc915
commit f7cc00822a
2 changed files with 40 additions and 0 deletions

View File

@ -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

View File

@ -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 <host> <component type> <component address>")
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)