stagelinq 3.2.0 → 3.3.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/README.md CHANGED
@@ -225,9 +225,13 @@ This library incorporates code and ideas from other StageLinq implementations:
225
225
  ## Related Packages
226
226
 
227
227
  - [alphatheta-connect](https://github.com/chrisle/alphatheta-connect) — Pioneer Pro DJ Link integration
228
+ - [djay-connect](https://github.com/chrisle/djay-connect) — djay Pro track change events from NowPlaying.txt
228
229
  - [metadata-connect](https://github.com/chrisle/metadata-connect) — Audio metadata extraction with partial file reads
230
+ - [onelibrary-connect](https://github.com/chrisle/onelibrary-connect) — Rekordbox OneLibrary (exportLibrary.db) database access
229
231
  - [rekordbox-connect](https://github.com/chrisle/rekordbox-connect) — Rekordbox database integration
230
- - [serato-connect](https://github.com/chrisle/serato-connect) — Serato DJ integration
232
+ - [serato-connect](https://github.com/chrisle/serato-connect) — Serato DJ history, cues, beatgrids, crates, and library
233
+ - [traktor-connect](https://github.com/chrisle/traktor-connect) — Traktor Pro track metadata via OGG Vorbis broadcast
234
+ - [virtualdj-connect](https://github.com/chrisle/virtualdj-connect) — VirtualDJ track change events from M3U history
231
235
 
232
236
  These libraries power [Now Playing](https://nowplayingapp.com) — a real-time track display app for DJs and streamers.
233
237
 
@@ -21,6 +21,10 @@ export declare class StageLinqDevices extends EventEmitter {
21
21
  private _databases;
22
22
  private devices;
23
23
  private discoveryStatus;
24
+ /** When each FAILED device last failed, for the retry cooldown. */
25
+ private failedAt;
26
+ /** Ignored mixers we have already warned about, so the log fires once each. */
27
+ private loggedIgnoredMixers;
24
28
  private options;
25
29
  private logger;
26
30
  private deviceWatchTimeout;
@@ -96,6 +100,13 @@ export declare class StageLinqDevices extends EventEmitter {
96
100
  private deviceId;
97
101
  private isConnecting;
98
102
  private isConnected;
103
+ /**
104
+ * True while a device is in its post-failure cooldown.
105
+ *
106
+ * FAILED used to be terminal, which meant one unreachable moment at startup
107
+ * removed a device for the whole session. Once the cooldown expires we drop
108
+ * the status so the next discovery message reconnects it.
109
+ */
99
110
  private isFailed;
100
111
  private isIgnored;
101
112
  private isDeviceSeen;
@@ -21,6 +21,14 @@ var ConnectionStatus;
21
21
  const WAIT_FOR_DEVICES_INITIAL_MS = 3000;
22
22
  // Max poll interval after backoff when no devices are found
23
23
  const WAIT_FOR_DEVICES_MAX_MS = 30000;
24
+ // Base linear backoff between device connection attempts (attempt N waits
25
+ // N * this). A device that is still booting needs real time between tries.
26
+ const RETRY_BACKOFF_MS = 500;
27
+ // How long a device stays in FAILED before a fresh discovery message is
28
+ // allowed to retry it. Without this a device that is briefly unreachable at
29
+ // startup is ignored for the entire session, so its channel faders never
30
+ // reach the mix processor and the overlay stops respecting them (NP3-310).
31
+ const RETRY_AFTER_FAILURE_MS = 10000;
24
32
  //////////////////////////////////////////////////////////////////////////////
25
33
  /**
26
34
  * Handle connecting and disconnecting from discovered devices on the
@@ -31,6 +39,10 @@ class StageLinqDevices extends events_1.EventEmitter {
31
39
  super();
32
40
  this.devices = new Map();
33
41
  this.discoveryStatus = new Map();
42
+ /** When each FAILED device last failed, for the retry cooldown. */
43
+ this.failedAt = new Map();
44
+ /** Ignored mixers we have already warned about, so the log fires once each. */
45
+ this.loggedIgnoredMixers = new Set();
34
46
  this.deviceWatchTimeout = null;
35
47
  this.deviceWatchInterval = WAIT_FOR_DEVICES_INITIAL_MS;
36
48
  this.stateMapCallback = [];
@@ -54,7 +66,13 @@ class StageLinqDevices extends events_1.EventEmitter {
54
66
  || this.isFailed(connectionInfo)
55
67
  || this.isIgnored(connectionInfo))
56
68
  return;
57
- this.connectToDevice(connectionInfo);
69
+ // Deliberately not awaited — discovery must stay responsive — but the
70
+ // rejection has to be handled here or a failed connection surfaces as an
71
+ // unhandled promise rejection instead of a logged, recoverable failure.
72
+ void this.connectToDevice(connectionInfo).catch((e) => {
73
+ this.logger.warn(`Giving up on ${this.deviceId(connectionInfo)} for now ` +
74
+ `(retry in ${RETRY_AFTER_FAILURE_MS / 1000}s): ${e}`);
75
+ });
58
76
  }
59
77
  /**
60
78
  * Disconnect from all connected devices
@@ -170,12 +188,13 @@ class StageLinqDevices extends events_1.EventEmitter {
170
188
  async connectToDevice(connectionInfo) {
171
189
  // Mark this device as connecting.
172
190
  this.discoveryStatus.set(this.deviceId(connectionInfo), ConnectionStatus.CONNECTING);
191
+ const maxRetries = this.options.maxRetries ?? 3;
173
192
  let attempt = 1;
174
- while (attempt < (this.options.maxRetries ?? 3)) {
193
+ while (attempt <= maxRetries) {
175
194
  try {
176
195
  // Connect to the device.
177
196
  this.logger.info(`Connecting to ${this.deviceId(connectionInfo)}. ` +
178
- `Attempt ${attempt}/${this.options.maxRetries}`);
197
+ `Attempt ${attempt}/${maxRetries}`);
179
198
  const networkDevice = new _1.NetworkDevice(connectionInfo, this.logger);
180
199
  await networkDevice.connect();
181
200
  // Setup file transfer service
@@ -197,15 +216,22 @@ class StageLinqDevices extends events_1.EventEmitter {
197
216
  return; // Don't forget to return!
198
217
  }
199
218
  catch (e) {
200
- // Failed connection. Sleep then retry.
219
+ // Failed connection. Sleep then retry. The await matters: without it
220
+ // the backoff is a no-op and every attempt fires in the same tick, so
221
+ // a device that just needs a moment to settle burns all its retries in
222
+ // microseconds and is marked FAILED.
201
223
  this.logger.warn(`Could not connect to ${this.deviceId(connectionInfo)} ` +
202
- `(${attempt}/${this.options.maxRetries}): ${e}`);
224
+ `(${attempt}/${maxRetries}): ${e}`);
203
225
  attempt += 1;
204
- (0, utils_1.sleep)(500);
226
+ if (attempt <= maxRetries) {
227
+ await (0, utils_1.sleep)(RETRY_BACKOFF_MS * (attempt - 1));
228
+ }
205
229
  }
206
230
  }
207
- // We failed 3 times. Throw exception.
231
+ // Every attempt failed. Mark it and stamp the time so the cooldown in
232
+ // isFailed() can let a later discovery message retry the device.
208
233
  this.discoveryStatus.set(this.deviceId(connectionInfo), ConnectionStatus.FAILED);
234
+ this.failedAt.set(this.deviceId(connectionInfo), Date.now());
209
235
  throw new Error(`Could not connect to ${this.deviceId(connectionInfo)}`);
210
236
  }
211
237
  async setupFileTransferService(networkDevice, connectionInfo) {
@@ -293,16 +319,46 @@ class StageLinqDevices extends events_1.EventEmitter {
293
319
  return this.discoveryStatus.get(this.deviceId(device))
294
320
  === ConnectionStatus.CONNECTED;
295
321
  }
322
+ /**
323
+ * True while a device is in its post-failure cooldown.
324
+ *
325
+ * FAILED used to be terminal, which meant one unreachable moment at startup
326
+ * removed a device for the whole session. Once the cooldown expires we drop
327
+ * the status so the next discovery message reconnects it.
328
+ */
296
329
  isFailed(device) {
297
- return this.discoveryStatus.get(this.deviceId(device))
298
- === ConnectionStatus.FAILED;
330
+ const id = this.deviceId(device);
331
+ if (this.discoveryStatus.get(id) !== ConnectionStatus.FAILED)
332
+ return false;
333
+ const failedAt = this.failedAt.get(id) ?? 0;
334
+ if (Date.now() - failedAt < RETRY_AFTER_FAILURE_MS)
335
+ return true;
336
+ this.logger.info(`Retrying previously failed device ${id}`);
337
+ this.discoveryStatus.delete(id);
338
+ this.failedAt.delete(id);
339
+ return false;
299
340
  }
300
341
  isIgnored(device) {
342
+ // X1800/X1850 mixers (software.name JM08) are ignored. On an SC-players +
343
+ // X1850 rig this mixer is the ONLY device carrying channel faders, so
344
+ // ignoring it may be why such a rig's fader is not respected in the overlay
345
+ // (NP3-333 — an unverified suspicion; needs Denon hardware to confirm).
346
+ // Behaviour is unchanged for now, but we surface each ignored mixer once so
347
+ // a real user of this hardware shows up in telemetry instead of silently
348
+ // degrading. Do NOT remove the ignore without checking why JM08 was added.
349
+ if (device.software.name === 'JM08') {
350
+ const id = this.deviceId(device);
351
+ if (!this.loggedIgnoredMixers.has(id)) {
352
+ this.loggedIgnoredMixers.add(id);
353
+ this.logger.warn(`Ignoring StageLinQ mixer ${id} (X1800/X1850). If this rig relies on ` +
354
+ `the mixer for channel faders, the overlay may not respect them (NP3-333).`);
355
+ }
356
+ return true;
357
+ }
301
358
  return (device.source === this.options.actingAs?.source
302
359
  || device.software.name === 'OfflineAnalyzer'
303
360
  || /^SoundSwitch/i.test(device.software.name)
304
361
  || /^Resolume/i.test(device.software.name)
305
- || device.software.name === 'JM08' // Ignore X1800/X1850 mixers
306
362
  || device.software.name === 'SSS0' // Ignore SoundSwitchEmbedded on players
307
363
  );
308
364
  }
@@ -1 +1 @@
1
- {"version":3,"file":"StageLinqDevices.js","sourceRoot":"","sources":["../../network/StageLinqDevices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StageLinqDevices.js","sourceRoot":"","sources":["../../network/StageLinqDevices.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,14 @@
1
1
  import { ReadContext } from '../utils/ReadContext';
2
2
  import { Service } from './Service';
3
3
  import type { ServiceMessage, Source } from '../types';
4
+ /**
5
+ * Chunk size assumed before the device tells us otherwise.
6
+ *
7
+ * The firmware picks the real chunk size, not us. Engine OS 5.x uses something
8
+ * larger than this, so treat it strictly as a starting guess: it is only ever
9
+ * used for a read that starts at byte 0 (chunk 0 is chunk 0 at any chunk size),
10
+ * and is replaced by the measured value as soon as a chunk arrives.
11
+ */
4
12
  export declare const CHUNK_SIZE = 4096;
5
13
  type FileTransferData = any;
6
14
  interface FileTransferProgress {
@@ -15,7 +23,22 @@ export declare interface FileTransfer {
15
23
  export declare class FileTransfer extends Service<FileTransferData> {
16
24
  private receivedFile;
17
25
  private _available;
26
+ /**
27
+ * The device's real chunk size, measured from the wire. Null until a chunk
28
+ * that is provably not a file's final chunk has been seen. The firmware
29
+ * cannot change this mid-connection, so it is cached for the life of the
30
+ * service.
31
+ */
32
+ private deviceChunkSize;
18
33
  init(): Promise<void>;
34
+ /**
35
+ * Record the device's chunk size from an observed chunk.
36
+ *
37
+ * Only a chunk that is *not* the last chunk of its file carries the true
38
+ * size — a final chunk is short, and a file smaller than one chunk arrives
39
+ * whole. Those cases teach us nothing and are ignored rather than guessed at.
40
+ */
41
+ private noteChunkSize;
19
42
  protected parseData(p_ctx: ReadContext): ServiceMessage<FileTransferData>;
20
43
  protected messageHandler(p_data: ServiceMessage<FileTransferData>): void;
21
44
  getFile(p_location: string): Promise<Uint8Array>;
@@ -34,6 +57,24 @@ export declare class FileTransfer extends Service<FileTransferData> {
34
57
  * @returns Buffer containing the requested bytes
35
58
  */
36
59
  getFileRange(p_location: string, offset: number, length: number): Promise<Buffer>;
60
+ /**
61
+ * Measure the device's chunk size with a self-contained transfer that pulls
62
+ * only chunk 0 of `p_location`.
63
+ *
64
+ * Leaves `deviceChunkSize` unset when the file is smaller than a single chunk,
65
+ * since that chunk says nothing about the device's size. Callers must already
66
+ * hold the availability lock.
67
+ */
68
+ private learnChunkSize;
69
+ /**
70
+ * Request chunks `p_startChunk`..`p_endChunk` and concatenate them in arrival
71
+ * order.
72
+ *
73
+ * Completion is decided on bytes, not on a chunk count: a count would hang
74
+ * whenever the requested range was computed with a smaller chunk size than
75
+ * the device actually uses, because fewer chunks then cover the same bytes.
76
+ */
77
+ private receiveChunks;
37
78
  private requestStat;
38
79
  private requestSources;
39
80
  private requestFileTransferId;
@@ -7,6 +7,14 @@ const sleep_1 = require("../utils/sleep");
7
7
  const assert_1 = require("assert");
8
8
  const WriteContext_1 = require("../utils/WriteContext");
9
9
  const MAGIC_MARKER = 'fltx';
10
+ /**
11
+ * Chunk size assumed before the device tells us otherwise.
12
+ *
13
+ * The firmware picks the real chunk size, not us. Engine OS 5.x uses something
14
+ * larger than this, so treat it strictly as a starting guess: it is only ever
15
+ * used for a read that starts at byte 0 (chunk 0 is chunk 0 at any chunk size),
16
+ * and is replaced by the measured value as soon as a chunk arrives.
17
+ */
10
18
  exports.CHUNK_SIZE = 4096;
11
19
  var MessageId;
12
20
  (function (MessageId) {
@@ -24,8 +32,30 @@ class FileTransfer extends Service_1.Service {
24
32
  super(...arguments);
25
33
  this.receivedFile = null;
26
34
  this._available = true;
35
+ /**
36
+ * The device's real chunk size, measured from the wire. Null until a chunk
37
+ * that is provably not a file's final chunk has been seen. The firmware
38
+ * cannot change this mid-connection, so it is cached for the life of the
39
+ * service.
40
+ */
41
+ this.deviceChunkSize = null;
27
42
  }
28
43
  async init() { }
44
+ /**
45
+ * Record the device's chunk size from an observed chunk.
46
+ *
47
+ * Only a chunk that is *not* the last chunk of its file carries the true
48
+ * size — a final chunk is short, and a file smaller than one chunk arrives
49
+ * whole. Those cases teach us nothing and are ignored rather than guessed at.
50
+ */
51
+ noteChunkSize(byteStart, chunkLength, fileSize) {
52
+ if (byteStart + chunkLength >= fileSize)
53
+ return;
54
+ if (this.deviceChunkSize === chunkLength)
55
+ return;
56
+ this.logger.debug(`Device chunk size measured as ${chunkLength} bytes`);
57
+ this.deviceChunkSize = chunkLength;
58
+ }
29
59
  parseData(p_ctx) {
30
60
  const check = p_ctx.getString(4);
31
61
  (0, assert_1.strict)(check === MAGIC_MARKER);
@@ -102,8 +132,10 @@ class FileTransfer extends Service_1.Service {
102
132
  (0, assert_1.strict)(p_ctx.readUInt32() === 0x0);
103
133
  const offset = p_ctx.readUInt32();
104
134
  const chunksize = p_ctx.readUInt32();
135
+ // The declared size must match what actually arrived. That is the real
136
+ // integrity check; there is deliberately no upper bound on it, because
137
+ // the device chooses the chunk size and Engine OS 5.x exceeds 4096.
105
138
  (0, assert_1.strict)(chunksize === p_ctx.sizeLeft());
106
- (0, assert_1.strict)(p_ctx.sizeLeft() <= exports.CHUNK_SIZE);
107
139
  return {
108
140
  id: messageId,
109
141
  message: {
@@ -120,7 +152,7 @@ class FileTransfer extends Service_1.Service {
120
152
  };
121
153
  }
122
154
  case MessageId.ServiceDisconnect: {
123
- //This message is received when the player that FileTransfer is connected to shuts down
155
+ //This message is received when the player that FileTransfer is connected to shuts down
124
156
  this.disconnect();
125
157
  return {
126
158
  id: messageId,
@@ -136,8 +168,18 @@ class FileTransfer extends Service_1.Service {
136
168
  }
137
169
  messageHandler(p_data) {
138
170
  if (p_data.id === MessageId.FileTransferChunk && this.receivedFile) {
139
- (0, assert_1.strict)(this.receivedFile.sizeLeft() >= p_data.message.size);
140
- this.receivedFile.write(p_data.message.data);
171
+ const room = this.receivedFile.sizeLeft();
172
+ if (room <= 0)
173
+ return;
174
+ const chunk = p_data.message.data;
175
+ const fileSize = this.receivedFile.tell() + room;
176
+ this.noteChunkSize(this.receivedFile.tell(), chunk.byteLength, fileSize);
177
+ // Write only what still fits. A device may overrun the declared file size
178
+ // on the final chunk, and WriteContext is autoGrow by default — letting it
179
+ // resize would push the buffer past `size`, so isEOF() would never become
180
+ // true and getFile() would spin until DOWNLOAD_TIMEOUT. Slicing keeps the
181
+ // write position landing exactly on the end of the file.
182
+ this.receivedFile.write(room < chunk.byteLength ? chunk.subarray(0, room) : chunk);
141
183
  }
142
184
  else {
143
185
  // Logger.log(p_data);
@@ -152,7 +194,10 @@ class FileTransfer extends Service_1.Service {
152
194
  const txinfo = await this.waitForMessage(MessageId.FileTransferId);
153
195
  if (txinfo) {
154
196
  this.receivedFile = new WriteContext_1.WriteContext({ size: txinfo.size });
155
- const totalChunks = Math.ceil(txinfo.size / exports.CHUNK_SIZE);
197
+ // Over-requesting is harmless (the device stops at EOF) but requesting
198
+ // too few chunks would leave the write buffer short of isEOF() and hang,
199
+ // so fall back to the smaller assumed size until the real one is known.
200
+ const totalChunks = Math.ceil(txinfo.size / (this.deviceChunkSize ?? exports.CHUNK_SIZE));
156
201
  const total = parseInt(txinfo.size);
157
202
  if (total === 0) {
158
203
  this.logger.warn(`${p_location} doesn't exist or is a streaming file`);
@@ -171,7 +216,7 @@ class FileTransfer extends Service_1.Service {
171
216
  sizeLeft: this.receivedFile?.sizeLeft() ?? 0,
172
217
  total: txinfo.size,
173
218
  bytesDownloaded: bytesDownloaded,
174
- percentComplete: percentComplete
219
+ percentComplete: percentComplete,
175
220
  });
176
221
  this.logger.debug(`Reading ${p_location} progressComplete=${Math.ceil(percentComplete)}% ${bytesDownloaded}/${total}`);
177
222
  await (0, sleep_1.sleep)(200);
@@ -241,6 +286,14 @@ class FileTransfer extends Service_1.Service {
241
286
  await this.waitTillAvailable();
242
287
  this._available = false;
243
288
  try {
289
+ // `requestChunkRange` speaks in chunk indices, so a read that does not
290
+ // start at byte 0 cannot be turned into a request until the device's
291
+ // chunk size is known. In practice every parser reads the file header
292
+ // first (offset 0), which is chunk 0 at any chunk size and measures the
293
+ // size for free — so this probe is a rarely-taken fallback.
294
+ if (this.deviceChunkSize === null && offset > 0) {
295
+ await this.learnChunkSize(p_location);
296
+ }
244
297
  // Request file transfer ID to get file size and txid
245
298
  await this.requestFileTransferId(p_location);
246
299
  const txinfo = await this.waitForMessage(MessageId.FileTransferId);
@@ -256,51 +309,88 @@ class FileTransfer extends Service_1.Service {
256
309
  await this.signalTransferComplete();
257
310
  return Buffer.alloc(0);
258
311
  }
259
- // Calculate which chunks we need
260
- const startChunk = Math.floor(offset / exports.CHUNK_SIZE);
261
- const endChunk = Math.floor((endOffset - 1) / exports.CHUNK_SIZE);
262
- const totalChunks = endChunk - startChunk + 1;
263
- // Create buffer for the chunks we need
264
- const chunkBuffer = Buffer.alloc(totalChunks * exports.CHUNK_SIZE);
265
- let chunksReceived = 0;
266
- // Set up chunk listener
267
- const chunkPromise = new Promise((resolve, reject) => {
268
- const timeout = setTimeout(() => {
269
- this.removeListener('message', chunkListener);
270
- reject(new Error(`Timeout reading range from '${p_location}'`));
271
- }, types_1.DOWNLOAD_TIMEOUT);
272
- const chunkListener = (p_message) => {
273
- if (p_message.id === MessageId.FileTransferChunk) {
274
- const chunkOffset = p_message.message.offset;
275
- const chunkIndex = Math.floor(chunkOffset / exports.CHUNK_SIZE) - startChunk;
276
- if (chunkIndex >= 0 && chunkIndex < totalChunks) {
277
- const bufferOffset = chunkIndex * exports.CHUNK_SIZE;
278
- p_message.message.data.copy(chunkBuffer, bufferOffset);
279
- chunksReceived++;
280
- if (chunksReceived >= totalChunks) {
281
- clearTimeout(timeout);
282
- this.removeListener('message', chunkListener);
283
- resolve();
284
- }
285
- }
286
- }
287
- };
288
- this.addListener('message', chunkListener);
312
+ const chunkSize = this.deviceChunkSize ?? exports.CHUNK_SIZE;
313
+ const startChunk = Math.floor(offset / chunkSize);
314
+ const endChunk = Math.floor((endOffset - 1) / chunkSize);
315
+ const firstByteStart = startChunk * chunkSize;
316
+ const received = await this.receiveChunks(p_location, txinfo.txid, startChunk, endChunk, {
317
+ firstByteStart,
318
+ fileSize,
319
+ targetBytes: endOffset - firstByteStart,
289
320
  });
290
- // Request the specific chunk range
291
- await this.requestChunkRange(txinfo.txid, startChunk, endChunk);
292
- // Wait for all chunks
293
- await chunkPromise;
294
- // Signal transfer complete
295
321
  await this.signalTransferComplete();
296
- // Extract the exact bytes requested
297
- const startInBuffer = offset - (startChunk * exports.CHUNK_SIZE);
298
- return chunkBuffer.subarray(startInBuffer, startInBuffer + actualLength);
322
+ // Extract the exact bytes requested. Chunks are concatenated in arrival
323
+ // order rather than placed by their reported offset: the device answers a
324
+ // contiguous range sequentially over TCP, which is the same property
325
+ // getFile() has always relied on.
326
+ const startInBuffer = offset - firstByteStart;
327
+ return received.subarray(startInBuffer, startInBuffer + actualLength);
299
328
  }
300
329
  finally {
301
330
  this._available = true;
302
331
  }
303
332
  }
333
+ /**
334
+ * Measure the device's chunk size with a self-contained transfer that pulls
335
+ * only chunk 0 of `p_location`.
336
+ *
337
+ * Leaves `deviceChunkSize` unset when the file is smaller than a single chunk,
338
+ * since that chunk says nothing about the device's size. Callers must already
339
+ * hold the availability lock.
340
+ */
341
+ async learnChunkSize(p_location) {
342
+ await this.requestFileTransferId(p_location);
343
+ const txinfo = await this.waitForMessage(MessageId.FileTransferId);
344
+ if (!txinfo || txinfo.size === 0)
345
+ return;
346
+ // `targetBytes: 1` resolves on the first chunk, whatever its size.
347
+ await this.receiveChunks(p_location, txinfo.txid, 0, 0, {
348
+ firstByteStart: 0,
349
+ fileSize: txinfo.size,
350
+ targetBytes: 1,
351
+ });
352
+ await this.signalTransferComplete();
353
+ }
354
+ /**
355
+ * Request chunks `p_startChunk`..`p_endChunk` and concatenate them in arrival
356
+ * order.
357
+ *
358
+ * Completion is decided on bytes, not on a chunk count: a count would hang
359
+ * whenever the requested range was computed with a smaller chunk size than
360
+ * the device actually uses, because fewer chunks then cover the same bytes.
361
+ */
362
+ async receiveChunks(p_location, p_txid, p_startChunk, p_endChunk, p_range) {
363
+ const chunks = [];
364
+ let total = 0;
365
+ const chunkPromise = new Promise((resolve, reject) => {
366
+ const timeout = setTimeout(() => {
367
+ this.removeListener('message', chunkListener);
368
+ reject(new Error(`Timeout reading range from '${p_location}'`));
369
+ }, types_1.DOWNLOAD_TIMEOUT);
370
+ const finish = () => {
371
+ clearTimeout(timeout);
372
+ this.removeListener('message', chunkListener);
373
+ resolve();
374
+ };
375
+ const chunkListener = (p_message) => {
376
+ if (p_message.id !== MessageId.FileTransferChunk)
377
+ return;
378
+ const data = p_message.message.data;
379
+ this.noteChunkSize(p_range.firstByteStart + total, data.byteLength, p_range.fileSize);
380
+ chunks.push(data);
381
+ total += data.byteLength;
382
+ // Either the requested bytes are covered, or the file ran out first
383
+ // (which happens whenever the range was over-requested past EOF).
384
+ if (total >= p_range.targetBytes || p_range.firstByteStart + total >= p_range.fileSize) {
385
+ finish();
386
+ }
387
+ };
388
+ this.addListener('message', chunkListener);
389
+ });
390
+ await this.requestChunkRange(p_txid, p_startChunk, p_endChunk);
391
+ await chunkPromise;
392
+ return Buffer.concat(chunks);
393
+ }
304
394
  ///////////////////////////////////////////////////////////////////////////
305
395
  // Private methods
306
396
  async requestStat(p_filepath) {
@@ -1 +1 @@
1
- {"version":3,"file":"FileTransfer.js","sourceRoot":"","sources":["../../services/FileTransfer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileTransfer.js","sourceRoot":"","sources":["../../services/FileTransfer.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,20 @@ export declare abstract class Service<T> extends EventEmitter {
12
12
  protected controller: NetworkDevice;
13
13
  protected connection: tcp.Connection | null;
14
14
  protected logger: Logger;
15
+ /** Trailing bytes of a partially-received message, held for the next read. */
16
+ private queue;
15
17
  constructor(p_address: string, p_port: number, p_controller: NetworkDevice, logger?: Logger);
18
+ /**
19
+ * Split one TCP read into length-prefixed messages and dispatch each.
20
+ *
21
+ * Any trailing partial message is held in `queue` and prepended to the next
22
+ * read. Parsing a single message is isolated so that one malformed or
23
+ * unsupported message costs only itself — previously a throw unwound past
24
+ * the framing loop, discarding every later message in the same read *and*
25
+ * the pending `queue`, which corrupted reassembly rather than skipping a
26
+ * message.
27
+ */
28
+ protected handleData(p_data: Buffer): void;
16
29
  connect(): Promise<void>;
17
30
  disconnect(): void;
18
31
  waitForMessage(p_messageId: number): Promise<T>;
@@ -46,68 +46,80 @@ class Service extends events_1.EventEmitter {
46
46
  constructor(p_address, p_port, p_controller, logger = logger_1.noopLogger) {
47
47
  super();
48
48
  this.connection = null;
49
+ /** Trailing bytes of a partially-received message, held for the next read. */
50
+ this.queue = null;
49
51
  this.address = p_address;
50
52
  this.port = p_port;
51
53
  this.name = this.constructor.name;
52
54
  this.controller = p_controller;
53
55
  this.logger = logger;
54
56
  }
55
- async connect() {
56
- (0, assert_1.strict)(!this.connection);
57
- this.connection = await tcp.connect(this.address, this.port);
58
- let queue = null;
59
- this.connection.socket.on('data', (p_data) => {
60
- let buffer;
61
- if (queue && queue.length > 0) {
62
- buffer = Buffer.concat([queue, p_data]);
63
- }
64
- else {
65
- buffer = p_data;
66
- }
67
- // FIXME: Clean up this arraybuffer confusion mess
68
- const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
69
- const ctx = new ReadContext_1.ReadContext(arrayBuffer, false);
70
- queue = null;
71
- try {
72
- while (ctx.isEOF() === false) {
73
- if (ctx.sizeLeft() < 4) {
74
- queue = ctx.readRemainingAsNewBuffer();
75
- break;
76
- }
77
- const length = ctx.readUInt32();
78
- if (length <= ctx.sizeLeft()) {
79
- const message = ctx.read(length);
80
- // Use slice to get an actual copy of the message instead of working on the shared underlying ArrayBuffer
81
- const data = message.buffer.slice(message.byteOffset, message.byteOffset + length);
82
- const networkTap = (0, config_1.getConfig)().networkTap;
83
- if (networkTap) {
84
- networkTap({
85
- direction: 'recv',
86
- service: this.name,
87
- address: this.address,
88
- port: this.port,
89
- data: message,
90
- });
91
- }
92
- const parsedData = this.parseData(new ReadContext_1.ReadContext(data, false));
93
- // Forward parsed data to message handler
94
- if (parsedData) {
95
- this.messageHandler(parsedData);
96
- this.emit('message', parsedData);
97
- }
98
- }
99
- else {
100
- ctx.seek(-4); // Rewind 4 bytes to include the length again
101
- queue = ctx.readRemainingAsNewBuffer();
102
- break;
57
+ /**
58
+ * Split one TCP read into length-prefixed messages and dispatch each.
59
+ *
60
+ * Any trailing partial message is held in `queue` and prepended to the next
61
+ * read. Parsing a single message is isolated so that one malformed or
62
+ * unsupported message costs only itself — previously a throw unwound past
63
+ * the framing loop, discarding every later message in the same read *and*
64
+ * the pending `queue`, which corrupted reassembly rather than skipping a
65
+ * message.
66
+ */
67
+ handleData(p_data) {
68
+ const buffer = this.queue && this.queue.length > 0 ? Buffer.concat([this.queue, p_data]) : p_data;
69
+ // FIXME: Clean up this arraybuffer confusion mess
70
+ const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
71
+ const ctx = new ReadContext_1.ReadContext(arrayBuffer, false);
72
+ this.queue = null;
73
+ try {
74
+ while (ctx.isEOF() === false) {
75
+ if (ctx.sizeLeft() < 4) {
76
+ this.queue = ctx.readRemainingAsNewBuffer();
77
+ break;
78
+ }
79
+ const length = ctx.readUInt32();
80
+ if (length > ctx.sizeLeft()) {
81
+ ctx.seek(-4); // Rewind 4 bytes to include the length again
82
+ this.queue = ctx.readRemainingAsNewBuffer();
83
+ break;
84
+ }
85
+ const message = ctx.read(length);
86
+ // Use slice to get an actual copy of the message instead of working on the shared underlying ArrayBuffer
87
+ const data = message.buffer.slice(message.byteOffset, message.byteOffset + length);
88
+ const networkTap = (0, config_1.getConfig)().networkTap;
89
+ if (networkTap) {
90
+ networkTap({
91
+ direction: 'recv',
92
+ service: this.name,
93
+ address: this.address,
94
+ port: this.port,
95
+ data: message,
96
+ });
97
+ }
98
+ try {
99
+ const parsedData = this.parseData(new ReadContext_1.ReadContext(data, false));
100
+ // Forward parsed data to message handler
101
+ if (parsedData) {
102
+ this.messageHandler(parsedData);
103
+ this.emit('message', parsedData);
103
104
  }
104
105
  }
106
+ catch (err) {
107
+ // Skip this message only; framing and `queue` are outside this catch.
108
+ this.logger.error(err instanceof Error ? err.message : String(err));
109
+ }
105
110
  }
106
- catch (err) {
107
- // FIXME: Rethrow based on the severity?
108
- this.logger.error(err instanceof Error ? err.message : String(err));
109
- }
110
- });
111
+ }
112
+ catch (err) {
113
+ // Framing itself failed the read is unusable, so drop it rather than
114
+ // letting the throw escape into the socket's 'data' handler.
115
+ this.logger.error(err instanceof Error ? err.message : String(err));
116
+ }
117
+ }
118
+ async connect() {
119
+ (0, assert_1.strict)(!this.connection);
120
+ this.connection = await tcp.connect(this.address, this.port);
121
+ this.queue = null;
122
+ this.connection.socket.on('data', (p_data) => this.handleData(p_data));
111
123
  // FIXME: Is this required for all Services?
112
124
  const ctx = new WriteContext_1.WriteContext();
113
125
  ctx.writeUInt32(types_1.MessageId.ServicesAnnouncement);
@@ -1 +1 @@
1
- {"version":3,"file":"Service.js","sourceRoot":"","sources":["../../services/Service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Service.js","sourceRoot":"","sources":["../../services/Service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stagelinq",
3
- "version": "3.2.0",
3
+ "version": "3.3.0",
4
4
  "description": "TypeScript library to connect to Denon StageLinq devices",
5
5
  "homepage": "https://github.com/chrisle/StageLinq",
6
6
  "repository": {