Server IP : 85.214.239.14 / Your IP : 3.16.36.89 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/3/task/3/root/proc/3/root/lib/node_modules/pm2/node_modules/tx2/src/ |
Upload File : |
module.exports = { /** * Expose an action/function triggerable via PM2 or PM2.io * @memberof TX2 * @param {string} action_name Name of the action * @param {object} [opts] Optional parameter * @param {function} fn Function to be called * * @example <caption>Action without arguments</caption> * tx2.action('run_query', (cb) => { * cb({ success: true }) * }) * @example <caption>Action with arguments</caption> * tx2.action('run_query', arg1, (cb) => { * cb({ success: arg1 }) * }) */ action(action_name, opts, fn) { if (!fn) { fn = opts opts = null } if (!action_name) return console.error('[PMX] action.action_name is missing') if (!fn) return console.error('[PMX] emit.data is mission') // Notify the action this.send({ type : 'axm:action', data : { action_name : action_name, opts : opts, arity : fn.length } }) let reply = (data) => { if (data.length) { data._length = data.length delete data.length } this.send({ type : 'axm:reply', data : { return : data, action_name : action_name } }) } process.on('message', (data) => { if (!data) return false // Notify the action if (data && (data == action_name || data.msg == action_name)) this.event('action triggered', { action_name, opts }) // In case 2 arguments has been set but no options has been transmitted if (fn.length === 2 && typeof(data) === 'string' && data === action_name) return fn({}, reply) // In case 1 arguments has been set but options has been transmitted if (fn.length === 1 && typeof(data) === 'object' && data.msg === action_name) return fn(reply) /** * Classical call */ if (typeof(data) === 'string' && data === action_name) return fn(reply) /** * If data is an object == v2 protocol * Pass the opts as first argument */ if (typeof(data) === 'object' && data.msg === action_name) return fn(data.opts, reply) }) } }