@weave-js/core 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +1 -1
- package/jest.config.js +1 -1
- package/lib/ExtendableError.js +33 -0
- package/lib/broker/context.js +58 -46
- package/lib/broker/{default-options.js → defaultOptions.js} +31 -13
- package/lib/broker/index.js +273 -251
- package/lib/buildRuntime.js +70 -0
- package/lib/cache/adapters/base.js +119 -0
- package/lib/cache/adapters/inMemory.js +154 -0
- package/lib/cache/adapters/inMemoryLru.js +140 -0
- package/lib/cache/adapters/index.js +10 -0
- package/lib/cache/getCacheKeyByObject.js +31 -0
- package/lib/cache/getPropertyFromDataOrMetadata.js +20 -0
- package/lib/cache/lock.js +34 -11
- package/lib/constants.js +11 -8
- package/lib/{error-handler.js → errorHandler.js} +8 -8
- package/lib/errors.js +46 -39
- package/lib/helper/{define-action.js → defineAction.js} +5 -3
- package/lib/helper/{define-broker-options.js → defineBrokerOptions.js} +4 -2
- package/lib/helper/{define-service.js → defineService.js} +6 -3
- package/lib/index.js +25 -22
- package/lib/logger/base.js +38 -29
- package/lib/logger/format/asHumanReadable.js +15 -14
- package/lib/logger/format/asJson.js +10 -10
- package/lib/logger/format/index.js +3 -3
- package/lib/logger/index.js +28 -25
- package/lib/logger/levels.js +23 -22
- package/lib/logger/tools.js +17 -13
- package/lib/logger/utils/colorize.js +23 -23
- package/lib/logger/utils/format.js +89 -65
- package/lib/metrics/common.js +47 -47
- package/lib/metrics/constants.js +44 -44
- package/lib/metrics/exporter/base.js +8 -8
- package/lib/metrics/exporter/event.js +20 -20
- package/lib/metrics/exporter/index.js +15 -15
- package/lib/metrics/index.js +2 -2
- package/lib/metrics/types/base.js +20 -20
- package/lib/metrics/types/counter.js +6 -6
- package/lib/metrics/types/gauge.js +24 -24
- package/lib/metrics/types/histogram.js +26 -26
- package/lib/metrics/types/index.js +6 -6
- package/lib/metrics/types/info.js +17 -17
- package/lib/middlewares/action-hooks/index.js +82 -34
- package/lib/middlewares/bulkhead/index.js +34 -33
- package/lib/middlewares/cache/index.js +106 -0
- package/lib/middlewares/circuit-breaker/index.js +85 -60
- package/lib/middlewares/context-tracker/index.js +39 -39
- package/lib/middlewares/error-handler/index.js +14 -14
- package/lib/middlewares/index.js +3 -2
- package/lib/middlewares/metrics/getMiddlewareWrapper.js +17 -17
- package/lib/middlewares/metrics/index.js +29 -29
- package/lib/middlewares/retry/index.js +15 -15
- package/lib/middlewares/timeout/index.js +18 -18
- package/lib/middlewares/tracing/index.js +50 -37
- package/lib/middlewares/tracing/tags.js +43 -0
- package/lib/middlewares/validator/index.js +32 -32
- package/lib/registry/{action-endpoint.js → actionEndpoint.js} +8 -8
- package/lib/registry/collections/{action-collection.js → actionCollection.js} +39 -35
- package/lib/registry/collections/{endpoint-collection.js → endpointCollection.js} +64 -65
- package/lib/registry/collections/{event-collection.js → eventCollection.js} +65 -69
- package/lib/registry/collections/{node-collection.js → nodeCollection.js} +45 -45
- package/lib/registry/collections/{service-collection.js → serviceCollection.js} +61 -55
- package/lib/registry/eventEndpoint.js +26 -0
- package/lib/registry/load-balancer/base.js +3 -3
- package/lib/registry/load-balancer/index.js +7 -7
- package/lib/registry/node.js +27 -27
- package/lib/registry/registry.js +147 -163
- package/lib/registry/service/parseAction.js +16 -16
- package/lib/registry/service/parseEvent.js +18 -18
- package/lib/registry/service/reduceMixins.js +10 -10
- package/lib/registry/service/service.js +72 -72
- package/lib/registry/{service-item.js → serviceItem.js} +21 -21
- package/lib/runtime/{init-action-invoker.js → initActionInvoker.js} +21 -21
- package/lib/runtime/initCache.js +19 -0
- package/lib/runtime/{init-context-factory.js → initContextFactory.js} +22 -22
- package/lib/runtime/{init-eventbus.js → initEventbus.js} +54 -53
- package/lib/runtime/{init-logger.js → initLogger.js} +11 -11
- package/lib/runtime/{init-metrics.js → initMetrics.js} +55 -54
- package/lib/runtime/{init-middleware-manager.js → initMiddlewareManager.js} +21 -21
- package/lib/runtime/{init-registry.js → initRegistry.js} +6 -6
- package/lib/runtime/initServiceManager.js +145 -0
- package/lib/runtime/{init-tracing.js → initTracing.js} +25 -24
- package/lib/runtime/{init-transport.js → initTransport.js} +5 -5
- package/lib/runtime/{init-uuid-factory.js → initUuidFactory.js} +4 -4
- package/lib/runtime/{init-validator.js → initValidator.js} +5 -5
- package/lib/tracing/collectors/base.js +29 -37
- package/lib/tracing/collectors/event.js +33 -33
- package/lib/tracing/collectors/index.js +16 -16
- package/lib/tracing/span.js +34 -32
- package/lib/tracing/time.js +8 -8
- package/lib/transport/InboundTransformStream.js +75 -0
- package/lib/transport/adapters/adapteBase.js +107 -0
- package/lib/transport/adapters/adapters.js +4 -4
- package/lib/transport/adapters/dummy/index.js +19 -19
- package/lib/transport/adapters/fromURI.js +13 -13
- package/lib/transport/adapters/getAdapterByName.js +5 -5
- package/lib/transport/adapters/index.js +12 -12
- package/lib/transport/adapters/tcp/discovery/codec.js +4 -4
- package/lib/transport/adapters/tcp/discovery/index.js +90 -76
- package/lib/transport/adapters/tcp/index.js +180 -175
- package/lib/transport/adapters/tcp/tcp-messagetypes.js +7 -7
- package/lib/transport/adapters/tcp/tcpReader.js +39 -38
- package/lib/transport/adapters/tcp/tcpWriteStream.js +26 -26
- package/lib/transport/adapters/tcp/tcpWriter.js +58 -58
- package/lib/transport/adapters/tcp/utils.js +12 -12
- package/lib/transport/createMessage.js +11 -0
- package/lib/transport/createTransport.js +377 -334
- package/lib/transport/errorPayloadFactory.js +15 -0
- package/lib/transport/messageHandlers.js +517 -0
- package/lib/transport/messageTypes.js +23 -0
- package/lib/types.js +95 -71
- package/lib/utils/index.js +2 -2
- package/lib/utils/options.js +47 -45
- package/lib/utils/{restore-error.js → restoreError.js} +4 -4
- package/package.json +6 -12
- package/CHANGELOG.md +0 -1334
- package/lib/build-runtime.js +0 -70
- package/lib/cache/base.js +0 -142
- package/lib/cache/index.js +0 -48
- package/lib/cache/memory.js +0 -121
- package/lib/middlewares/tracing/buildTags.js +0 -17
- package/lib/new-errors.js +0 -25
- package/lib/registry/event-endpoint.js +0 -26
- package/lib/runtime/init-cache.js +0 -10
- package/lib/runtime/init-service-manager.js +0 -128
- package/lib/tracing/collectors/console.js +0 -34
- package/lib/tracing/index.js +0 -3
- package/lib/tracing/tracer.js +0 -64
- package/lib/transport/adapters/adapter-base.js +0 -92
- package/lib/transport/message-handlers.js +0 -448
- package/lib/transport/message-types.js +0 -59
- package/lib/transport/message.js +0 -16
|
@@ -1,68 +1,69 @@
|
|
|
1
|
-
const net = require('net')
|
|
2
|
-
const { EventEmitter } = require('events')
|
|
3
|
-
const TCPWriteStream = require('./tcpWriteStream')
|
|
1
|
+
const net = require('net');
|
|
2
|
+
const { EventEmitter } = require('events');
|
|
3
|
+
const TCPWriteStream = require('./tcpWriteStream');
|
|
4
4
|
|
|
5
5
|
module.exports = (adapter, options) => {
|
|
6
|
-
const self = Object.assign({}, EventEmitter.prototype)
|
|
7
|
-
let sockets = []
|
|
8
|
-
let server
|
|
6
|
+
const self = Object.assign({}, EventEmitter.prototype);
|
|
7
|
+
let sockets = [];
|
|
8
|
+
let server;
|
|
9
9
|
|
|
10
|
-
self.isConnected = false
|
|
10
|
+
self.isConnected = false;
|
|
11
11
|
|
|
12
12
|
self.listen = () => {
|
|
13
13
|
return new Promise((resolve, reject) => {
|
|
14
|
-
server = net.createServer(socket => onTCPClientConnected(socket))
|
|
14
|
+
server = net.createServer(socket => onTCPClientConnected(socket));
|
|
15
15
|
|
|
16
16
|
server.on('error', error => {
|
|
17
|
-
adapter.log.error('TCP server error', error)
|
|
18
|
-
reject(error)
|
|
19
|
-
})
|
|
17
|
+
adapter.log.error('TCP server error', error);
|
|
18
|
+
reject(error);
|
|
19
|
+
});
|
|
20
20
|
|
|
21
21
|
server.listen(options, () => {
|
|
22
|
-
const port = server.address().port
|
|
23
|
-
self.isConnected = true
|
|
24
|
-
adapter.log.info(`TCP server is listening on port ${port}`)
|
|
25
|
-
resolve(port)
|
|
26
|
-
})
|
|
27
|
-
})
|
|
28
|
-
}
|
|
22
|
+
const port = server.address().port;
|
|
23
|
+
self.isConnected = true;
|
|
24
|
+
adapter.log.info(`TCP server is listening on port ${port}`);
|
|
25
|
+
resolve(port);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
29
|
|
|
30
30
|
self.close = () => {
|
|
31
31
|
if (server && self.isConnected) {
|
|
32
|
-
|
|
33
|
-
sockets
|
|
32
|
+
server.close();
|
|
33
|
+
sockets.forEach(socket => socket.destroy());
|
|
34
|
+
sockets = [];
|
|
34
35
|
}
|
|
35
|
-
}
|
|
36
|
+
};
|
|
36
37
|
|
|
37
38
|
function onTCPClientConnected (socket) {
|
|
38
|
-
sockets.push(socket)
|
|
39
|
+
sockets.push(socket);
|
|
39
40
|
|
|
40
|
-
const parser = new TCPWriteStream(adapter, socket, options.maxPacketSize)
|
|
41
|
-
socket.pipe(parser)
|
|
41
|
+
const parser = new TCPWriteStream(adapter, socket, options.maxPacketSize);
|
|
42
|
+
socket.pipe(parser);
|
|
42
43
|
|
|
43
44
|
parser.on('error', error => {
|
|
44
|
-
adapter.log.warn('Packet parser error!', error)
|
|
45
|
-
closeSocket(socket)
|
|
46
|
-
})
|
|
45
|
+
adapter.log.warn('Packet parser error!', error);
|
|
46
|
+
closeSocket(socket);
|
|
47
|
+
});
|
|
47
48
|
|
|
48
49
|
parser.on('data', (type, message) => {
|
|
49
|
-
self.emit('message', type, message)
|
|
50
|
-
})
|
|
50
|
+
self.emit('message', type, message);
|
|
51
|
+
});
|
|
51
52
|
|
|
52
53
|
socket.on('error', error => {
|
|
53
|
-
adapter.log.warn('TCP connection error!', error)
|
|
54
|
-
closeSocket(socket)
|
|
55
|
-
})
|
|
54
|
+
adapter.log.warn('TCP connection error!', error);
|
|
55
|
+
closeSocket(socket);
|
|
56
|
+
});
|
|
56
57
|
|
|
57
58
|
socket.on('close', (isError) => {
|
|
58
|
-
closeSocket(socket)
|
|
59
|
-
})
|
|
59
|
+
closeSocket(socket);
|
|
60
|
+
});
|
|
60
61
|
}
|
|
61
62
|
|
|
62
63
|
function closeSocket (socket) {
|
|
63
|
-
socket.destroy()
|
|
64
|
-
sockets.splice(sockets.indexOf(socket), 1)
|
|
64
|
+
socket.destroy();
|
|
65
|
+
sockets.splice(sockets.indexOf(socket), 1);
|
|
65
66
|
}
|
|
66
67
|
|
|
67
|
-
return self
|
|
68
|
-
}
|
|
68
|
+
return self;
|
|
69
|
+
};
|
|
@@ -1,54 +1,54 @@
|
|
|
1
1
|
|
|
2
|
-
const { Writable } = require('stream')
|
|
3
|
-
const MessageTypes = require('../../
|
|
4
|
-
const TCPMessageTypeHelper = require('./tcp-messagetypes')
|
|
2
|
+
const { Writable } = require('stream');
|
|
3
|
+
const MessageTypes = require('../../messageTypes');
|
|
4
|
+
const TCPMessageTypeHelper = require('./tcp-messagetypes');
|
|
5
5
|
|
|
6
6
|
module.exports = class TCPWriteStream extends Writable {
|
|
7
7
|
constructor (adapter, socket, maxPacketSize) {
|
|
8
|
-
super()
|
|
9
|
-
this.buffer = null
|
|
10
|
-
this.adapter = adapter
|
|
11
|
-
this.socket = socket
|
|
12
|
-
this.messageTypeHelper = TCPMessageTypeHelper(MessageTypes)
|
|
13
|
-
this.maxPacketSize = maxPacketSize
|
|
8
|
+
super();
|
|
9
|
+
this.buffer = null;
|
|
10
|
+
this.adapter = adapter;
|
|
11
|
+
this.socket = socket;
|
|
12
|
+
this.messageTypeHelper = TCPMessageTypeHelper(MessageTypes);
|
|
13
|
+
this.maxPacketSize = maxPacketSize;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
_write (chunk, encoding, callback) {
|
|
17
|
-
let packet = chunk
|
|
17
|
+
let packet = chunk;
|
|
18
18
|
|
|
19
19
|
if (this.buffer && this.buffer.length > 0) {
|
|
20
|
-
packet = Buffer.concat([this.buffer, chunk])
|
|
21
|
-
this.buffer = null
|
|
20
|
+
packet = Buffer.concat([this.buffer, chunk]);
|
|
21
|
+
this.buffer = null;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
while (packet.length > 0) {
|
|
25
25
|
if (packet.length < 6) {
|
|
26
|
-
this.buffer = Buffer.from(packet)
|
|
27
|
-
return callback()
|
|
26
|
+
this.buffer = Buffer.from(packet);
|
|
27
|
+
return callback();
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
if (packet.length > this.maxPacketSize) {
|
|
31
|
-
return callback(new Error(`Incoming packet is larger than the 'maxPacketSize' limit (${packet.length} > ${this.maxPacketSize})!`))
|
|
31
|
+
return callback(new Error(`Incoming packet is larger than the 'maxPacketSize' limit (${packet.length} > ${this.maxPacketSize})!`));
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
const crc = packet[1] ^ packet[2] ^ packet[3] ^ packet[4] ^ packet[5]
|
|
34
|
+
const crc = packet[1] ^ packet[2] ^ packet[3] ^ packet[4] ^ packet[5];
|
|
35
35
|
|
|
36
36
|
if (crc !== packet[0]) {
|
|
37
|
-
return callback(new Error('Invalid cyclic redundancy check.'))
|
|
37
|
+
return callback(new Error('Invalid cyclic redundancy check.'));
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
const length = packet.readInt32BE(1)
|
|
40
|
+
const length = packet.readInt32BE(1);
|
|
41
41
|
if (packet.length >= length) {
|
|
42
|
-
const message = packet.slice(6, length)
|
|
43
|
-
const type = this.messageTypeHelper.getTypeByIndex(packet[5]) // resolveMessageType(packet[5])
|
|
42
|
+
const message = packet.slice(6, length);
|
|
43
|
+
const type = this.messageTypeHelper.getTypeByIndex(packet[5]); // resolveMessageType(packet[5])
|
|
44
44
|
|
|
45
|
-
this.emit('data', type, message, this.socket)
|
|
46
|
-
packet = packet.slice(length)
|
|
45
|
+
this.emit('data', type, message, this.socket);
|
|
46
|
+
packet = packet.slice(length);
|
|
47
47
|
} else {
|
|
48
|
-
this.buffer = Buffer.from(packet)
|
|
49
|
-
return callback()
|
|
48
|
+
this.buffer = Buffer.from(packet);
|
|
49
|
+
return callback();
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
-
callback()
|
|
52
|
+
callback();
|
|
53
53
|
}
|
|
54
|
-
}
|
|
54
|
+
};
|
|
@@ -1,119 +1,119 @@
|
|
|
1
|
-
const net = require('net')
|
|
2
|
-
const { EventEmitter } = require('events')
|
|
3
|
-
const MessageTypes = require('../../
|
|
4
|
-
const TCPMessageTypeHelper = require('./tcp-messagetypes')
|
|
1
|
+
const net = require('net');
|
|
2
|
+
const { EventEmitter } = require('events');
|
|
3
|
+
const MessageTypes = require('../../messageTypes');
|
|
4
|
+
const TCPMessageTypeHelper = require('./tcp-messagetypes');
|
|
5
5
|
|
|
6
|
-
module.exports = (adapter
|
|
7
|
-
const self = Object.assign({}, EventEmitter.prototype)
|
|
8
|
-
const sockets = new Map()
|
|
9
|
-
const messageTypeHelper = TCPMessageTypeHelper(MessageTypes)
|
|
10
|
-
const headerSize = 6
|
|
6
|
+
module.exports = (adapter) => {
|
|
7
|
+
const self = Object.assign({}, EventEmitter.prototype);
|
|
8
|
+
const sockets = new Map();
|
|
9
|
+
const messageTypeHelper = TCPMessageTypeHelper(MessageTypes);
|
|
10
|
+
const headerSize = 6;
|
|
11
11
|
|
|
12
12
|
const connect = nodeId => {
|
|
13
|
-
const node = adapter.broker.registry.nodeCollection.get(nodeId)
|
|
13
|
+
const node = adapter.broker.registry.nodeCollection.get(nodeId);
|
|
14
14
|
if (!node) {
|
|
15
|
-
return Promise.reject(new Error(`Missing node info for '${nodeId}'!`))
|
|
15
|
+
return Promise.reject(new Error(`Missing node info for '${nodeId}'!`));
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
const host = node.IPList[0]
|
|
19
|
-
const port = node.port
|
|
18
|
+
const host = node.IPList[0];
|
|
19
|
+
const port = node.port;
|
|
20
20
|
|
|
21
21
|
return new Promise((resolve, reject) => {
|
|
22
22
|
try {
|
|
23
23
|
const socket = net.connect({ host, port }, () => {
|
|
24
24
|
// send hello
|
|
25
|
-
socket.setNoDelay(true)
|
|
26
|
-
socket.nodeId = nodeId
|
|
27
|
-
socket.lastUsage = Date.now()
|
|
25
|
+
socket.setNoDelay(true);
|
|
26
|
+
socket.nodeId = nodeId;
|
|
27
|
+
socket.lastUsage = Date.now();
|
|
28
28
|
|
|
29
|
-
addSocket(nodeId, socket, true)
|
|
29
|
+
addSocket(nodeId, socket, true);
|
|
30
30
|
|
|
31
31
|
adapter.sendHello(nodeId)
|
|
32
32
|
.then(() => resolve(socket))
|
|
33
|
-
.catch(error => reject(error))
|
|
34
|
-
})
|
|
33
|
+
.catch(error => reject(error));
|
|
34
|
+
});
|
|
35
35
|
|
|
36
36
|
socket.on('error', error => {
|
|
37
|
-
removeSocket(nodeId)
|
|
37
|
+
removeSocket(nodeId);
|
|
38
38
|
|
|
39
|
-
self.emit('error', error, nodeId)
|
|
39
|
+
self.emit('error', error, nodeId);
|
|
40
40
|
|
|
41
41
|
if (error) {
|
|
42
|
-
reject(error)
|
|
42
|
+
reject(error);
|
|
43
43
|
}
|
|
44
|
-
})
|
|
44
|
+
});
|
|
45
45
|
|
|
46
|
-
socket.unref()
|
|
46
|
+
socket.unref();
|
|
47
47
|
} catch (error) {
|
|
48
48
|
if (error) {
|
|
49
|
-
reject(error)
|
|
49
|
+
reject(error);
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
-
})
|
|
53
|
-
}
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
54
|
|
|
55
55
|
const addSocket = (nodeId, socket, force) => {
|
|
56
|
-
const s = sockets.get(nodeId)
|
|
56
|
+
const s = sockets.get(nodeId);
|
|
57
57
|
|
|
58
58
|
if (!force && s && !s.destroyed) {
|
|
59
|
-
return
|
|
59
|
+
return;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
sockets.set(nodeId, socket)
|
|
63
|
-
}
|
|
62
|
+
sockets.set(nodeId, socket);
|
|
63
|
+
};
|
|
64
64
|
|
|
65
65
|
const removeSocket = nodeId => {
|
|
66
|
-
const socket = sockets.get(nodeId)
|
|
66
|
+
const socket = sockets.get(nodeId);
|
|
67
67
|
if (socket && !socket.destroyed) {
|
|
68
|
-
socket.destroy()
|
|
68
|
+
socket.destroy();
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
sockets.delete(nodeId)
|
|
72
|
-
}
|
|
71
|
+
sockets.delete(nodeId);
|
|
72
|
+
};
|
|
73
73
|
|
|
74
74
|
self.send = (nodeId, type, data) => {
|
|
75
75
|
return Promise.resolve()
|
|
76
76
|
.then(() => {
|
|
77
|
-
const socket = sockets.get(nodeId)
|
|
77
|
+
const socket = sockets.get(nodeId);
|
|
78
78
|
|
|
79
79
|
if (socket && !socket.destroyed) {
|
|
80
|
-
return socket
|
|
80
|
+
return socket;
|
|
81
81
|
}
|
|
82
|
-
return connect(nodeId)
|
|
82
|
+
return connect(nodeId);
|
|
83
83
|
})
|
|
84
84
|
.then(socket => {
|
|
85
85
|
return new Promise((resolve, reject) => {
|
|
86
|
-
const header = Buffer.alloc(headerSize)
|
|
86
|
+
const header = Buffer.alloc(headerSize);
|
|
87
87
|
|
|
88
|
-
header.writeInt32BE(data.length + headerSize, 1)
|
|
89
|
-
header.writeInt8(messageTypeHelper.getIndexByType(type), 5)
|
|
88
|
+
header.writeInt32BE(data.length + headerSize, 1);
|
|
89
|
+
header.writeInt8(messageTypeHelper.getIndexByType(type), 5);
|
|
90
90
|
|
|
91
|
-
const crc = header[1] ^ header[2] ^ header[3] ^ header[4] ^ header[5]
|
|
92
|
-
header[0] = crc
|
|
91
|
+
const crc = header[1] ^ header[2] ^ header[3] ^ header[4] ^ header[5];
|
|
92
|
+
header[0] = crc;
|
|
93
93
|
|
|
94
|
-
const payload = Buffer.concat([header, data])
|
|
94
|
+
const payload = Buffer.concat([header, data]);
|
|
95
95
|
|
|
96
96
|
try {
|
|
97
97
|
socket.write(payload, () => {
|
|
98
|
-
resolve()
|
|
99
|
-
})
|
|
98
|
+
resolve();
|
|
99
|
+
});
|
|
100
100
|
} catch (error) {
|
|
101
|
-
removeSocket(nodeId)
|
|
102
|
-
reject(error)
|
|
101
|
+
removeSocket(nodeId);
|
|
102
|
+
reject(error);
|
|
103
103
|
}
|
|
104
|
-
})
|
|
105
|
-
})
|
|
106
|
-
}
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
107
|
|
|
108
108
|
self.close = () => {
|
|
109
109
|
sockets.forEach(socket => {
|
|
110
110
|
if (!socket.destroyed) {
|
|
111
|
-
socket.destroy()
|
|
111
|
+
socket.destroy();
|
|
112
112
|
}
|
|
113
|
-
socket.end()
|
|
114
|
-
})
|
|
115
|
-
sockets.clear()
|
|
116
|
-
}
|
|
113
|
+
socket.end();
|
|
114
|
+
});
|
|
115
|
+
sockets.clear();
|
|
116
|
+
};
|
|
117
117
|
|
|
118
|
-
return self
|
|
119
|
-
}
|
|
118
|
+
return self;
|
|
119
|
+
};
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
const os = require('os')
|
|
1
|
+
const os = require('os');
|
|
2
2
|
|
|
3
3
|
function getBroadcastAddress ({ address, netmask }) {
|
|
4
|
-
const addressBytes = address.split('.').map(Number)
|
|
5
|
-
const netmaskBytes = netmask.split('.').map(Number)
|
|
4
|
+
const addressBytes = address.split('.').map(Number);
|
|
5
|
+
const netmaskBytes = netmask.split('.').map(Number);
|
|
6
6
|
const subnetBytes = netmaskBytes.map(
|
|
7
7
|
(_, index) => addressBytes[index] & netmaskBytes[index]
|
|
8
|
-
)
|
|
8
|
+
);
|
|
9
9
|
const broadcastBytes = netmaskBytes.map(
|
|
10
10
|
(_, index) => subnetBytes[index] | (~netmaskBytes[index] + 256)
|
|
11
|
-
)
|
|
12
|
-
return broadcastBytes.map(String).join('.')
|
|
11
|
+
);
|
|
12
|
+
return broadcastBytes.map(String).join('.');
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
exports.getBroadcastAddresses = () => {
|
|
16
|
-
const list = []
|
|
17
|
-
const interfaces = os.networkInterfaces()
|
|
16
|
+
const list = [];
|
|
17
|
+
const interfaces = os.networkInterfaces();
|
|
18
18
|
for (const iface in interfaces) {
|
|
19
19
|
for (const i in interfaces[iface]) {
|
|
20
|
-
const f = interfaces[iface][i]
|
|
20
|
+
const f = interfaces[iface][i];
|
|
21
21
|
if (f.family === 'IPv4') {
|
|
22
|
-
list.push(getBroadcastAddress(f))
|
|
22
|
+
list.push(getBroadcastAddress(f));
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
return list
|
|
27
|
-
}
|
|
26
|
+
return list;
|
|
27
|
+
};
|