stagelinq 3.3.0 → 3.3.2
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.
|
@@ -10,12 +10,41 @@ export declare class NetworkDevice {
|
|
|
10
10
|
private connectedSources;
|
|
11
11
|
private connectionInfo;
|
|
12
12
|
private logger;
|
|
13
|
+
/** Trailing bytes of a partially-received message, held for the next read. */
|
|
14
|
+
private queue;
|
|
15
|
+
/** Message ids already warned about, so a desync logs once and not per read. */
|
|
16
|
+
private readonly warnedMessageIds;
|
|
17
|
+
/** uint32 message id + 16 byte device token. */
|
|
18
|
+
private static readonly HEADER_BYTES;
|
|
19
|
+
/**
|
|
20
|
+
* Longest UTF-16 service name a ServicesAnnouncement may claim, in bytes.
|
|
21
|
+
* A larger prefix means framing is lost rather than that a big message is
|
|
22
|
+
* still on its way, and without the cap the queue would grow forever.
|
|
23
|
+
*/
|
|
24
|
+
private static readonly MAX_SERVICE_NAME_BYTES;
|
|
13
25
|
constructor(info: ConnectionInfo, logger?: Logger);
|
|
14
26
|
private get address();
|
|
15
27
|
private get port();
|
|
16
28
|
connect(): Promise<void>;
|
|
17
29
|
disconnect(): void;
|
|
30
|
+
/**
|
|
31
|
+
* Split one TCP read into whole messages and apply each.
|
|
32
|
+
*
|
|
33
|
+
* A read is an arbitrary slice of the stream, not a tidy list of messages:
|
|
34
|
+
* one message can straddle two reads and several can arrive in one. Anything
|
|
35
|
+
* left incomplete is held in `queue` and prepended to the next read. Before
|
|
36
|
+
* this, a split message ran the parser off the end of the buffer and the
|
|
37
|
+
* resulting assert escaped into the socket's 'data' handler, where it became
|
|
38
|
+
* an uncaught exception.
|
|
39
|
+
*/
|
|
18
40
|
messageHandler(p_message: Buffer): void;
|
|
41
|
+
/**
|
|
42
|
+
* Read exactly one message, or report why it could not be read.
|
|
43
|
+
*
|
|
44
|
+
* `need-more` means the bytes are valid but incomplete; the caller rewinds
|
|
45
|
+
* and waits. `desync` means the stream no longer lines up with the protocol.
|
|
46
|
+
*/
|
|
47
|
+
private readMessage;
|
|
19
48
|
getPort(): number;
|
|
20
49
|
getTimeAlive(): number;
|
|
21
50
|
connectToService<T extends InstanceType<typeof services.Service>>(ctor: {
|
|
@@ -57,6 +57,10 @@ class NetworkDevice {
|
|
|
57
57
|
this.services = {};
|
|
58
58
|
this.timeAlive = 0;
|
|
59
59
|
this.connectedSources = {};
|
|
60
|
+
/** Trailing bytes of a partially-received message, held for the next read. */
|
|
61
|
+
this.queue = null;
|
|
62
|
+
/** Message ids already warned about, so a desync logs once and not per read. */
|
|
63
|
+
this.warnedMessageIds = new Set();
|
|
60
64
|
this.connectionInfo = info;
|
|
61
65
|
this.logger = logger;
|
|
62
66
|
}
|
|
@@ -72,6 +76,7 @@ class NetworkDevice {
|
|
|
72
76
|
const info = this.connectionInfo;
|
|
73
77
|
this.logger.debug(`Attempting to connect to ${info.address}:${info.port}`);
|
|
74
78
|
this.connection = await tcp.connect(info.address, info.port, this.logger);
|
|
79
|
+
this.queue = null;
|
|
75
80
|
this.connection.socket.on('data', (p_message) => {
|
|
76
81
|
this.messageHandler(p_message);
|
|
77
82
|
});
|
|
@@ -86,36 +91,109 @@ class NetworkDevice {
|
|
|
86
91
|
(0, assert_1.strict)(this.connection);
|
|
87
92
|
this.connection.destroy();
|
|
88
93
|
this.connection = null;
|
|
94
|
+
this.queue = null;
|
|
89
95
|
}
|
|
90
96
|
///////////////////////////////////////////////////////////////////////////
|
|
91
97
|
// Message Handler
|
|
98
|
+
/**
|
|
99
|
+
* Split one TCP read into whole messages and apply each.
|
|
100
|
+
*
|
|
101
|
+
* A read is an arbitrary slice of the stream, not a tidy list of messages:
|
|
102
|
+
* one message can straddle two reads and several can arrive in one. Anything
|
|
103
|
+
* left incomplete is held in `queue` and prepended to the next read. Before
|
|
104
|
+
* this, a split message ran the parser off the end of the buffer and the
|
|
105
|
+
* resulting assert escaped into the socket's 'data' handler, where it became
|
|
106
|
+
* an uncaught exception.
|
|
107
|
+
*/
|
|
92
108
|
messageHandler(p_message) {
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
109
|
+
const buffer = this.queue && this.queue.length > 0 ? Buffer.concat([this.queue, p_message]) : p_message;
|
|
110
|
+
// Bound the view to this Buffer's own bytes. `.buffer` alone is the whole
|
|
111
|
+
// backing store, which for a pooled or concatenated Buffer holds bytes that
|
|
112
|
+
// are not part of this message.
|
|
113
|
+
const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
|
|
114
|
+
const ctx = new ReadContext_1.ReadContext(arrayBuffer, false);
|
|
115
|
+
this.queue = null;
|
|
116
|
+
try {
|
|
117
|
+
while (ctx.isEOF() === false) {
|
|
118
|
+
const start = ctx.tell();
|
|
119
|
+
const result = this.readMessage(ctx);
|
|
120
|
+
if (result === 'need-more') {
|
|
121
|
+
ctx.set(start);
|
|
122
|
+
this.queue = ctx.readRemainingAsNewBuffer();
|
|
107
123
|
break;
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
this.serviceRequestAllowed = true;
|
|
124
|
+
}
|
|
125
|
+
if (result === 'desync') {
|
|
126
|
+
// The id is unknown, so the message length is too, and there is no
|
|
127
|
+
// way to tell where the next one starts. Drop the rest of this read.
|
|
128
|
+
ctx.set(start);
|
|
129
|
+
this.logger.warn(`Lost framing on ${this.address}:${this.port}; dropping ${ctx.sizeLeft()} bytes`);
|
|
115
130
|
break;
|
|
116
|
-
|
|
117
|
-
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
// Never let a parse failure reach the socket's 'data' handler, where it
|
|
136
|
+
// would surface as an uncaught exception and take out the whole process.
|
|
137
|
+
this.logger.error(`Failed to parse message from ${this.address}:${this.port}: ` +
|
|
138
|
+
(err instanceof Error ? err.message : String(err)));
|
|
139
|
+
this.queue = null;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Read exactly one message, or report why it could not be read.
|
|
144
|
+
*
|
|
145
|
+
* `need-more` means the bytes are valid but incomplete; the caller rewinds
|
|
146
|
+
* and waits. `desync` means the stream no longer lines up with the protocol.
|
|
147
|
+
*/
|
|
148
|
+
readMessage(ctx) {
|
|
149
|
+
if (ctx.sizeLeft() < NetworkDevice.HEADER_BYTES) {
|
|
150
|
+
return 'need-more';
|
|
151
|
+
}
|
|
152
|
+
const id = ctx.readUInt32();
|
|
153
|
+
// const deviceToken = ctx.read(16);
|
|
154
|
+
ctx.seek(16);
|
|
155
|
+
switch (id) {
|
|
156
|
+
case types_1.MessageId.TimeStamp: {
|
|
157
|
+
// 16 byte second token, then the uptime as a uint64
|
|
158
|
+
if (ctx.sizeLeft() < 24) {
|
|
159
|
+
return 'need-more';
|
|
160
|
+
}
|
|
161
|
+
// const secondToken = ctx.read(16); // should be 00..
|
|
162
|
+
// we _shouldn't_ be receiving anything but blank tokens in the 2nd field
|
|
163
|
+
// assert(secondToken.every((x) => x === 0));
|
|
164
|
+
ctx.seek(16);
|
|
165
|
+
// Time Alive is in nanoseconds; convert back to seconds
|
|
166
|
+
this.timeAlive = Number(ctx.readUInt64() / (1000n * 1000n * 1000n));
|
|
167
|
+
// this.sendTimeStampMsg(deviceToken, Tokens.SoundSwitch);
|
|
168
|
+
return 'ok';
|
|
118
169
|
}
|
|
170
|
+
case types_1.MessageId.ServicesAnnouncement: {
|
|
171
|
+
if (ctx.sizeLeft() < 4) {
|
|
172
|
+
return 'need-more';
|
|
173
|
+
}
|
|
174
|
+
const nameBytes = ctx.readUInt32();
|
|
175
|
+
ctx.seek(-4);
|
|
176
|
+
if (nameBytes % 2 !== 0 || nameBytes > NetworkDevice.MAX_SERVICE_NAME_BYTES) {
|
|
177
|
+
return 'desync';
|
|
178
|
+
}
|
|
179
|
+
// the length prefix, the name itself, and the uint16 port
|
|
180
|
+
if (ctx.sizeLeft() < 4 + nameBytes + 2) {
|
|
181
|
+
return 'need-more';
|
|
182
|
+
}
|
|
183
|
+
const service = ctx.readNetworkStringUTF16();
|
|
184
|
+
const port = ctx.readUInt16();
|
|
185
|
+
this.servicePorts[service] = port;
|
|
186
|
+
return 'ok';
|
|
187
|
+
}
|
|
188
|
+
case types_1.MessageId.ServicesRequest:
|
|
189
|
+
this.serviceRequestAllowed = true;
|
|
190
|
+
return 'ok';
|
|
191
|
+
default:
|
|
192
|
+
if (!this.warnedMessageIds.has(id)) {
|
|
193
|
+
this.warnedMessageIds.add(id);
|
|
194
|
+
this.logger.warn(`Unhandled message id '${id}' from ${this.address}:${this.port}`);
|
|
195
|
+
}
|
|
196
|
+
return 'desync';
|
|
119
197
|
}
|
|
120
198
|
}
|
|
121
199
|
///////////////////////////////////////////////////////////////////////////
|
|
@@ -276,4 +354,12 @@ class NetworkDevice {
|
|
|
276
354
|
}
|
|
277
355
|
}
|
|
278
356
|
exports.NetworkDevice = NetworkDevice;
|
|
357
|
+
/** uint32 message id + 16 byte device token. */
|
|
358
|
+
NetworkDevice.HEADER_BYTES = 20;
|
|
359
|
+
/**
|
|
360
|
+
* Longest UTF-16 service name a ServicesAnnouncement may claim, in bytes.
|
|
361
|
+
* A larger prefix means framing is lost rather than that a big message is
|
|
362
|
+
* still on its way, and without the cap the queue would grow forever.
|
|
363
|
+
*/
|
|
364
|
+
NetworkDevice.MAX_SERVICE_NAME_BYTES = 1024;
|
|
279
365
|
//# sourceMappingURL=NetworkDevice.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkDevice.js","sourceRoot":"","sources":["../../network/NetworkDevice.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NetworkDevice.js","sourceRoot":"","sources":["../../network/NetworkDevice.ts"],"names":[],"mappings":"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"}
|
package/dist/network/announce.js
CHANGED
|
@@ -16,7 +16,6 @@ const types_1 = require("../types");
|
|
|
16
16
|
const dgram_1 = require("dgram");
|
|
17
17
|
const logger_1 = require("../types/logger");
|
|
18
18
|
const os_1 = require("os");
|
|
19
|
-
const assert_1 = require("assert");
|
|
20
19
|
const ip_1 = require("ip");
|
|
21
20
|
const WriteContext_1 = require("../utils/WriteContext");
|
|
22
21
|
/**
|
|
@@ -61,6 +60,8 @@ const isWindows = (0, os_1.platform)() === 'win32';
|
|
|
61
60
|
let moduleLogger = logger_1.noopLogger;
|
|
62
61
|
/** Track targets that have already warned about send failures */
|
|
63
62
|
const warnedTargets = new Set();
|
|
63
|
+
/** True while we are skipping announcements for want of a usable interface */
|
|
64
|
+
let warnedNoTargets = false;
|
|
64
65
|
function writeDiscoveryMessage(p_ctx, p_message) {
|
|
65
66
|
let written = 0;
|
|
66
67
|
written += p_ctx.writeFixedSizedString(types_1.DISCOVERY_MESSAGE_MARKER);
|
|
@@ -150,8 +151,25 @@ function closeWindowsSockets() {
|
|
|
150
151
|
*/
|
|
151
152
|
async function broadcastMessage(p_message) {
|
|
152
153
|
const targets = findBroadcastTargets();
|
|
153
|
-
|
|
154
|
+
// Wi-Fi asleep, cable unplugged, VPN-only: no interface to broadcast on. That
|
|
155
|
+
// is a state to sit out, not an error — throwing here used to escape the
|
|
156
|
+
// announce interval as an unhandled rejection on every tick.
|
|
157
|
+
if (targets.length === 0) {
|
|
158
|
+
if (!warnedNoTargets) {
|
|
159
|
+
moduleLogger.warn('No broadcast targets found; pausing announcements until an interface appears');
|
|
160
|
+
warnedNoTargets = true;
|
|
161
|
+
}
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
if (warnedNoTargets) {
|
|
165
|
+
moduleLogger.info('Broadcast target available again; resuming announcements');
|
|
166
|
+
warnedNoTargets = false;
|
|
167
|
+
}
|
|
154
168
|
if (isWindows) {
|
|
169
|
+
// An interface that appeared after announce() started has no socket yet.
|
|
170
|
+
if (targets.some((target) => !windowsSockets.has(target.localIP))) {
|
|
171
|
+
await initWindowsSockets();
|
|
172
|
+
}
|
|
155
173
|
// Windows: send from each interface's socket to its broadcast address
|
|
156
174
|
const promises = targets.map(async (target) => {
|
|
157
175
|
const socket = windowsSockets.get(target.localIP);
|
|
@@ -240,7 +258,7 @@ async function unannounce(message, logger = logger_1.noopLogger) {
|
|
|
240
258
|
announceClient.close();
|
|
241
259
|
announceClient = null;
|
|
242
260
|
}
|
|
243
|
-
moduleLogger.info(
|
|
261
|
+
moduleLogger.info('Unannounced myself');
|
|
244
262
|
}
|
|
245
263
|
/**
|
|
246
264
|
* Start announcing presence on the StageLinq network
|
|
@@ -265,20 +283,25 @@ async function announce(message, logger = logger_1.noopLogger) {
|
|
|
265
283
|
const msg = new Uint8Array(ctx.getBuffer());
|
|
266
284
|
// Immediately announce myself
|
|
267
285
|
await broadcastMessage(msg);
|
|
268
|
-
announceTimer = setInterval(
|
|
269
|
-
|
|
286
|
+
announceTimer = setInterval(() => {
|
|
287
|
+
// The timer callback is the top of its own stack: anything that escapes
|
|
288
|
+
// becomes an unhandled rejection, so it has to be caught here.
|
|
289
|
+
broadcastMessage(msg).catch((err) => {
|
|
290
|
+
moduleLogger.error(`Failed to announce: ${err instanceof Error ? err.message : String(err)}`);
|
|
291
|
+
});
|
|
292
|
+
}, types_1.ANNOUNCEMENT_INTERVAL);
|
|
293
|
+
moduleLogger.info('Announced myself');
|
|
270
294
|
}
|
|
271
|
-
;
|
|
272
295
|
function createDiscoveryMessage(action, discoveryMessageOptions) {
|
|
273
296
|
const msg = {
|
|
274
297
|
action: action,
|
|
275
298
|
port: 0,
|
|
276
299
|
software: {
|
|
277
300
|
name: discoveryMessageOptions.name,
|
|
278
|
-
version: discoveryMessageOptions.version
|
|
301
|
+
version: discoveryMessageOptions.version,
|
|
279
302
|
},
|
|
280
303
|
source: discoveryMessageOptions.source,
|
|
281
|
-
token: discoveryMessageOptions.token
|
|
304
|
+
token: discoveryMessageOptions.token,
|
|
282
305
|
};
|
|
283
306
|
return msg;
|
|
284
307
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"announce.js","sourceRoot":"","sources":["../../network/announce.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;
|
|
1
|
+
{"version":3,"file":"announce.js","sourceRoot":"","sources":["../../network/announce.ts"],"names":[],"mappings":"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"}
|