webmcp
changeset 208:2c2bcde0df79
Pre/postfork initializers and finalizers via coroutines
author | jbe |
---|---|
date | Sat Jan 10 00:11:52 2015 +0100 (2015-01-10) |
parents | 77c4774e8342 |
children | 2cb27106aa73 |
files | framework/bin/mcp.lua framework/env/execute/__init.lua framework/env/execute/finalizers.lua framework/env/execute/postfork_initializers.lua framework/env/execute/prefork_initializers.lua |
line diff
1.1 --- a/framework/bin/mcp.lua Fri Jan 09 22:53:07 2015 +0100 1.2 +++ b/framework/bin/mcp.lua Sat Jan 10 00:11:52 2015 +0100 1.3 @@ -209,7 +209,7 @@ 1.4 request.handler(req) 1.5 end 1.6 ) 1.7 - --listener.finish = ??? -- TODO: requires coroutines and execute.inner() for initializers? 1.8 + listener.finish = execute.finalizers 1.9 moonbridge_listen(listener) 1.10 end 1.11 end
2.1 --- a/framework/env/execute/__init.lua Fri Jan 09 22:53:07 2015 +0100 2.2 +++ b/framework/env/execute/__init.lua Sat Jan 10 00:11:52 2015 +0100 2.3 @@ -1,1 +1,2 @@ 2.4 -execute._wrap_stack = {} -- used by execute.inner() and execute.wrapped(...) 2.5 +execute._wrap_stack = {} 2.6 +execute._finalizers = {}
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/framework/env/execute/finalizers.lua Sat Jan 10 00:11:52 2015 +0100 3.3 @@ -0,0 +1,13 @@ 3.4 +--[[-- 3.5 +execute.finalizers() 3.6 + 3.7 +Executes that code in initializers which is placed after execute.inner(). 3.8 + 3.9 +--]]-- 3.10 + 3.11 +function execute.finalizers() 3.12 + for i = #execute._finalizers, 1, -1 do 3.13 + execute._finalizers[i]() 3.14 + execute._finalizers[i] = 0 3.15 + end 3.16 +end
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 4.2 +++ b/framework/env/execute/postfork_initializers.lua Sat Jan 10 00:11:52 2015 +0100 4.3 @@ -0,0 +1,10 @@ 4.4 +--[[-- 4.5 +execute.postfork_initializers() 4.6 + 4.7 +Executes all initializers after forking. 4.8 + 4.9 +--]]-- 4.10 + 4.11 +function execute.postfork_initializers() 4.12 + execute._initializers("_postfork") 4.13 +end
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 5.2 +++ b/framework/env/execute/prefork_initializers.lua Sat Jan 10 00:11:52 2015 +0100 5.3 @@ -0,0 +1,10 @@ 5.4 +--[[-- 5.5 +execute.prefork_initializers() 5.6 + 5.7 +Executes all initializers prior to forking. 5.8 + 5.9 +--]]-- 5.10 + 5.11 +function execute.prefork_initializers() 5.12 + execute._initializers("_prefork") 5.13 +end