1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /**!
- * sendmessage - index.js
- *
- * Copyright(c) fengmk2 and other contributors.
- * MIT Licensed
- *
- * Authors:
- * fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
- */
- 'use strict';
- /**
- * Module dependencies.
- */
- var IS_NODE_DEV_RUNNER = /node\-dev$/.test(process.env._ || '');
- if (!IS_NODE_DEV_RUNNER && process.env.IS_NODE_DEV_RUNNER) {
- IS_NODE_DEV_RUNNER = true;
- }
- module.exports = function send(child, message) {
- if (typeof child.send !== 'function') {
- // not a child process
- return setImmediate(child.emit.bind(child, 'message', message));
- }
- if (IS_NODE_DEV_RUNNER || process.env.SENDMESSAGE_ONE_PROCESS) {
- // run with node-dev, only one process
- // https://github.com/node-modules/sendmessage/issues/1
- return setImmediate(child.emit.bind(child, 'message', message));
- }
- // cluster.fork(): child.process is process
- // childprocess.fork(): child is process
- var connected = child.process ? child.process.connected : child.connected;
- if (connected) {
- return child.send(message);
- }
- // just log warnning message
- var pid = child.process ? child.process.pid : child.pid;
- var err = new Error('channel closed');
- console.warn('[%s][sendmessage] WARN pid#%s channel closed, nothing send\nstack: %s',
- Date(), pid, err.stack);
- };
|