41 lines
1.5 KiB
Plaintext
41 lines
1.5 KiB
Plaintext
// 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)
|