parallel preview creation done, now figuring how to route the results back...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2016-05-25 23:16:41 +03:00
parent e40694b76b
commit 83ff6380c2
2 changed files with 81 additions and 26 deletions

View File

@ -63,7 +63,27 @@ var SharpActions = actions.Actions({
if(this.previewConstructorWorker){ if(this.previewConstructorWorker){
return return
} }
this.previewConstructorWorker = cp.fork('./workers/preview-constructor.js') this.previewConstructorWorker = cp.fork(
'./workers/preview-constructor.js', {
cwd: process.cwd(),
})
.on('message', function(res){
if(res.err){
// XXX
console.error(res)
} else {
var ticket = res.ticket
if(res.status == 'completed'){
// XXX clear the listener...
// XXX
} else {
// XXX get listener and pass it the res.data
// XXX
}
}
})
}], }],
stopPreviewWorker: ['- Sharp/', stopPreviewWorker: ['- Sharp/',
function(){ function(){
@ -142,28 +162,43 @@ var SharpActions = actions.Actions({
var path_tpl = that.config['preview-path-template'] var path_tpl = that.config['preview-path-template']
.replace(/\$INDEX|\$\{INDEX\}/g, that.config['index-dir'] || '.ImageGrid') .replace(/\$INDEX|\$\{INDEX\}/g, that.config['index-dir'] || '.ImageGrid')
// now do the work (async)...
// now do the work... if(this.previewConstructorWorker){
return Promise.all(Object.keys(data).map(function(base_path){ return Promise.all(Object.keys(data).map(function(base_path){
return preview.makePreviews( // XXX need feedback...
data[base_path], // XXX need to resolve the promises on completion...
sizes, // XXX need to update image data and mark images as changed...
base_path, that.previewConstructorWorker.send({
path_tpl, images: data[base_path],
function(err, data){ sizes: sizes,
if(data.status == 'done' || data.status == 'skipped'){ base_path: base_path,
// get/make preview list... target_tpl: path_tpl,
var preview = that.images[data.gid].preview =
that.images[data.gid].preview || {}
preview[data.res + 'px'] = data.path
that.markChanged(data.gid)
}
logger && logger.emit(data.status, data.path)
}) })
})) }))
// now do the work (sync)...
} else {
return Promise.all(Object.keys(data).map(function(base_path){
return preview.makePreviews(
data[base_path],
sizes,
base_path,
path_tpl,
function(err, data){
if(data.status == 'done' || data.status == 'skipped'){
// get/make preview list...
var preview = that.images[data.gid].preview =
that.images[data.gid].preview || {}
preview[data.res + 'px'] = data.path
that.markChanged(data.gid)
}
logger && logger.emit(data.status, data.path)
})
}))
}
}], }],
}) })

View File

@ -4,16 +4,36 @@
* *
**********************************************************************/ **********************************************************************/
var sharp = require('sharp')
var requirejs = require('requirejs') var requirejs = require('requirejs')
requirejs.config({
nodeRequire: require,
baseUrl: process.cwd(),
})
/*********************************************************************/ /*********************************************************************/
process.on('message', function(m){ requirejs(['lib/preview'], function(preview){
console.log('Got:', m) process.on('message', function(m){
preview.makePreviews(
m.images,
m.sizes,
m.base_path,
m.target_tpl,
function(err, data){
// XXX send the data back to parent...
process.send({ticket: m.ticket, err: err, data: data})
})
/*
.catch(function(err){
// XXX
})
*/
.then(function(){
process.send({ticket: m.ticket, status: 'completed'})
})
})
}) })