On 5/12/10 11:09 AM, "Brian McCallister" <bri...@skife.org> wrote:
> Ah, but what happens when there are multiple functions for same hook? > We could get into magic naming and scanning of global scope, but that > really turns my stomach. No need. It's easy. Think about it in lua, not C. Something like this for a loader: handlers = { } -- mods is an array of modules. Probably passed in via post_config or something. Hooks is an array of hook names function load_stuff(mods, hooks) -- try to load each mod like local m = require 'modname' -- now examine m for functions named in hooks if m.functionname add to my array end Then in you runner something like function hook_runner(r, hook_name) -- look in handlers for hook_name. It should be an array of functions -- call them, with r as the single argument until one returns something -- other than declined end > Conceptually, we probably don't want different script authors > stomping on each other anyway. Forcing the use of modules rather than standalone scripts helps this some. We loose a lot of the efficiencies of lua because of the design of worker, prefork, event, etc. Lua Strings, memory, etc, per thread -- with lots of threads - seems wasteful. But that's a larger discussion. FWIW, I do a lot of lua now. We use it in almost every web server config now. -- Brian Akins