webmcp
annotate framework/env/execute/_initializers.lua @ 299:47c5f33e4a6b
Trace real time and CPU time
| author | jbe | 
|---|---|
| date | Sun Mar 22 19:25:38 2015 +0100 (2015-03-22) | 
| parents | 2ddbb44680f7 | 
| children | a2c733535b8e | 
| rev | line source | 
|---|---|
| jbe@214 | 1 function execute._initializers(initializer_path_element) | 
| jbe@277 | 2 local yieldvalue1 = {} | 
| jbe@277 | 3 local yieldvalue2 = {} | 
| jbe@214 | 4 local coro = coroutine.wrap(function() | 
| jbe@214 | 5 execute.multi_wrapped( | 
| jbe@214 | 6 execute._create_sorted_execution_list( | 
| jbe@214 | 7 function(add_by_path) | 
| jbe@214 | 8 add_by_path(initializer_path_element) | 
| jbe@242 | 9 if WEBMCP_APP_NAME then -- allow for interactive mode | 
| jbe@242 | 10 add_by_path(WEBMCP_APP_NAME, initializer_path_element) | 
| jbe@242 | 11 end | 
| jbe@214 | 12 end, | 
| jbe@214 | 13 function(full_path, relative_path) | 
| jbe@214 | 14 execute.file_path{ file_path = full_path } | 
| jbe@214 | 15 end | 
| jbe@214 | 16 ), | 
| jbe@214 | 17 function() | 
| jbe@277 | 18 coroutine.yield(yieldvalue1) | 
| jbe@214 | 19 end | 
| jbe@214 | 20 ) | 
| jbe@277 | 21 return yieldvalue2 | 
| jbe@214 | 22 end) | 
| jbe@277 | 23 local yieldvalue = coro() | 
| jbe@277 | 24 if yieldvalue == yieldvalue2 then | 
| jbe@277 | 25 error("Initializers failed to call execute.inner()") | 
| jbe@277 | 26 elseif yieldvalue ~= yieldvalue1 then | 
| jbe@277 | 27 error("Unexpected yield in initializers") | 
| jbe@214 | 28 end | 
| jbe@277 | 29 execute._finalizers[#execute._finalizers+1] = function() | 
| jbe@277 | 30 assert(coro() == yieldvalue2, "Unexpected yield in finalizers") | 
| jbe@277 | 31 end | 
| jbe@214 | 32 end |