45 lines
1.2 KiB
Lua

local oo = require "loop.simple" local verbose = require "oil.verbose"
--------------------------------------------------------------------------------
-- Fork Component
--------------------------------------------------------------------------------
Fork = oo.class{ inuse = false }
function Fork:get()
local ok = not self.inuse
if ok then self.inuse = true end
return ok
end
function Fork:release()
assert(self.inuse, "attempt to release an unused fork")
self.inuse = false
end
--------------------------------------------------------------------------------
-- Fork Home
--------------------------------------------------------------------------------
require "adaptor"
ForkHome = oo.class(nil, Adaptor)
function ForkHome:create()
return Fork()
end
--------------------------------------------------------------------------------
-- Exporting
--------------------------------------------------------------------------------
require "oil"
oil.main(function()
local orb = oil.init()
orb:loadidlfile("philo.idl")
oil.writeto("fork.ior",
orb:tostring(
orb:newservant(ForkHome, nil, "ForkHome")))
orb:run()
end)