A simple way to wrap a single-instance module to enable it to work with node cluster.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

61 lines
898 B

'use strict';
var cluster = require('cluster');
var crpc;
function runMaster() {
var db = {
get: function (key, cb) {
cb(null, db[key]);
}
, put: function (key, val, cb) {
db[key] = val;
if (cb) { cb(null); }
}
};
crpc = require('./master').create({
instance: db
, methods: [ 'get', 'put' ]
, name: 'foo-level'
});
crpc.then(function () {
db.put('foo', 'bar');
});
cluster.fork();
}
function runWorker() {
crpc = require('./worker').create({
name: 'foo-level'
});
}
if (cluster.isMaster) {
runMaster();
}
else {
runWorker();
}
crpc.then(function (db) {
setTimeout(function () {
db.get('foo', function (err, result) {
console.log(cluster.isMaster && '0' || cluster.worker.id.toString(), "db.get('foo')", result);
if (!cluster.isMaster) {
process.exit(0);
}
});
}, 250);
});