Remove excessive copyright/license boilerplate
[platform/upstream/nodejs.git] / test / parallel / test-cluster-dgram-2.js
1 var NUM_WORKERS = 4;
2 var PACKETS_PER_WORKER = 10;
3
4 var assert = require('assert');
5 var cluster = require('cluster');
6 var common = require('../common');
7 var dgram = require('dgram');
8
9
10 if (process.platform === 'win32') {
11   console.warn("dgram clustering is currently not supported on windows.");
12   process.exit(0);
13 }
14
15 if (cluster.isMaster)
16   master();
17 else
18   worker();
19
20
21 function master() {
22   var i;
23   var received = 0;
24
25   // Start listening on a socket.
26   var socket = dgram.createSocket('udp4');
27   socket.bind(common.PORT);
28
29   // Disconnect workers when the expected number of messages have been
30   // received.
31   socket.on('message', function(data, info) {
32     received++;
33
34     if (received == PACKETS_PER_WORKER * NUM_WORKERS) {
35       console.log('master received %d packets', received);
36
37       // Close the socket.
38       socket.close();
39
40       // Disconnect all workers.
41       cluster.disconnect();
42     }
43   });
44
45   // Fork workers.
46   for (var i = 0; i < NUM_WORKERS; i++)
47     cluster.fork();
48 }
49
50
51 function worker() {
52   // Create udp socket and send packets to master.
53   var socket = dgram.createSocket('udp4');
54   var buf = new Buffer('hello world');
55
56   for (var i = 0; i < PACKETS_PER_WORKER; i++)
57     socket.send(buf, 0, buf.length, common.PORT, '127.0.0.1');
58
59   console.log('worker %d sent %d packets', cluster.worker.id, PACKETS_PER_WORKER);
60 }