@ubercode/dcmtk 0.13.2 → 0.15.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/dist/dicom.cjs +50 -36
- package/dist/dicom.cjs.map +1 -1
- package/dist/dicom.js +50 -36
- package/dist/dicom.js.map +1 -1
- package/dist/{index-Bve4fMIh.d.cts → index-CtqMUrjP.d.cts} +2 -0
- package/dist/{index-CZiFWENk.d.ts → index-D7nnTY1R.d.ts} +2 -0
- package/dist/index.cjs +193 -65
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +193 -66
- package/dist/index.js.map +1 -1
- package/dist/servers.cjs +41 -7
- package/dist/servers.cjs.map +1 -1
- package/dist/servers.d.cts +1 -1
- package/dist/servers.d.ts +1 -1
- package/dist/servers.js +41 -7
- package/dist/servers.js.map +1 -1
- package/dist/tools.cjs +57 -40
- package/dist/tools.cjs.map +1 -1
- package/dist/tools.d.cts +18 -1
- package/dist/tools.d.ts +18 -1
- package/dist/tools.js +57 -41
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
package/dist/servers.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as AssociationAcknowledgedData, a as AssociationCompleteData, b as AssociationContext, c as AssociationReceivedData, d as AssociationSummary, e as AssociationTracker, C as CStoreRequestData, f as CannotStartListenerData, g as ConfigErrorData, D as DCMPRSCP_FATAL_EVENTS, h as DCMPRSCP_PATTERNS, i as DCMPSRCV_FATAL_EVENTS, j as DCMPSRCV_PATTERNS, k as DCMQRSCP_FATAL_EVENTS, l as DCMQRSCP_PATTERNS, m as DCMRECV_FATAL_EVENTS, n as DCMRECV_PATTERNS, o as DatabaseReadyData, p as DcmQRSCP, q as DcmQRSCPEventMap, r as DcmQRSCPOptions, s as DcmprsCP, t as DcmprsCPEventMap, u as DcmprsCPOptions, v as DcmprscpEvent, w as DcmprscpEventValue, x as Dcmpsrcv, y as DcmpsrcvEvent, z as DcmpsrcvEventMap, B as DcmpsrcvEventValue, E as DcmpsrcvOptions, F as DcmqrscpEvent, G as DcmqrscpEventValue, H as Dcmrecv, I as DcmrecvEvent, J as DcmrecvEventMap, K as DcmrecvEventValue, L as DcmrecvOptions, M as DcmtkProcess, N as DcmtkProcessConfig, O as DcmtkProcessEventMap, P as DicomReceiver, Q as DicomReceiverEventMap, R as DicomReceiverOptions, S as EventPattern, T as FileDeletedData, U as FileReceivedData, V as FilenameMode, W as FilenameModeValue, X as LineParser, Y as LineParserEventMap, Z as MultiLineConfig, a2 as PoolStatus, a3 as PreferredTransferSyntax, a4 as PreferredTransferSyntaxValue, a5 as PrintAssociationAcknowledgedData, a6 as PrintAssociationReceivedData, a7 as PrintCannotStartListenerData, a8 as ProcessState, a9 as ProcessStateValue, aa as QRAssociationAcknowledgedData, ab as QRAssociationReceivedData, ac as QRCFindRequestData, ad as QRCGetRequestData, ae as QRCMoveRequestData, af as QRCStoreRequestData, ag as QRCannotStartListenerData, ah as QRListeningData, ai as ReceiverAssociationAcknowledgedData, aj as ReceiverAssociationData, ak as ReceiverAssociationFinalizedData, al as ReceiverAssociationReceivedData, am as ReceiverCStoreRequestData, an as ReceiverCannotStartListenerData, ao as ReceiverConfigErrorData, ap as ReceiverDatabaseReadyData, aq as ReceiverEchoRequestData, ar as ReceiverErrorData, as as ReceiverFileData, at as ReceiverFileReceivedData, au as ReceiverFileStoredData, av as ReceiverInstanceData, aw as ReceiverInstanceErrorData, ax as ReceiverListeningData, ay as RefusingAssociationData, az as STORESCP_FATAL_EVENTS, aA as STORESCP_PATTERNS, aB as StorageMode, aC as StorageModeValue, aD as StoreSCP, aE as StoreSCPEventMap, aF as StoreSCPOptions, aG as StoreSCPPreset, aH as StoreSCPPresetName, aI as StoredFileData, aJ as StorescpEvent, aK as StorescpEventValue, aL as StoringFileData, aM as SubdirectoryCreatedData, aN as SubdirectoryMode, aO as SubdirectoryModeValue, aP as TrackedFile, aQ as WLMSCPFS_FATAL_EVENTS, aR as WLMSCPFS_PATTERNS, aS as WlmAssociationAcknowledgedData, aT as WlmAssociationReceivedData, aU as WlmCFindRequestData, aV as WlmCannotStartListenerData, aW as WlmListeningData, aX as Wlmscpfs, aY as WlmscpfsEvent, aZ as WlmscpfsEventMap, a_ as WlmscpfsEventValue, a$ as WlmscpfsOptions } from './index-
|
|
1
|
+
export { A as AssociationAcknowledgedData, a as AssociationCompleteData, b as AssociationContext, c as AssociationReceivedData, d as AssociationSummary, e as AssociationTracker, C as CStoreRequestData, f as CannotStartListenerData, g as ConfigErrorData, D as DCMPRSCP_FATAL_EVENTS, h as DCMPRSCP_PATTERNS, i as DCMPSRCV_FATAL_EVENTS, j as DCMPSRCV_PATTERNS, k as DCMQRSCP_FATAL_EVENTS, l as DCMQRSCP_PATTERNS, m as DCMRECV_FATAL_EVENTS, n as DCMRECV_PATTERNS, o as DatabaseReadyData, p as DcmQRSCP, q as DcmQRSCPEventMap, r as DcmQRSCPOptions, s as DcmprsCP, t as DcmprsCPEventMap, u as DcmprsCPOptions, v as DcmprscpEvent, w as DcmprscpEventValue, x as Dcmpsrcv, y as DcmpsrcvEvent, z as DcmpsrcvEventMap, B as DcmpsrcvEventValue, E as DcmpsrcvOptions, F as DcmqrscpEvent, G as DcmqrscpEventValue, H as Dcmrecv, I as DcmrecvEvent, J as DcmrecvEventMap, K as DcmrecvEventValue, L as DcmrecvOptions, M as DcmtkProcess, N as DcmtkProcessConfig, O as DcmtkProcessEventMap, P as DicomReceiver, Q as DicomReceiverEventMap, R as DicomReceiverOptions, S as EventPattern, T as FileDeletedData, U as FileReceivedData, V as FilenameMode, W as FilenameModeValue, X as LineParser, Y as LineParserEventMap, Z as MultiLineConfig, a2 as PoolStatus, a3 as PreferredTransferSyntax, a4 as PreferredTransferSyntaxValue, a5 as PrintAssociationAcknowledgedData, a6 as PrintAssociationReceivedData, a7 as PrintCannotStartListenerData, a8 as ProcessState, a9 as ProcessStateValue, aa as QRAssociationAcknowledgedData, ab as QRAssociationReceivedData, ac as QRCFindRequestData, ad as QRCGetRequestData, ae as QRCMoveRequestData, af as QRCStoreRequestData, ag as QRCannotStartListenerData, ah as QRListeningData, ai as ReceiverAssociationAcknowledgedData, aj as ReceiverAssociationData, ak as ReceiverAssociationFinalizedData, al as ReceiverAssociationReceivedData, am as ReceiverCStoreRequestData, an as ReceiverCannotStartListenerData, ao as ReceiverConfigErrorData, ap as ReceiverDatabaseReadyData, aq as ReceiverEchoRequestData, ar as ReceiverErrorData, as as ReceiverFileData, at as ReceiverFileReceivedData, au as ReceiverFileStoredData, av as ReceiverInstanceData, aw as ReceiverInstanceErrorData, ax as ReceiverListeningData, ay as RefusingAssociationData, az as STORESCP_FATAL_EVENTS, aA as STORESCP_PATTERNS, aB as StorageMode, aC as StorageModeValue, aD as StoreSCP, aE as StoreSCPEventMap, aF as StoreSCPOptions, aG as StoreSCPPreset, aH as StoreSCPPresetName, aI as StoredFileData, aJ as StorescpEvent, aK as StorescpEventValue, aL as StoringFileData, aM as SubdirectoryCreatedData, aN as SubdirectoryMode, aO as SubdirectoryModeValue, aP as TrackedFile, aQ as WLMSCPFS_FATAL_EVENTS, aR as WLMSCPFS_PATTERNS, aS as WlmAssociationAcknowledgedData, aT as WlmAssociationReceivedData, aU as WlmCFindRequestData, aV as WlmCannotStartListenerData, aW as WlmListeningData, aX as Wlmscpfs, aY as WlmscpfsEvent, aZ as WlmscpfsEventMap, a_ as WlmscpfsEventValue, a$ as WlmscpfsOptions } from './index-CtqMUrjP.cjs';
|
|
2
2
|
import './types-Cgumy1N4.cjs';
|
|
3
3
|
import 'node:events';
|
|
4
4
|
import 'node:net';
|
package/dist/servers.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as AssociationAcknowledgedData, a as AssociationCompleteData, b as AssociationContext, c as AssociationReceivedData, d as AssociationSummary, e as AssociationTracker, C as CStoreRequestData, f as CannotStartListenerData, g as ConfigErrorData, D as DCMPRSCP_FATAL_EVENTS, h as DCMPRSCP_PATTERNS, i as DCMPSRCV_FATAL_EVENTS, j as DCMPSRCV_PATTERNS, k as DCMQRSCP_FATAL_EVENTS, l as DCMQRSCP_PATTERNS, m as DCMRECV_FATAL_EVENTS, n as DCMRECV_PATTERNS, o as DatabaseReadyData, p as DcmQRSCP, q as DcmQRSCPEventMap, r as DcmQRSCPOptions, s as DcmprsCP, t as DcmprsCPEventMap, u as DcmprsCPOptions, v as DcmprscpEvent, w as DcmprscpEventValue, x as Dcmpsrcv, y as DcmpsrcvEvent, z as DcmpsrcvEventMap, B as DcmpsrcvEventValue, E as DcmpsrcvOptions, F as DcmqrscpEvent, G as DcmqrscpEventValue, H as Dcmrecv, I as DcmrecvEvent, J as DcmrecvEventMap, K as DcmrecvEventValue, L as DcmrecvOptions, M as DcmtkProcess, N as DcmtkProcessConfig, O as DcmtkProcessEventMap, P as DicomReceiver, Q as DicomReceiverEventMap, R as DicomReceiverOptions, S as EventPattern, T as FileDeletedData, U as FileReceivedData, V as FilenameMode, W as FilenameModeValue, X as LineParser, Y as LineParserEventMap, Z as MultiLineConfig, a2 as PoolStatus, a3 as PreferredTransferSyntax, a4 as PreferredTransferSyntaxValue, a5 as PrintAssociationAcknowledgedData, a6 as PrintAssociationReceivedData, a7 as PrintCannotStartListenerData, a8 as ProcessState, a9 as ProcessStateValue, aa as QRAssociationAcknowledgedData, ab as QRAssociationReceivedData, ac as QRCFindRequestData, ad as QRCGetRequestData, ae as QRCMoveRequestData, af as QRCStoreRequestData, ag as QRCannotStartListenerData, ah as QRListeningData, ai as ReceiverAssociationAcknowledgedData, aj as ReceiverAssociationData, ak as ReceiverAssociationFinalizedData, al as ReceiverAssociationReceivedData, am as ReceiverCStoreRequestData, an as ReceiverCannotStartListenerData, ao as ReceiverConfigErrorData, ap as ReceiverDatabaseReadyData, aq as ReceiverEchoRequestData, ar as ReceiverErrorData, as as ReceiverFileData, at as ReceiverFileReceivedData, au as ReceiverFileStoredData, av as ReceiverInstanceData, aw as ReceiverInstanceErrorData, ax as ReceiverListeningData, ay as RefusingAssociationData, az as STORESCP_FATAL_EVENTS, aA as STORESCP_PATTERNS, aB as StorageMode, aC as StorageModeValue, aD as StoreSCP, aE as StoreSCPEventMap, aF as StoreSCPOptions, aG as StoreSCPPreset, aH as StoreSCPPresetName, aI as StoredFileData, aJ as StorescpEvent, aK as StorescpEventValue, aL as StoringFileData, aM as SubdirectoryCreatedData, aN as SubdirectoryMode, aO as SubdirectoryModeValue, aP as TrackedFile, aQ as WLMSCPFS_FATAL_EVENTS, aR as WLMSCPFS_PATTERNS, aS as WlmAssociationAcknowledgedData, aT as WlmAssociationReceivedData, aU as WlmCFindRequestData, aV as WlmCannotStartListenerData, aW as WlmListeningData, aX as Wlmscpfs, aY as WlmscpfsEvent, aZ as WlmscpfsEventMap, a_ as WlmscpfsEventValue, a$ as WlmscpfsOptions } from './index-
|
|
1
|
+
export { A as AssociationAcknowledgedData, a as AssociationCompleteData, b as AssociationContext, c as AssociationReceivedData, d as AssociationSummary, e as AssociationTracker, C as CStoreRequestData, f as CannotStartListenerData, g as ConfigErrorData, D as DCMPRSCP_FATAL_EVENTS, h as DCMPRSCP_PATTERNS, i as DCMPSRCV_FATAL_EVENTS, j as DCMPSRCV_PATTERNS, k as DCMQRSCP_FATAL_EVENTS, l as DCMQRSCP_PATTERNS, m as DCMRECV_FATAL_EVENTS, n as DCMRECV_PATTERNS, o as DatabaseReadyData, p as DcmQRSCP, q as DcmQRSCPEventMap, r as DcmQRSCPOptions, s as DcmprsCP, t as DcmprsCPEventMap, u as DcmprsCPOptions, v as DcmprscpEvent, w as DcmprscpEventValue, x as Dcmpsrcv, y as DcmpsrcvEvent, z as DcmpsrcvEventMap, B as DcmpsrcvEventValue, E as DcmpsrcvOptions, F as DcmqrscpEvent, G as DcmqrscpEventValue, H as Dcmrecv, I as DcmrecvEvent, J as DcmrecvEventMap, K as DcmrecvEventValue, L as DcmrecvOptions, M as DcmtkProcess, N as DcmtkProcessConfig, O as DcmtkProcessEventMap, P as DicomReceiver, Q as DicomReceiverEventMap, R as DicomReceiverOptions, S as EventPattern, T as FileDeletedData, U as FileReceivedData, V as FilenameMode, W as FilenameModeValue, X as LineParser, Y as LineParserEventMap, Z as MultiLineConfig, a2 as PoolStatus, a3 as PreferredTransferSyntax, a4 as PreferredTransferSyntaxValue, a5 as PrintAssociationAcknowledgedData, a6 as PrintAssociationReceivedData, a7 as PrintCannotStartListenerData, a8 as ProcessState, a9 as ProcessStateValue, aa as QRAssociationAcknowledgedData, ab as QRAssociationReceivedData, ac as QRCFindRequestData, ad as QRCGetRequestData, ae as QRCMoveRequestData, af as QRCStoreRequestData, ag as QRCannotStartListenerData, ah as QRListeningData, ai as ReceiverAssociationAcknowledgedData, aj as ReceiverAssociationData, ak as ReceiverAssociationFinalizedData, al as ReceiverAssociationReceivedData, am as ReceiverCStoreRequestData, an as ReceiverCannotStartListenerData, ao as ReceiverConfigErrorData, ap as ReceiverDatabaseReadyData, aq as ReceiverEchoRequestData, ar as ReceiverErrorData, as as ReceiverFileData, at as ReceiverFileReceivedData, au as ReceiverFileStoredData, av as ReceiverInstanceData, aw as ReceiverInstanceErrorData, ax as ReceiverListeningData, ay as RefusingAssociationData, az as STORESCP_FATAL_EVENTS, aA as STORESCP_PATTERNS, aB as StorageMode, aC as StorageModeValue, aD as StoreSCP, aE as StoreSCPEventMap, aF as StoreSCPOptions, aG as StoreSCPPreset, aH as StoreSCPPresetName, aI as StoredFileData, aJ as StorescpEvent, aK as StorescpEventValue, aL as StoringFileData, aM as SubdirectoryCreatedData, aN as SubdirectoryMode, aO as SubdirectoryModeValue, aP as TrackedFile, aQ as WLMSCPFS_FATAL_EVENTS, aR as WLMSCPFS_PATTERNS, aS as WlmAssociationAcknowledgedData, aT as WlmAssociationReceivedData, aU as WlmCFindRequestData, aV as WlmCannotStartListenerData, aW as WlmListeningData, aX as Wlmscpfs, aY as WlmscpfsEvent, aZ as WlmscpfsEventMap, a_ as WlmscpfsEventValue, a$ as WlmscpfsOptions } from './index-D7nnTY1R.js';
|
|
2
2
|
import './types-Cgumy1N4.js';
|
|
3
3
|
import 'node:events';
|
|
4
4
|
import 'node:net';
|
package/dist/servers.js
CHANGED
|
@@ -502,7 +502,19 @@ function truncate(value, maxLength) {
|
|
|
502
502
|
}
|
|
503
503
|
return `${value.substring(0, maxLength)}...`;
|
|
504
504
|
}
|
|
505
|
-
|
|
505
|
+
var ToolExecutionError = class extends Error {
|
|
506
|
+
constructor(message, details) {
|
|
507
|
+
super(message);
|
|
508
|
+
__publicField(this, "stdout");
|
|
509
|
+
__publicField(this, "stderr");
|
|
510
|
+
__publicField(this, "exitCode");
|
|
511
|
+
this.name = "ToolExecutionError";
|
|
512
|
+
this.stdout = details.stdout;
|
|
513
|
+
this.stderr = details.stderr;
|
|
514
|
+
this.exitCode = details.exitCode;
|
|
515
|
+
}
|
|
516
|
+
};
|
|
517
|
+
function createToolError(toolName, args, exitCode, stderr6, stdout = "") {
|
|
506
518
|
const argsStr = truncate(args.join(" "), MAX_ARGS_LENGTH);
|
|
507
519
|
const stderrStr = truncate(stderr6.trim(), MAX_STDERR_LENGTH);
|
|
508
520
|
const parts = [`${toolName} failed (exit code ${String(exitCode)})`];
|
|
@@ -512,7 +524,7 @@ function createToolError(toolName, args, exitCode, stderr6) {
|
|
|
512
524
|
if (stderrStr.length > 0) {
|
|
513
525
|
parts.push(`stderr: ${stderrStr}`);
|
|
514
526
|
}
|
|
515
|
-
return new
|
|
527
|
+
return new ToolExecutionError(parts.join(" | "), { stdout, stderr: stderr6, exitCode });
|
|
516
528
|
}
|
|
517
529
|
function createValidationError(toolName, zodError) {
|
|
518
530
|
const parts = [];
|
|
@@ -2371,15 +2383,17 @@ async function dcm2json(inputPath, options) {
|
|
|
2371
2383
|
}
|
|
2372
2384
|
const timeoutMs = options?.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
2373
2385
|
const signal = options?.signal;
|
|
2386
|
+
const startTime = Date.now();
|
|
2387
|
+
const remaining = () => Math.max(1e3, timeoutMs - (Date.now() - startTime));
|
|
2374
2388
|
const verbosity = options?.verbosity;
|
|
2375
2389
|
if (options?.directOnly === true) {
|
|
2376
|
-
return tryDirectPath(inputPath,
|
|
2390
|
+
return tryDirectPath(inputPath, remaining(), signal, verbosity);
|
|
2377
2391
|
}
|
|
2378
|
-
const xmlResult = await tryXmlPath(inputPath,
|
|
2392
|
+
const xmlResult = await tryXmlPath(inputPath, remaining(), signal, buildXmlOpts(options));
|
|
2379
2393
|
if (xmlResult.ok) {
|
|
2380
2394
|
return xmlResult;
|
|
2381
2395
|
}
|
|
2382
|
-
return tryDirectPath(inputPath,
|
|
2396
|
+
return tryDirectPath(inputPath, remaining(), signal, verbosity);
|
|
2383
2397
|
}
|
|
2384
2398
|
var TAG_OR_PATH_PATTERN = /^\([0-9A-Fa-f]{4},[0-9A-Fa-f]{4}\)(\[\d+\]\.\([0-9A-Fa-f]{4},[0-9A-Fa-f]{4}\))*(\[\d+\])?$/;
|
|
2385
2399
|
var TagModificationSchema = z.object({
|
|
@@ -2863,7 +2877,7 @@ var Worker = class {
|
|
|
2863
2877
|
this.port = port;
|
|
2864
2878
|
this.tempDir = tempDir;
|
|
2865
2879
|
}
|
|
2866
|
-
/** Current worker state. */
|
|
2880
|
+
/** Current worker state: idle (ready), busy (handling association), finalizing (draining). */
|
|
2867
2881
|
get state() {
|
|
2868
2882
|
return this._state;
|
|
2869
2883
|
}
|
|
@@ -2895,6 +2909,10 @@ var Worker = class {
|
|
|
2895
2909
|
this._instancesReceived = 0;
|
|
2896
2910
|
this._instanceErrors = 0;
|
|
2897
2911
|
}
|
|
2912
|
+
/** Marks the worker as finalizing — still has valid context but cannot accept new connections. */
|
|
2913
|
+
markFinalizing() {
|
|
2914
|
+
this._state = "finalizing";
|
|
2915
|
+
}
|
|
2898
2916
|
/**
|
|
2899
2917
|
* Returns the worker to idle. Context is intentionally preserved so that
|
|
2900
2918
|
* late FILE_RECEIVED events (arriving in a subsequent pipe chunk after
|
|
@@ -3077,6 +3095,7 @@ var DicomReceiver = class _DicomReceiver extends EventEmitter {
|
|
|
3077
3095
|
this.options.signal.removeEventListener("abort", this.abortHandler);
|
|
3078
3096
|
}
|
|
3079
3097
|
await this.closeTcpProxy();
|
|
3098
|
+
await this.drainAllWorkers();
|
|
3080
3099
|
const stopPromises = [];
|
|
3081
3100
|
for (const worker of this.workers.values()) {
|
|
3082
3101
|
stopPromises.push(this.stopWorker(worker));
|
|
@@ -3245,6 +3264,18 @@ var DicomReceiver = class _DicomReceiver extends EventEmitter {
|
|
|
3245
3264
|
this.tcpServer.close(() => resolve());
|
|
3246
3265
|
});
|
|
3247
3266
|
}
|
|
3267
|
+
/** Drains in-flight file and instance work on all non-idle workers, with a 5s safety timeout. */
|
|
3268
|
+
async drainAllWorkers() {
|
|
3269
|
+
const drainPromises = [];
|
|
3270
|
+
for (const worker of this.workers.values()) {
|
|
3271
|
+
if (worker.state !== "idle") {
|
|
3272
|
+
drainPromises.push(worker.drainPendingFiles());
|
|
3273
|
+
drainPromises.push(worker.drainInstancePending());
|
|
3274
|
+
}
|
|
3275
|
+
}
|
|
3276
|
+
if (drainPromises.length === 0) return;
|
|
3277
|
+
await Promise.race([Promise.all(drainPromises), setTimeout$1(5e3)]);
|
|
3278
|
+
}
|
|
3248
3279
|
// -----------------------------------------------------------------------
|
|
3249
3280
|
// Connection routing
|
|
3250
3281
|
// -----------------------------------------------------------------------
|
|
@@ -3273,7 +3304,9 @@ var DicomReceiver = class _DicomReceiver extends EventEmitter {
|
|
|
3273
3304
|
};
|
|
3274
3305
|
worker.beginAssociation(ctx);
|
|
3275
3306
|
this.pipeConnection(worker, remoteSocket);
|
|
3276
|
-
void this.replenishPool()
|
|
3307
|
+
void this.replenishPool().catch((e) => {
|
|
3308
|
+
this.emit("error", { error: e instanceof Error ? e : new Error(String(e)) });
|
|
3309
|
+
});
|
|
3277
3310
|
}
|
|
3278
3311
|
/** Finds an idle worker, retrying up to connectionTimeoutMs. */
|
|
3279
3312
|
async findIdleWorker() {
|
|
@@ -3512,6 +3545,7 @@ var DicomReceiver = class _DicomReceiver extends EventEmitter {
|
|
|
3512
3545
|
/** Returns worker to idle pool on association complete, emits summary. */
|
|
3513
3546
|
wireAssociationComplete(worker) {
|
|
3514
3547
|
worker.dcmrecv.onAssociationComplete((data) => {
|
|
3548
|
+
worker.markFinalizing();
|
|
3515
3549
|
setImmediate(() => {
|
|
3516
3550
|
void this.finalizeAssociation(worker, data);
|
|
3517
3551
|
});
|