59 lines
2.3 KiB
Lua
59 lines
2.3 KiB
Lua
--------------------------------------------------------------------------------
|
|
------------------------------ ##### ## ------------------------------
|
|
------------------------------ ## ## # ## ------------------------------
|
|
------------------------------ ## ## ## ## ------------------------------
|
|
------------------------------ ## ## # ## ------------------------------
|
|
------------------------------ ##### ### ###### ------------------------------
|
|
-------------------------------- --------------------------------
|
|
----------------------- An Object Request Broker in Lua ------------------------
|
|
--------------------------------------------------------------------------------
|
|
-- Project: OiL - ORB in Lua --
|
|
-- Release: 0.4 --
|
|
-- Title : Client-side CORBA GIOP Protocol specific to IIOP --
|
|
-- Authors: Renato Maia <maia@inf.puc-rio.br> --
|
|
--------------------------------------------------------------------------------
|
|
-- references:Facet
|
|
-- reference:table referenceto(objectkey:string, accesspointinfo:table...)
|
|
-- reference:string encode(reference:table)
|
|
-- reference:table decode(reference:string)
|
|
--------------------------------------------------------------------------------
|
|
|
|
local socket = require "socket.core"
|
|
|
|
local oo = require "oil.oo" --[[VERBOSE]] local verbose = require "oil.verbose"
|
|
|
|
module("oil.ludo.Referrer", oo.class)
|
|
|
|
context = false
|
|
|
|
--------------------------------------------------------------------------------
|
|
--------------------------------------------------------------------------------
|
|
|
|
function referenceto(self, objectkey, accessinfo)
|
|
local host = accessinfo.host
|
|
if host == "*" then
|
|
host = socket.dns.gethostname()
|
|
host = socket.dns.toip(host) or host
|
|
end
|
|
return {
|
|
host = host,
|
|
port = accessinfo.port,
|
|
object = objectkey,
|
|
}
|
|
end
|
|
|
|
local ReferenceFrm = "@%s:%d"
|
|
function encode(self, reference)
|
|
return reference.object..ReferenceFrm:format(reference.host, reference.port)
|
|
end
|
|
|
|
local ReferencePat = "^([^@]*)@([^:]*):(%d*)$"
|
|
function decode(self, reference)
|
|
local object, host, port = reference:match(ReferencePat)
|
|
return {
|
|
host = host,
|
|
port = port,
|
|
object = object,
|
|
}
|
|
end
|