@fluidframework/container-loader 1.4.0-121020 → 2.0.0-dev-rc.1.0.0.224419
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 +18 -21
- package/.mocharc.js +12 -0
- package/CHANGELOG.md +364 -0
- package/README.md +152 -56
- package/api-extractor-lint.json +4 -0
- package/api-extractor.json +2 -2
- package/api-report/container-loader.api.md +143 -0
- package/dist/{audience.js → audience.cjs} +15 -13
- package/dist/audience.cjs.map +1 -0
- package/dist/audience.d.ts +4 -6
- package/dist/audience.d.ts.map +1 -1
- package/dist/catchUpMonitor.cjs +43 -0
- package/dist/catchUpMonitor.cjs.map +1 -0
- package/dist/catchUpMonitor.d.ts +29 -0
- package/dist/catchUpMonitor.d.ts.map +1 -0
- package/dist/{connectionManager.js → connectionManager.cjs} +397 -240
- package/dist/connectionManager.cjs.map +1 -0
- package/dist/connectionManager.d.ts +23 -33
- package/dist/connectionManager.d.ts.map +1 -1
- package/dist/{connectionState.js → connectionState.cjs} +5 -7
- package/dist/connectionState.cjs.map +1 -0
- package/dist/connectionState.d.ts +3 -5
- package/dist/connectionState.d.ts.map +1 -1
- package/dist/connectionStateHandler.cjs +474 -0
- package/dist/connectionStateHandler.cjs.map +1 -0
- package/dist/connectionStateHandler.d.ts +127 -29
- package/dist/connectionStateHandler.d.ts.map +1 -1
- package/dist/container-loader-alpha.d.ts +274 -0
- package/dist/container-loader-beta.d.ts +75 -0
- package/dist/container-loader-public.d.ts +75 -0
- package/dist/container-loader-untrimmed.d.ts +331 -0
- package/dist/container.cjs +1585 -0
- package/dist/container.cjs.map +1 -0
- package/dist/container.d.ts +227 -83
- package/dist/container.d.ts.map +1 -1
- package/dist/containerContext.cjs +74 -0
- package/dist/containerContext.cjs.map +1 -0
- package/dist/containerContext.d.ts +33 -59
- package/dist/containerContext.d.ts.map +1 -1
- package/dist/containerStorageAdapter.cjs +234 -0
- package/dist/containerStorageAdapter.cjs.map +1 -0
- package/dist/containerStorageAdapter.d.ts +48 -23
- package/dist/containerStorageAdapter.d.ts.map +1 -1
- package/dist/{contracts.js → contracts.cjs} +5 -5
- package/dist/contracts.cjs.map +1 -0
- package/dist/contracts.d.ts +45 -17
- package/dist/contracts.d.ts.map +1 -1
- package/dist/debugLogger.cjs +101 -0
- package/dist/debugLogger.cjs.map +1 -0
- package/dist/debugLogger.d.ts +30 -0
- package/dist/debugLogger.d.ts.map +1 -0
- package/dist/{deltaManager.js → deltaManager.cjs} +379 -186
- package/dist/deltaManager.cjs.map +1 -0
- package/dist/deltaManager.d.ts +54 -18
- package/dist/deltaManager.d.ts.map +1 -1
- package/dist/{deltaQueue.js → deltaQueue.cjs} +29 -28
- package/dist/deltaQueue.cjs.map +1 -0
- package/dist/deltaQueue.d.ts +3 -4
- package/dist/deltaQueue.d.ts.map +1 -1
- package/dist/disposal.cjs +25 -0
- package/dist/disposal.cjs.map +1 -0
- package/dist/disposal.d.ts +13 -0
- package/dist/disposal.d.ts.map +1 -0
- package/dist/error.cjs +32 -0
- package/dist/error.cjs.map +1 -0
- package/dist/error.d.ts +23 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/index.cjs +19 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/loader.cjs +148 -0
- package/dist/loader.cjs.map +1 -0
- package/dist/loader.d.ts +38 -19
- package/dist/loader.d.ts.map +1 -1
- package/dist/location-redirection-utilities/index.cjs +11 -0
- package/dist/location-redirection-utilities/index.cjs.map +1 -0
- package/dist/location-redirection-utilities/index.d.ts +6 -0
- package/dist/location-redirection-utilities/index.d.ts.map +1 -0
- package/dist/location-redirection-utilities/resolveWithLocationRedirection.cjs +53 -0
- package/dist/location-redirection-utilities/resolveWithLocationRedirection.cjs.map +1 -0
- package/dist/location-redirection-utilities/resolveWithLocationRedirection.d.ts +24 -0
- package/dist/location-redirection-utilities/resolveWithLocationRedirection.d.ts.map +1 -0
- package/dist/{collabWindowTracker.js → noopHeuristic.cjs} +37 -39
- package/dist/noopHeuristic.cjs.map +1 -0
- package/dist/noopHeuristic.d.ts +23 -0
- package/dist/noopHeuristic.d.ts.map +1 -0
- package/dist/{packageVersion.js → packageVersion.cjs} +2 -2
- package/dist/packageVersion.cjs.map +1 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/protocol.cjs +99 -0
- package/dist/protocol.cjs.map +1 -0
- package/dist/protocol.d.ts +38 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/{protocolTreeDocumentStorageService.js → protocolTreeDocumentStorageService.cjs} +8 -5
- package/dist/protocolTreeDocumentStorageService.cjs.map +1 -0
- package/dist/protocolTreeDocumentStorageService.d.ts +8 -4
- package/dist/protocolTreeDocumentStorageService.d.ts.map +1 -1
- package/dist/quorum.cjs +16 -0
- package/dist/quorum.cjs.map +1 -0
- package/dist/quorum.d.ts +1 -14
- package/dist/quorum.d.ts.map +1 -1
- package/dist/{retriableDocumentStorageService.js → retriableDocumentStorageService.cjs} +36 -21
- package/dist/retriableDocumentStorageService.cjs.map +1 -0
- package/dist/retriableDocumentStorageService.d.ts +7 -5
- package/dist/retriableDocumentStorageService.d.ts.map +1 -1
- package/dist/tsdoc-metadata.json +11 -0
- package/dist/{utils.js → utils.cjs} +52 -14
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.ts +34 -1
- package/dist/utils.d.ts.map +1 -1
- package/lib/{audience.d.ts → audience.d.mts} +4 -10
- package/lib/audience.d.mts.map +1 -0
- package/lib/{audience.js → audience.mjs} +15 -17
- package/lib/audience.mjs.map +1 -0
- package/lib/catchUpMonitor.d.mts +29 -0
- package/lib/catchUpMonitor.d.mts.map +1 -0
- package/lib/catchUpMonitor.mjs +39 -0
- package/lib/catchUpMonitor.mjs.map +1 -0
- package/lib/{connectionManager.d.ts → connectionManager.d.mts} +23 -33
- package/lib/connectionManager.d.mts.map +1 -0
- package/lib/{connectionManager.js → connectionManager.mjs} +378 -218
- package/lib/connectionManager.mjs.map +1 -0
- package/lib/{connectionState.d.ts → connectionState.d.mts} +3 -5
- package/lib/connectionState.d.mts.map +1 -0
- package/lib/{connectionState.js → connectionState.mjs} +4 -6
- package/lib/connectionState.mjs.map +1 -0
- package/lib/connectionStateHandler.d.mts +179 -0
- package/lib/connectionStateHandler.d.mts.map +1 -0
- package/lib/connectionStateHandler.mjs +469 -0
- package/lib/connectionStateHandler.mjs.map +1 -0
- package/lib/container-loader-alpha.d.mts +274 -0
- package/lib/container-loader-beta.d.mts +75 -0
- package/lib/container-loader-public.d.mts +75 -0
- package/lib/container-loader-untrimmed.d.mts +331 -0
- package/lib/container.d.mts +382 -0
- package/lib/container.d.mts.map +1 -0
- package/lib/container.mjs +1579 -0
- package/lib/container.mjs.map +1 -0
- package/lib/containerContext.d.mts +58 -0
- package/lib/containerContext.d.mts.map +1 -0
- package/lib/containerContext.mjs +70 -0
- package/lib/containerContext.mjs.map +1 -0
- package/lib/containerStorageAdapter.d.mts +73 -0
- package/lib/containerStorageAdapter.d.mts.map +1 -0
- package/lib/containerStorageAdapter.mjs +228 -0
- package/lib/containerStorageAdapter.mjs.map +1 -0
- package/lib/{contracts.d.ts → contracts.d.mts} +45 -17
- package/lib/contracts.d.mts.map +1 -0
- package/lib/{contracts.js → contracts.mjs} +4 -4
- package/lib/contracts.mjs.map +1 -0
- package/lib/debugLogger.d.mts +30 -0
- package/lib/debugLogger.d.mts.map +1 -0
- package/lib/debugLogger.mjs +93 -0
- package/lib/debugLogger.mjs.map +1 -0
- package/lib/{deltaManager.d.ts → deltaManager.d.mts} +54 -18
- package/lib/deltaManager.d.mts.map +1 -0
- package/lib/{deltaManager.js → deltaManager.mjs} +361 -165
- package/lib/deltaManager.mjs.map +1 -0
- package/lib/{deltaQueue.d.ts → deltaQueue.d.mts} +3 -4
- package/lib/deltaQueue.d.mts.map +1 -0
- package/lib/{deltaQueue.js → deltaQueue.mjs} +25 -24
- package/lib/deltaQueue.mjs.map +1 -0
- package/lib/disposal.d.mts +13 -0
- package/lib/disposal.d.mts.map +1 -0
- package/lib/disposal.mjs +21 -0
- package/lib/disposal.mjs.map +1 -0
- package/lib/error.d.mts +23 -0
- package/lib/error.d.mts.map +1 -0
- package/lib/error.mjs +28 -0
- package/lib/error.mjs.map +1 -0
- package/lib/index.d.mts +11 -0
- package/lib/index.d.mts.map +1 -0
- package/lib/index.mjs +10 -0
- package/lib/index.mjs.map +1 -0
- package/lib/{loader.d.ts → loader.d.mts} +39 -20
- package/lib/loader.d.mts.map +1 -0
- package/lib/loader.mjs +143 -0
- package/lib/loader.mjs.map +1 -0
- package/lib/location-redirection-utilities/index.d.mts +6 -0
- package/lib/location-redirection-utilities/index.d.mts.map +1 -0
- package/lib/location-redirection-utilities/index.mjs +6 -0
- package/lib/location-redirection-utilities/index.mjs.map +1 -0
- package/lib/location-redirection-utilities/resolveWithLocationRedirection.d.mts +24 -0
- package/lib/location-redirection-utilities/resolveWithLocationRedirection.d.mts.map +1 -0
- package/lib/location-redirection-utilities/resolveWithLocationRedirection.mjs +48 -0
- package/lib/location-redirection-utilities/resolveWithLocationRedirection.mjs.map +1 -0
- package/lib/noopHeuristic.d.mts +23 -0
- package/lib/noopHeuristic.d.mts.map +1 -0
- package/lib/{collabWindowTracker.js → noopHeuristic.mjs} +33 -35
- package/lib/noopHeuristic.mjs.map +1 -0
- package/lib/{packageVersion.d.ts → packageVersion.d.mts} +1 -1
- package/lib/{packageVersion.d.ts.map → packageVersion.d.mts.map} +1 -1
- package/lib/{packageVersion.js → packageVersion.mjs} +2 -2
- package/lib/packageVersion.mjs.map +1 -0
- package/lib/protocol.d.mts +38 -0
- package/lib/protocol.d.mts.map +1 -0
- package/lib/protocol.mjs +94 -0
- package/lib/protocol.mjs.map +1 -0
- package/lib/{protocolTreeDocumentStorageService.d.ts → protocolTreeDocumentStorageService.d.mts} +8 -4
- package/lib/protocolTreeDocumentStorageService.d.mts.map +1 -0
- package/lib/{protocolTreeDocumentStorageService.js → protocolTreeDocumentStorageService.mjs} +8 -5
- package/lib/protocolTreeDocumentStorageService.mjs.map +1 -0
- package/lib/quorum.d.mts +4 -0
- package/lib/quorum.d.mts.map +1 -0
- package/lib/quorum.mjs +12 -0
- package/lib/quorum.mjs.map +1 -0
- package/lib/{retriableDocumentStorageService.d.ts → retriableDocumentStorageService.d.mts} +7 -5
- package/lib/retriableDocumentStorageService.d.mts.map +1 -0
- package/lib/{retriableDocumentStorageService.js → retriableDocumentStorageService.mjs} +35 -20
- package/lib/retriableDocumentStorageService.mjs.map +1 -0
- package/lib/utils.d.mts +67 -0
- package/lib/utils.d.mts.map +1 -0
- package/lib/{utils.js → utils.mjs} +47 -11
- package/lib/utils.mjs.map +1 -0
- package/package.json +163 -70
- package/prettier.config.cjs +8 -0
- package/src/audience.ts +59 -49
- package/src/catchUpMonitor.ts +61 -0
- package/src/connectionManager.ts +1154 -910
- package/src/connectionState.ts +22 -25
- package/src/connectionStateHandler.ts +689 -319
- package/src/container.ts +2476 -1792
- package/src/containerContext.ts +98 -330
- package/src/containerStorageAdapter.ts +301 -105
- package/src/contracts.ts +184 -146
- package/src/debugLogger.ts +123 -0
- package/src/deltaManager.ts +1165 -900
- package/src/deltaQueue.ts +156 -152
- package/src/disposal.ts +25 -0
- package/src/error.ts +44 -0
- package/src/index.ts +14 -15
- package/src/loader.ts +356 -427
- package/src/location-redirection-utilities/index.ts +9 -0
- package/src/location-redirection-utilities/resolveWithLocationRedirection.ts +61 -0
- package/src/noopHeuristic.ts +107 -0
- package/src/packageVersion.ts +1 -1
- package/src/protocol.ts +150 -0
- package/src/protocolTreeDocumentStorageService.ts +35 -35
- package/src/quorum.ts +11 -50
- package/src/retriableDocumentStorageService.ts +135 -95
- package/src/utils.ts +159 -86
- package/tsc-multi.test.json +4 -0
- package/tsconfig.json +10 -12
- package/dist/audience.js.map +0 -1
- package/dist/collabWindowTracker.d.ts +0 -19
- package/dist/collabWindowTracker.d.ts.map +0 -1
- package/dist/collabWindowTracker.js.map +0 -1
- package/dist/connectionManager.js.map +0 -1
- package/dist/connectionState.js.map +0 -1
- package/dist/connectionStateHandler.js +0 -280
- package/dist/connectionStateHandler.js.map +0 -1
- package/dist/container.js +0 -1284
- package/dist/container.js.map +0 -1
- package/dist/containerContext.js +0 -217
- package/dist/containerContext.js.map +0 -1
- package/dist/containerStorageAdapter.js +0 -104
- package/dist/containerStorageAdapter.js.map +0 -1
- package/dist/contracts.js.map +0 -1
- package/dist/deltaManager.js.map +0 -1
- package/dist/deltaManagerProxy.d.ts +0 -54
- package/dist/deltaManagerProxy.d.ts.map +0 -1
- package/dist/deltaManagerProxy.js +0 -115
- package/dist/deltaManagerProxy.js.map +0 -1
- package/dist/deltaQueue.js.map +0 -1
- package/dist/index.js +0 -16
- package/dist/index.js.map +0 -1
- package/dist/loader.js +0 -241
- package/dist/loader.js.map +0 -1
- package/dist/packageVersion.js.map +0 -1
- package/dist/protocolTreeDocumentStorageService.js.map +0 -1
- package/dist/quorum.js +0 -44
- package/dist/quorum.js.map +0 -1
- package/dist/retriableDocumentStorageService.js.map +0 -1
- package/dist/utils.js.map +0 -1
- package/lib/audience.d.ts.map +0 -1
- package/lib/audience.js.map +0 -1
- package/lib/collabWindowTracker.d.ts +0 -19
- package/lib/collabWindowTracker.d.ts.map +0 -1
- package/lib/collabWindowTracker.js.map +0 -1
- package/lib/connectionManager.d.ts.map +0 -1
- package/lib/connectionManager.js.map +0 -1
- package/lib/connectionState.d.ts.map +0 -1
- package/lib/connectionState.js.map +0 -1
- package/lib/connectionStateHandler.d.ts +0 -81
- package/lib/connectionStateHandler.d.ts.map +0 -1
- package/lib/connectionStateHandler.js +0 -276
- package/lib/connectionStateHandler.js.map +0 -1
- package/lib/container.d.ts +0 -238
- package/lib/container.d.ts.map +0 -1
- package/lib/container.js +0 -1276
- package/lib/container.js.map +0 -1
- package/lib/containerContext.d.ts +0 -84
- package/lib/containerContext.d.ts.map +0 -1
- package/lib/containerContext.js +0 -213
- package/lib/containerContext.js.map +0 -1
- package/lib/containerStorageAdapter.d.ts +0 -48
- package/lib/containerStorageAdapter.d.ts.map +0 -1
- package/lib/containerStorageAdapter.js +0 -99
- package/lib/containerStorageAdapter.js.map +0 -1
- package/lib/contracts.d.ts.map +0 -1
- package/lib/contracts.js.map +0 -1
- package/lib/deltaManager.d.ts.map +0 -1
- package/lib/deltaManager.js.map +0 -1
- package/lib/deltaManagerProxy.d.ts +0 -54
- package/lib/deltaManagerProxy.d.ts.map +0 -1
- package/lib/deltaManagerProxy.js +0 -110
- package/lib/deltaManagerProxy.js.map +0 -1
- package/lib/deltaQueue.d.ts.map +0 -1
- package/lib/deltaQueue.js.map +0 -1
- package/lib/index.d.ts +0 -8
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -8
- package/lib/index.js.map +0 -1
- package/lib/loader.d.ts.map +0 -1
- package/lib/loader.js +0 -236
- package/lib/loader.js.map +0 -1
- package/lib/packageVersion.js.map +0 -1
- package/lib/protocolTreeDocumentStorageService.d.ts.map +0 -1
- package/lib/protocolTreeDocumentStorageService.js.map +0 -1
- package/lib/quorum.d.ts +0 -21
- package/lib/quorum.d.ts.map +0 -1
- package/lib/quorum.js +0 -38
- package/lib/quorum.js.map +0 -1
- package/lib/retriableDocumentStorageService.d.ts.map +0 -1
- package/lib/retriableDocumentStorageService.js.map +0 -1
- package/lib/utils.d.ts +0 -34
- package/lib/utils.d.ts.map +0 -1
- package/lib/utils.js.map +0 -1
- package/src/collabWindowTracker.ts +0 -102
- package/src/deltaManagerProxy.ts +0 -158
- package/tsconfig.esnext.json +0 -7
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { assert, Timer } from "@fluidframework/common-utils";
|
|
7
|
-
import { ISequencedDocumentMessage, MessageType } from "@fluidframework/protocol-definitions";
|
|
8
|
-
import { isRuntimeMessage } from "@fluidframework/driver-utils";
|
|
9
|
-
|
|
10
|
-
const defaultNoopTimeFrequency = 2000;
|
|
11
|
-
const defaultNoopCountFrequency = 50;
|
|
12
|
-
|
|
13
|
-
// Here are key considerations when deciding conditions for when to send non-immediate noops:
|
|
14
|
-
// 1. Sending them too often results in increase in file size and bandwidth, as well as catch up performance
|
|
15
|
-
// 2. Sending too infrequently ensures that collab window is large, and as result Sequence DDS would have
|
|
16
|
-
// large catchUp blobs - see Issue #6364
|
|
17
|
-
// 3. Similarly, processes that rely on "core" snapshot (and can't parse trailing ops, including above), like search
|
|
18
|
-
// parser in SPO, will result in non-accurate results due to presence of catch up blobs.
|
|
19
|
-
// 4. Ordering service used 250ms timeout to coalesce non-immediate noops. It was changed to 2000 ms to allow more
|
|
20
|
-
// aggressive noop sending from client side.
|
|
21
|
-
// 5. Number of ops sent by all clients is proportional to number of "write" clients (every client sends noops),
|
|
22
|
-
// but number of sequenced noops is a function of time (one op per 2 seconds at most).
|
|
23
|
-
// We should consider impact to both outbound traffic (might be huge, depends on number of clients) and file size.
|
|
24
|
-
// Please also see Issue #5629 for more discussions.
|
|
25
|
-
//
|
|
26
|
-
// With that, the current algorithm is as follows:
|
|
27
|
-
// 1. Sent noop 2000 ms of receiving an op if no ops were sent by this client within this timeframe.
|
|
28
|
-
// This will ensure that MSN moves forward with reasonable speed. If that results in too many sequenced noops,
|
|
29
|
-
// server timeout of 2000ms should be reconsidered to be increased.
|
|
30
|
-
// 2. If there are more than 50 ops received without sending any ops, send noop to keep collab window small.
|
|
31
|
-
// Note that system ops (including noops themselves) are excluded, so it's 1 noop per 50 real ops.
|
|
32
|
-
export class CollabWindowTracker {
|
|
33
|
-
private opsCountSinceNoop = 0;
|
|
34
|
-
private readonly timer: Timer | undefined;
|
|
35
|
-
|
|
36
|
-
constructor(
|
|
37
|
-
private readonly submit: (type: MessageType, contents: any) => void,
|
|
38
|
-
NoopTimeFrequency: number = defaultNoopTimeFrequency,
|
|
39
|
-
private readonly NoopCountFrequency: number = defaultNoopCountFrequency,
|
|
40
|
-
) {
|
|
41
|
-
if (NoopTimeFrequency !== Infinity) {
|
|
42
|
-
this.timer = new Timer(NoopTimeFrequency, () => {
|
|
43
|
-
// Can get here due to this.stopSequenceNumberUpdate() not resetting timer.
|
|
44
|
-
// Also timer callback can fire even after timer cancellation if it was queued before cancellation.
|
|
45
|
-
if (this.opsCountSinceNoop !== 0) {
|
|
46
|
-
this.submitNoop(false /* immediate */);
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Schedules as ack to the server to update the reference sequence number
|
|
54
|
-
*/
|
|
55
|
-
public scheduleSequenceNumberUpdate(message: ISequencedDocumentMessage, immediateNoOp: boolean): void {
|
|
56
|
-
// While processing a message, an immediate no-op can be requested.
|
|
57
|
-
// i.e. to expedite approve or commit phase of quorum.
|
|
58
|
-
if (immediateNoOp) {
|
|
59
|
-
this.submitNoop(true /* immediate */);
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// We don't acknowledge no-ops to avoid acknowledgement cycles (i.e. ack the MSN
|
|
64
|
-
// update, which updates the MSN, then ack the update, etc...).
|
|
65
|
-
// Intent here is for runtime (and DDSes) not to keep too much tracking state / memory
|
|
66
|
-
// due to runtime ops from other clients.
|
|
67
|
-
if (!isRuntimeMessage(message)) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
this.opsCountSinceNoop++;
|
|
72
|
-
if (this.opsCountSinceNoop >= this.NoopCountFrequency) {
|
|
73
|
-
this.submitNoop(false /* immediate */);
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
if (this.timer !== undefined) {
|
|
78
|
-
if (this.opsCountSinceNoop === 1) {
|
|
79
|
-
this.timer.restart();
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
assert(this.timer.hasTimer, 0x242 /* "has timer" */);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
private submitNoop(immediate: boolean) {
|
|
87
|
-
// Anything other than null is immediate noop
|
|
88
|
-
this.submit(MessageType.NoOp, immediate ? "" : null);
|
|
89
|
-
assert(this.opsCountSinceNoop === 0,
|
|
90
|
-
0x243 /* "stopSequenceNumberUpdate should be called as result of sending any op!" */);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
public stopSequenceNumberUpdate(): void {
|
|
94
|
-
this.opsCountSinceNoop = 0;
|
|
95
|
-
// Ideally, we cancel timer here. But that will result in too often set/reset cycle if this client
|
|
96
|
-
// keeps sending ops. In most cases it's actually better to let it expire (at most - 4 times per second)
|
|
97
|
-
// for nothing, then have a ton of set/reset cycles.
|
|
98
|
-
// Note that Timer.restart() is smart and will not change timer expiration if we keep extending timer
|
|
99
|
-
// expiration - it will restart the timer instead when it fires with adjusted expiration.
|
|
100
|
-
// this.timer.clear();
|
|
101
|
-
}
|
|
102
|
-
}
|
package/src/deltaManagerProxy.ts
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
IDeltaManager,
|
|
8
|
-
IDeltaManagerEvents,
|
|
9
|
-
IDeltaQueue,
|
|
10
|
-
IDeltaSender,
|
|
11
|
-
IDeltaQueueEvents,
|
|
12
|
-
ReadOnlyInfo,
|
|
13
|
-
} from "@fluidframework/container-definitions";
|
|
14
|
-
import { EventForwarder } from "@fluidframework/common-utils";
|
|
15
|
-
import {
|
|
16
|
-
IClientConfiguration,
|
|
17
|
-
IClientDetails,
|
|
18
|
-
IDocumentMessage,
|
|
19
|
-
ISequencedDocumentMessage,
|
|
20
|
-
ISignalMessage,
|
|
21
|
-
} from "@fluidframework/protocol-definitions";
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Proxy to the real IDeltaQueue - used to restrict access
|
|
25
|
-
*/
|
|
26
|
-
export class DeltaQueueProxy<T> extends EventForwarder<IDeltaQueueEvents<T>> implements IDeltaQueue<T> {
|
|
27
|
-
public get paused(): boolean {
|
|
28
|
-
return this.queue.paused;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
public get length(): number {
|
|
32
|
-
return this.queue.length;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
public get idle(): boolean {
|
|
36
|
-
return this.queue.idle;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
constructor(private readonly queue: IDeltaQueue<T>) {
|
|
40
|
-
super(queue);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
public peek(): T | undefined {
|
|
44
|
-
return this.queue.peek();
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
public toArray(): T[] {
|
|
48
|
-
return this.queue.toArray();
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// back-compat: usage removed in 0.33, remove in future versions
|
|
52
|
-
public async systemPause(): Promise<void> {
|
|
53
|
-
return this.pause();
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
public async pause(): Promise<void> {
|
|
57
|
-
return this.queue.pause();
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// back-compat: usage removed in 0.33, remove in future versions
|
|
61
|
-
public async systemResume(): Promise<void> {
|
|
62
|
-
return this.resume();
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
public async resume(): Promise<void> {
|
|
66
|
-
this.queue.resume();
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
public async waitTillProcessingDone() {
|
|
70
|
-
return this.queue.waitTillProcessingDone();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Proxy to the real IDeltaManager - used to restrict access
|
|
76
|
-
*/
|
|
77
|
-
export class DeltaManagerProxy
|
|
78
|
-
extends EventForwarder<IDeltaManagerEvents>
|
|
79
|
-
implements IDeltaManager<ISequencedDocumentMessage, IDocumentMessage> {
|
|
80
|
-
public readonly inbound: IDeltaQueue<ISequencedDocumentMessage>;
|
|
81
|
-
public readonly outbound: IDeltaQueue<IDocumentMessage[]>;
|
|
82
|
-
public readonly inboundSignal: IDeltaQueue<ISignalMessage>;
|
|
83
|
-
|
|
84
|
-
public get IDeltaSender(): IDeltaSender {
|
|
85
|
-
return this;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
public get minimumSequenceNumber(): number {
|
|
89
|
-
return this.deltaManager.minimumSequenceNumber;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
public get lastSequenceNumber(): number {
|
|
93
|
-
return this.deltaManager.lastSequenceNumber;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
public get lastMessage() {
|
|
97
|
-
return this.deltaManager.lastMessage;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
public get lastKnownSeqNumber() {
|
|
101
|
-
return this.deltaManager.lastKnownSeqNumber;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
public get initialSequenceNumber(): number {
|
|
105
|
-
return this.deltaManager.initialSequenceNumber;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
public get hasCheckpointSequenceNumber() {
|
|
109
|
-
return this.deltaManager.hasCheckpointSequenceNumber;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
public get clientDetails(): IClientDetails {
|
|
113
|
-
return this.deltaManager.clientDetails;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
public get version(): string {
|
|
117
|
-
return this.deltaManager.version;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
public get maxMessageSize(): number {
|
|
121
|
-
return this.deltaManager.maxMessageSize;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
public get serviceConfiguration(): IClientConfiguration | undefined {
|
|
125
|
-
return this.deltaManager.serviceConfiguration;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
public get active(): boolean {
|
|
129
|
-
return this.deltaManager.active;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
public get readOnlyInfo(): ReadOnlyInfo {
|
|
133
|
-
return this.deltaManager.readOnlyInfo;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
constructor(private readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>) {
|
|
137
|
-
super(deltaManager);
|
|
138
|
-
|
|
139
|
-
this.inbound = new DeltaQueueProxy(deltaManager.inbound);
|
|
140
|
-
this.outbound = new DeltaQueueProxy(deltaManager.outbound);
|
|
141
|
-
this.inboundSignal = new DeltaQueueProxy(deltaManager.inboundSignal);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
public dispose(): void {
|
|
145
|
-
this.inbound.dispose();
|
|
146
|
-
this.outbound.dispose();
|
|
147
|
-
this.inboundSignal.dispose();
|
|
148
|
-
super.dispose();
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
public submitSignal(content: any): void {
|
|
152
|
-
return this.deltaManager.submitSignal(content);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
public flush(): void {
|
|
156
|
-
return this.deltaManager.flush();
|
|
157
|
-
}
|
|
158
|
-
}
|