# HG changeset patch # User jbe # Date 1420845112 -3600 # Node ID 2c2bcde0df796e8441eda7d0346332ddd2fe9c0c # Parent 77c4774e834290c1610a0cda90b5b3e48c0ede3d Pre/postfork initializers and finalizers via coroutines diff -r 77c4774e8342 -r 2c2bcde0df79 framework/bin/mcp.lua --- a/framework/bin/mcp.lua Fri Jan 09 22:53:07 2015 +0100 +++ b/framework/bin/mcp.lua Sat Jan 10 00:11:52 2015 +0100 @@ -209,7 +209,7 @@ request.handler(req) end ) - --listener.finish = ??? -- TODO: requires coroutines and execute.inner() for initializers? + listener.finish = execute.finalizers moonbridge_listen(listener) end end diff -r 77c4774e8342 -r 2c2bcde0df79 framework/env/execute/__init.lua --- a/framework/env/execute/__init.lua Fri Jan 09 22:53:07 2015 +0100 +++ b/framework/env/execute/__init.lua Sat Jan 10 00:11:52 2015 +0100 @@ -1,1 +1,2 @@ -execute._wrap_stack = {} -- used by execute.inner() and execute.wrapped(...) +execute._wrap_stack = {} +execute._finalizers = {} diff -r 77c4774e8342 -r 2c2bcde0df79 framework/env/execute/finalizers.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/framework/env/execute/finalizers.lua Sat Jan 10 00:11:52 2015 +0100 @@ -0,0 +1,13 @@ +--[[-- +execute.finalizers() + +Executes that code in initializers which is placed after execute.inner(). + +--]]-- + +function execute.finalizers() + for i = #execute._finalizers, 1, -1 do + execute._finalizers[i]() + execute._finalizers[i] = 0 + end +end diff -r 77c4774e8342 -r 2c2bcde0df79 framework/env/execute/postfork_initializers.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/framework/env/execute/postfork_initializers.lua Sat Jan 10 00:11:52 2015 +0100 @@ -0,0 +1,10 @@ +--[[-- +execute.postfork_initializers() + +Executes all initializers after forking. + +--]]-- + +function execute.postfork_initializers() + execute._initializers("_postfork") +end diff -r 77c4774e8342 -r 2c2bcde0df79 framework/env/execute/prefork_initializers.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/framework/env/execute/prefork_initializers.lua Sat Jan 10 00:11:52 2015 +0100 @@ -0,0 +1,10 @@ +--[[-- +execute.prefork_initializers() + +Executes all initializers prior to forking. + +--]]-- + +function execute.prefork_initializers() + execute._initializers("_prefork") +end