From 95219eac083ba2c289e4502fa40290dcf155ff18 Mon Sep 17 00:00:00 2001 From: Yash Ladha Date: Tue, 24 Nov 2020 20:19:58 +0530 Subject: [PATCH] lib: refactor to use mapping in cluster master Cluster master message handler is basically doing the same thing for different message actions which can be avoided. Thus move to method mapping object and doing a single lookup to find the function to execute and it doesnot exists, skip the execution chain. PR-URL: https://github.com/nodejs/node/pull/36250 Reviewed-By: Antoine du Hamel Reviewed-By: James M Snell --- lib/internal/cluster/master.js | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/internal/cluster/master.js b/lib/internal/cluster/master.js index 2ae18165695be7..79afe3e80c383b 100644 --- a/lib/internal/cluster/master.js +++ b/lib/internal/cluster/master.js @@ -248,19 +248,21 @@ cluster.disconnect = function(cb) { intercom.once('disconnect', cb); }; +const methodMessageMapping = { + close, + exitedAfterDisconnect, + listening, + online, + queryServer, +}; + function onmessage(message, handle) { const worker = this; - if (message.act === 'online') - online(worker); - else if (message.act === 'queryServer') - queryServer(worker, message); - else if (message.act === 'listening') - listening(worker, message); - else if (message.act === 'exitedAfterDisconnect') - exitedAfterDisconnect(worker, message); - else if (message.act === 'close') - close(worker, message); + const fn = methodMessageMapping[message.act]; + + if (typeof fn === 'function') + fn(worker, message); } function online(worker) {