Skip to content

Commit b419607

Browse files
committed
add mediator package
Signed-off-by: Nimit <nimitagg95@gmail.com>
1 parent cc0dbc0 commit b419607

File tree

3 files changed

+84
-0
lines changed

3 files changed

+84
-0
lines changed

Behavioral/mediator.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
const cluster = require('cluster');
2+
if (cluster.isMaster) {
3+
// Mediate between master class and forks
4+
class MasterProcessMediator {
5+
constructor() {
6+
this.forks = [];
7+
}
8+
init() {
9+
const worker = cluster.fork();
10+
this.forks.push(worker);
11+
//
12+
worker.on('message',
13+
(() => (message) => this.handleMessageFromWorker(worker.id, message))()
14+
);
15+
}
16+
17+
// handler for various workers
18+
handleMessageFromWorker(workerId, message) {
19+
console.log("Worker " + workerId + " says hi with msg " + message);
20+
}
21+
22+
notifyAllWorker() {
23+
this.forks.map(fork => fork.send("received Msg"));
24+
}
25+
}
26+
27+
const mediator = new MasterProcessMediator();
28+
mediator.init();
29+
30+
mediator.notifyAllWorker();
31+
} else {
32+
process.on('message', (message) => {
33+
console.log(cluster.worker.id + " " + message);
34+
});
35+
process.send("working");
36+
setTimeout(() => process.kill(process.pid), 0);
37+
}
38+

buildDocs.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ const sections = [
3333
{ name: 'chainOfResponsibility', path: './Behavioral' },
3434
{ name: 'command', path: './Behavioral' },
3535
{ name: 'iterator', path: './Behavioral' },
36+
{ name: 'mediator', path: './Behavioral' },
3637
]
3738
}
3839
];

docs.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
* [Chain Of Responsibility](#chain-of-responsibility)
2121
* [Command](#command)
2222
* [Iterator](#iterator)
23+
* [Mediator](#mediator)
2324

2425

2526

@@ -780,5 +781,49 @@ function totalSize(iterator) {
780781
console.log(totalSize(new FileBufferIterator(__dirname)));
781782
```
782783

784+
### Mediator
785+
##### mediator.js
786+
```Javascript
787+
const cluster = require('cluster');
788+
if (cluster.isMaster) {
789+
// Mediate between master class and forks
790+
class MasterProcessMediator {
791+
constructor() {
792+
this.forks = [];
793+
}
794+
init() {
795+
const worker = cluster.fork();
796+
this.forks.push(worker);
797+
//
798+
worker.on('message',
799+
(() => (message) => this.handleMessageFromWorker(worker.id, message))()
800+
);
801+
}
802+
803+
// handler for various workers
804+
handleMessageFromWorker(workerId, message) {
805+
console.log("Worker " + workerId + " says hi with msg " + message);
806+
}
807+
808+
notifyAllWorker() {
809+
this.forks.map(fork => fork.send("received Msg"));
810+
}
811+
}
812+
813+
const mediator = new MasterProcessMediator();
814+
mediator.init();
815+
816+
mediator.notifyAllWorker();
817+
} else {
818+
process.on('message', (message) => {
819+
console.log(cluster.worker.id + " " + message);
820+
});
821+
process.send("working");
822+
setTimeout(() => process.kill(process.pid), 0);
823+
}
824+
825+
826+
```
827+
783828

784829

0 commit comments

Comments
 (0)