mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 02:10:08 +00:00
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:
parent
e40694b76b
commit
83ff6380c2
@ -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)
|
||||||
|
})
|
||||||
|
}))
|
||||||
|
}
|
||||||
}],
|
}],
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -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'})
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user