// compile_worker - Worker actor that compiles a single module and replies // // Receives a message with: // {type: 'script', path, package} — bytecode compile // {type: 'native_script', path, package} — native compile // {type: 'c_package', package} — C package build // {type: 'c_file', package, file} — single C module build // // Replies with {ok: true/false, path} and stops. var shop = use('internal/shop') var build = use('build') $receiver(function(msg) { var name = msg.path || (msg.file ? msg.package + '/' + msg.file : msg.package) var _work = function() { if (msg.type == 'script') { log.console('compile_worker: compiling ' + name) shop.precompile(msg.path, msg.package) } else if (msg.type == 'native_script') { log.console('compile_worker: native compiling ' + name) build.compile_native(msg.path, null, null, msg.package) } else if (msg.type == 'c_package') { log.console('compile_worker: building package ' + name) build.build_dynamic(msg.package, null, null, null) } else if (msg.type == 'c_file') { log.console('compile_worker: building ' + name) build.compile_c_module(msg.package, msg.file) } log.console('compile_worker: done ' + name) send(msg, {ok: true, path: name}) } disruption { log.error('compile_worker: failed ' + name) send(msg, {ok: false, error: 'compile failed'}) } _work() $stop() }) var _t = $delay($stop, 120)