files/examples/oil/adapt/proxy.lua
require "oil"
oil.main(function()
	local orb = oil.init()
	------------------------------------------------------------------------------
	orb:loadidl [[
		module Adaptation {
			interface Server {
				boolean do_something_for(in long seconds);
			};
			interface Proxy {
				boolean request_work_for(in long seconds);
			};
			interface Adaptor {
				void update_definition(in string definition);
			};
		};
	]]
	------------------------------------------------------------------------------
	local proxy_impl = {
		server = orb:newproxy(oil.readfrom("server.ior"), "IDL:Adaptation/Server:1.0")
	}
	function proxy_impl:request_work_for(seconds)
		assert(self.server, "unable to find a server")
		return self.server:do_something_for(seconds)
	end
	local adaptor_impl = {}
	function adaptor_impl:update_definition(definition)
		orb:loadidl(definition)
	end
	------------------------------------------------------------------------------
	local proxy = orb:newservant(proxy_impl, nil, "IDL:Adaptation/Proxy:1.0")
	local adaptor = orb:newservant(adaptor_impl, nil, "IDL:Adaptation/Adaptor:1.0")
	------------------------------------------------------------------------------
	oil.writeto("proxy.ior", orb:tostring(proxy))
	oil.writeto("proxyadaptor.ior", orb:tostring(adaptor))
	------------------------------------------------------------------------------
	orb:run()
	------------------------------------------------------------------------------
end)
