cojson 0.20.0 → 0.20.1
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +12 -0
- package/dist/PeerState.d.ts +6 -1
- package/dist/PeerState.d.ts.map +1 -1
- package/dist/PeerState.js +18 -3
- package/dist/PeerState.js.map +1 -1
- package/dist/coValueCore/coValueCore.d.ts +3 -2
- package/dist/coValueCore/coValueCore.d.ts.map +1 -1
- package/dist/coValueCore/coValueCore.js +13 -19
- package/dist/coValueCore/coValueCore.js.map +1 -1
- package/dist/coValues/coList.d.ts +1 -0
- package/dist/coValues/coList.d.ts.map +1 -1
- package/dist/coValues/coList.js +3 -0
- package/dist/coValues/coList.js.map +1 -1
- package/dist/config.d.ts +2 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -4
- package/dist/config.js.map +1 -1
- package/dist/exports.d.ts +3 -3
- package/dist/exports.d.ts.map +1 -1
- package/dist/exports.js +2 -2
- package/dist/exports.js.map +1 -1
- package/dist/queue/LinkedList.d.ts +9 -3
- package/dist/queue/LinkedList.d.ts.map +1 -1
- package/dist/queue/LinkedList.js +30 -1
- package/dist/queue/LinkedList.js.map +1 -1
- package/dist/queue/OutgoingLoadQueue.d.ts +95 -0
- package/dist/queue/OutgoingLoadQueue.d.ts.map +1 -0
- package/dist/queue/OutgoingLoadQueue.js +240 -0
- package/dist/queue/OutgoingLoadQueue.js.map +1 -0
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +22 -32
- package/dist/sync.js.map +1 -1
- package/dist/tests/LinkedList.test.js +90 -0
- package/dist/tests/LinkedList.test.js.map +1 -1
- package/dist/tests/OutgoingLoadQueue.test.d.ts +2 -0
- package/dist/tests/OutgoingLoadQueue.test.d.ts.map +1 -0
- package/dist/tests/OutgoingLoadQueue.test.js +814 -0
- package/dist/tests/OutgoingLoadQueue.test.js.map +1 -0
- package/dist/tests/sync.concurrentLoad.test.d.ts +2 -0
- package/dist/tests/sync.concurrentLoad.test.d.ts.map +1 -0
- package/dist/tests/sync.concurrentLoad.test.js +481 -0
- package/dist/tests/sync.concurrentLoad.test.js.map +1 -0
- package/dist/tests/sync.storage.test.js +1 -1
- package/dist/tests/testStorage.d.ts.map +1 -1
- package/dist/tests/testStorage.js +3 -1
- package/dist/tests/testStorage.js.map +1 -1
- package/dist/tests/testUtils.d.ts +1 -0
- package/dist/tests/testUtils.d.ts.map +1 -1
- package/dist/tests/testUtils.js +2 -1
- package/dist/tests/testUtils.js.map +1 -1
- package/package.json +4 -4
- package/src/PeerState.ts +26 -3
- package/src/coValueCore/coValueCore.ts +15 -19
- package/src/coValues/coList.ts +4 -0
- package/src/config.ts +4 -4
- package/src/exports.ts +2 -2
- package/src/queue/LinkedList.ts +34 -4
- package/src/queue/OutgoingLoadQueue.ts +307 -0
- package/src/sync.ts +27 -35
- package/src/tests/LinkedList.test.ts +111 -0
- package/src/tests/OutgoingLoadQueue.test.ts +1129 -0
- package/src/tests/sync.concurrentLoad.test.ts +650 -0
- package/src/tests/sync.storage.test.ts +1 -1
- package/src/tests/testStorage.ts +3 -1
- package/src/tests/testUtils.ts +3 -1
package/dist/config.js
CHANGED
|
@@ -13,8 +13,9 @@ export function setMaxRecommendedTxSize(size) {
|
|
|
13
13
|
}
|
|
14
14
|
export const CO_VALUE_LOADING_CONFIG = {
|
|
15
15
|
MAX_RETRIES: 1,
|
|
16
|
-
TIMEOUT:
|
|
16
|
+
TIMEOUT: 60000,
|
|
17
17
|
RETRY_DELAY: 3000,
|
|
18
|
+
MAX_IN_FLIGHT_LOADS_PER_PEER: 1000,
|
|
18
19
|
};
|
|
19
20
|
export function setCoValueLoadingMaxRetries(maxRetries) {
|
|
20
21
|
CO_VALUE_LOADING_CONFIG.MAX_RETRIES = maxRetries;
|
|
@@ -43,12 +44,11 @@ export function setGarbageCollectorInterval(interval) {
|
|
|
43
44
|
}
|
|
44
45
|
export const WEBSOCKET_CONFIG = {
|
|
45
46
|
MAX_OUTGOING_MESSAGES_CHUNK_BYTES: 25000,
|
|
46
|
-
OUTGOING_MESSAGES_CHUNK_DELAY: 5,
|
|
47
47
|
};
|
|
48
48
|
export function setMaxOutgoingMessagesChunkBytes(bytes) {
|
|
49
49
|
WEBSOCKET_CONFIG.MAX_OUTGOING_MESSAGES_CHUNK_BYTES = bytes;
|
|
50
50
|
}
|
|
51
|
-
export function
|
|
52
|
-
|
|
51
|
+
export function setMaxInFlightLoadsPerPeer(limit) {
|
|
52
|
+
CO_VALUE_LOADING_CONFIG.MAX_IN_FLIGHT_LOADS_PER_PEER = limit;
|
|
53
53
|
}
|
|
54
54
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,uBAAuB,EAAE,GAAG,GAAG,IAAI;CACpC,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,kBAAkB,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,KAAM;IACf,WAAW,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,uBAAuB,EAAE,GAAG,GAAG,IAAI;CACpC,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,kBAAkB,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,KAAM;IACf,WAAW,EAAE,IAAI;IACjB,4BAA4B,EAAE,IAAI;CACnC,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,UAAkB;IAC5D,uBAAuB,CAAC,WAAW,GAAG,UAAU,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,uBAAuB,CAAC,OAAO,GAAG,OAAO,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,uBAAuB,CAAC,WAAW,GAAG,KAAK,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,6BAA6B,EAAE,EAAE;CAClC,CAAC;AAEF,MAAM,UAAU,6BAA6B,CAAC,MAAc;IAC1D,qBAAqB,CAAC,6BAA6B,GAAG,MAAM,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,OAAO,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,aAAa;IACtC,QAAQ,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,YAAY;CACtC,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,MAAc;IACtD,wBAAwB,CAAC,OAAO,GAAG,MAAM,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAAgB;IAC1D,wBAAwB,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,iCAAiC,EAAE,KAAM;CAC1C,CAAC;AAEF,MAAM,UAAU,gCAAgC,CAAC,KAAa;IAC5D,gBAAgB,CAAC,iCAAiC,GAAG,KAAK,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACtD,uBAAuB,CAAC,4BAA4B,GAAG,KAAK,CAAC;AAC/D,CAAC"}
|
package/dist/exports.d.ts
CHANGED
|
@@ -33,7 +33,7 @@ import { setSyncStateTrackingBatchDelay } from "./UnsyncedCoValuesTracker.js";
|
|
|
33
33
|
import { emptyKnownState } from "./knownState.js";
|
|
34
34
|
import { getContentMessageSize, getTransactionSize, knownStateFromContent } from "./coValueContentMessage.js";
|
|
35
35
|
import { getDependedOnCoValuesFromRawData } from "./coValueCore/utils.js";
|
|
36
|
-
import { setCoValueLoadingMaxRetries, setCoValueLoadingRetryDelay, setCoValueLoadingTimeout, setIncomingMessagesTimeBudget,
|
|
36
|
+
import { setCoValueLoadingMaxRetries, setCoValueLoadingRetryDelay, setCoValueLoadingTimeout, setIncomingMessagesTimeBudget, setMaxInFlightLoadsPerPeer, setMaxOutgoingMessagesChunkBytes, setMaxRecommendedTxSize } from "./config.js";
|
|
37
37
|
import { LogLevel, logger } from "./logger.js";
|
|
38
38
|
import { getPriorityFromHeader } from "./priority.js";
|
|
39
39
|
import { getDependedOnCoValues } from "./storage/syncUtils.js";
|
|
@@ -69,6 +69,7 @@ export declare const cojsonInternals: {
|
|
|
69
69
|
MAX_RETRIES: number;
|
|
70
70
|
TIMEOUT: number;
|
|
71
71
|
RETRY_DELAY: number;
|
|
72
|
+
MAX_IN_FLIGHT_LOADS_PER_PEER: number;
|
|
72
73
|
};
|
|
73
74
|
CO_VALUE_PRIORITY: {
|
|
74
75
|
readonly HIGH: 0;
|
|
@@ -92,10 +93,9 @@ export declare const cojsonInternals: {
|
|
|
92
93
|
canBeBranched: typeof canBeBranched;
|
|
93
94
|
WEBSOCKET_CONFIG: {
|
|
94
95
|
MAX_OUTGOING_MESSAGES_CHUNK_BYTES: number;
|
|
95
|
-
OUTGOING_MESSAGES_CHUNK_DELAY: number;
|
|
96
96
|
};
|
|
97
97
|
setMaxOutgoingMessagesChunkBytes: typeof setMaxOutgoingMessagesChunkBytes;
|
|
98
|
-
|
|
98
|
+
setMaxInFlightLoadsPerPeer: typeof setMaxInFlightLoadsPerPeer;
|
|
99
99
|
};
|
|
100
100
|
export { LocalNode, RawGroup, Role, EVERYONE, Everyone, RawCoMap, RawCoList, RawCoStream, RawBinaryCoStream, RawCoValue, RawCoID, CoID, AnyRawCoValue, RawAccount, RawAccountID, ControlledAccount, AccountMeta, RawAccountMigration, RawProfile as Profile, SessionID, Media, CoValueCore, ControlledAgent, JsonObject, JsonValue, Peer, BinaryStreamInfo, BinaryCoStreamMeta, AgentID, AgentSecret, InviteSecret, CryptoProvider, SyncMessage, isRawCoID, emptyKnownState, RawCoPlainText, stringifyOpID, logger, LogLevel, base64URLtoBytes, bytesToBase64url, hwrServerPeerSelector, isAccountRole, };
|
|
101
101
|
export type { Value, DisconnectedError, CoValueUniqueness, Stringified, CoStreamItem, BinaryStreamItem, BinaryStreamStart, OpID, AccountRole, AvailableCoValueCore, PeerState, SyncWhen, CoValueHeader, };
|
package/dist/exports.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,KAAK,oBAAoB,EAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,aAAa,EACb,iBAAiB,EAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,UAAU,EACV,kCAAkC,EACnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,cAAc,EAGf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,SAAS,EACT,gBAAgB,EAChB,cAAc,EACf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAA4B,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAIL,2BAA2B,EAC3B,2BAA2B,EAC3B,wBAAwB,EACxB,6BAA6B,EAC7B,gCAAgC,EAChC,
|
|
1
|
+
{"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"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"}
|
package/dist/exports.js
CHANGED
|
@@ -21,7 +21,7 @@ import { setSyncStateTrackingBatchDelay } from "./UnsyncedCoValuesTracker.js";
|
|
|
21
21
|
import { emptyKnownState } from "./knownState.js";
|
|
22
22
|
import { getContentMessageSize, getTransactionSize, knownStateFromContent, } from "./coValueContentMessage.js";
|
|
23
23
|
import { getDependedOnCoValuesFromRawData } from "./coValueCore/utils.js";
|
|
24
|
-
import { CO_VALUE_LOADING_CONFIG, TRANSACTION_CONFIG, WEBSOCKET_CONFIG, setCoValueLoadingMaxRetries, setCoValueLoadingRetryDelay, setCoValueLoadingTimeout, setIncomingMessagesTimeBudget,
|
|
24
|
+
import { CO_VALUE_LOADING_CONFIG, TRANSACTION_CONFIG, WEBSOCKET_CONFIG, setCoValueLoadingMaxRetries, setCoValueLoadingRetryDelay, setCoValueLoadingTimeout, setIncomingMessagesTimeBudget, setMaxInFlightLoadsPerPeer, setMaxOutgoingMessagesChunkBytes, setMaxRecommendedTxSize, } from "./config.js";
|
|
25
25
|
import { LogLevel, logger } from "./logger.js";
|
|
26
26
|
import { CO_VALUE_PRIORITY, getPriorityFromHeader } from "./priority.js";
|
|
27
27
|
import { getDependedOnCoValues } from "./storage/syncUtils.js";
|
|
@@ -68,7 +68,7 @@ export const cojsonInternals = {
|
|
|
68
68
|
canBeBranched,
|
|
69
69
|
WEBSOCKET_CONFIG,
|
|
70
70
|
setMaxOutgoingMessagesChunkBytes,
|
|
71
|
-
|
|
71
|
+
setMaxInFlightLoadsPerPeer,
|
|
72
72
|
};
|
|
73
73
|
export { LocalNode, RawGroup, EVERYONE, RawCoMap, RawCoList, RawCoStream, RawBinaryCoStream, RawAccount, ControlledAccount, RawProfile as Profile, CoValueCore, ControlledAgent, CryptoProvider, isRawCoID, emptyKnownState, RawCoPlainText, stringifyOpID, logger, LogLevel, base64URLtoBytes, bytesToBase64url, hwrServerPeerSelector, isAccountRole, };
|
|
74
74
|
export * from "./storage/index.js";
|
package/dist/exports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EACL,WAAW,EACX,WAAW,EACX,sBAAsB,GAEvB,MAAM,8BAA8B,CAAC;AAKtC,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,UAAU,EACV,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAQ,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAIL,iBAAiB,EACjB,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,SAAS,EACT,gBAAgB,EAChB,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAe,SAAS,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAazD,OAAO,EAAe,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAI3E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAEL,WAAW,EACX,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,EAC3B,wBAAwB,EACxB,6BAA6B,EAC7B,gCAAgC,EAChC,
|
|
1
|
+
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,9 @@ type Tuple<T, N extends number, A extends unknown[] = []> = A extends {
|
|
|
6
6
|
length: N;
|
|
7
7
|
} ? A : Tuple<T, N, [...A, T]>;
|
|
8
8
|
export type QueueTuple = Tuple<LinkedList<SyncMessage>, 3>;
|
|
9
|
-
type LinkedListNode<T> = {
|
|
9
|
+
export type LinkedListNode<T> = {
|
|
10
10
|
value: T;
|
|
11
|
+
prev: LinkedListNode<T> | undefined;
|
|
11
12
|
next: LinkedListNode<T> | undefined;
|
|
12
13
|
};
|
|
13
14
|
/**
|
|
@@ -20,8 +21,13 @@ export declare class LinkedList<T> {
|
|
|
20
21
|
head: LinkedListNode<T> | undefined;
|
|
21
22
|
tail: LinkedListNode<T> | undefined;
|
|
22
23
|
length: number;
|
|
23
|
-
push(value: T):
|
|
24
|
+
push(value: T): LinkedListNode<T>;
|
|
24
25
|
shift(): T | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Remove a specific node from the list in O(1) time.
|
|
28
|
+
* The node must be a valid node that was returned by push().
|
|
29
|
+
*/
|
|
30
|
+
remove(node: LinkedListNode<T>): void;
|
|
25
31
|
isEmpty(): boolean;
|
|
26
32
|
}
|
|
27
33
|
declare class QueueMeter {
|
|
@@ -32,6 +38,6 @@ declare class QueueMeter {
|
|
|
32
38
|
pull(): void;
|
|
33
39
|
push(): void;
|
|
34
40
|
}
|
|
35
|
-
export declare function meteredList<T>(type: "incoming" | "outgoing" | "storage-streaming", attrs?: Record<string, string | number>): LinkedList<T>;
|
|
41
|
+
export declare function meteredList<T>(type: "incoming" | "outgoing" | "storage-streaming" | "load-requests-queue", attrs?: Record<string, string | number>): LinkedList<T>;
|
|
36
42
|
export {};
|
|
37
43
|
//# sourceMappingURL=LinkedList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkedList.d.ts","sourceRoot":"","sources":["../../src/queue/LinkedList.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS;IACpE,MAAM,EAAE,CAAC,CAAC;CACX,GACG,CAAC,GACD,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3B,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,
|
|
1
|
+
{"version":3,"file":"LinkedList.d.ts","sourceRoot":"","sources":["../../src/queue/LinkedList.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS;IACpE,MAAM,EAAE,CAAC,CAAC;CACX,GACG,CAAC,GACD,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3B,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACpC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CACrC,CAAC;AACF;;;GAGG;AAEH,qBAAa,UAAU,CAAC,CAAC;IACX,OAAO,CAAC,KAAK,CAAC;gBAAN,KAAK,CAAC,EAAE,UAAU,YAAA;IAEtC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,MAAM,SAAK;IAEX,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAmBjC,KAAK;IAsBL;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAqBrC,OAAO;CAGR;AACD,cAAM,UAAU;IAMZ,OAAO,CAAC,KAAK,CAAC;IALhB,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,WAAW,CAAU;gBAG3B,MAAM,EAAE,MAAM,EACN,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,YAAA;IA0B1C,IAAI;IAIJ,IAAI;CAGZ;AACD,wBAAgB,WAAW,CAAC,CAAC,EAC3B,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,mBAAmB,GAAG,qBAAqB,EAC3E,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,iBAGxC"}
|
package/dist/queue/LinkedList.js
CHANGED
|
@@ -11,12 +11,13 @@ export class LinkedList {
|
|
|
11
11
|
this.length = 0;
|
|
12
12
|
}
|
|
13
13
|
push(value) {
|
|
14
|
-
const node = { value, next: undefined };
|
|
14
|
+
const node = { value, prev: undefined, next: undefined };
|
|
15
15
|
if (this.head === undefined) {
|
|
16
16
|
this.head = node;
|
|
17
17
|
this.tail = node;
|
|
18
18
|
}
|
|
19
19
|
else if (this.tail) {
|
|
20
|
+
node.prev = this.tail;
|
|
20
21
|
this.tail.next = node;
|
|
21
22
|
this.tail = node;
|
|
22
23
|
}
|
|
@@ -25,6 +26,7 @@ export class LinkedList {
|
|
|
25
26
|
}
|
|
26
27
|
this.length++;
|
|
27
28
|
this.meter?.push();
|
|
29
|
+
return node;
|
|
28
30
|
}
|
|
29
31
|
shift() {
|
|
30
32
|
if (!this.head) {
|
|
@@ -37,10 +39,37 @@ export class LinkedList {
|
|
|
37
39
|
if (this.head === undefined) {
|
|
38
40
|
this.tail = undefined;
|
|
39
41
|
}
|
|
42
|
+
else {
|
|
43
|
+
this.head.prev = undefined;
|
|
44
|
+
}
|
|
40
45
|
this.length--;
|
|
41
46
|
this.meter?.pull();
|
|
42
47
|
return value;
|
|
43
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Remove a specific node from the list in O(1) time.
|
|
51
|
+
* The node must be a valid node that was returned by push().
|
|
52
|
+
*/
|
|
53
|
+
remove(node) {
|
|
54
|
+
if (node.prev) {
|
|
55
|
+
node.prev.next = node.next;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// Node is the head
|
|
59
|
+
this.head = node.next;
|
|
60
|
+
}
|
|
61
|
+
if (node.next) {
|
|
62
|
+
node.next.prev = node.prev;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// Node is the tail
|
|
66
|
+
this.tail = node.prev;
|
|
67
|
+
}
|
|
68
|
+
node.prev = undefined;
|
|
69
|
+
node.next = undefined;
|
|
70
|
+
this.length--;
|
|
71
|
+
this.meter?.pull();
|
|
72
|
+
}
|
|
44
73
|
isEmpty() {
|
|
45
74
|
return this.head === undefined;
|
|
46
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkedList.js","sourceRoot":"","sources":["../../src/queue/LinkedList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"LinkedList.js","sourceRoot":"","sources":["../../src/queue/LinkedList.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { CoValueCore } from "../exports.js";
|
|
2
|
+
import type { PeerID } from "../sync.js";
|
|
3
|
+
/**
|
|
4
|
+
* Mode for enqueuing load requests:
|
|
5
|
+
* - "high-priority" (default): high priority, processed in order
|
|
6
|
+
* - "low-priority": processed after all high priority requests
|
|
7
|
+
* - "immediate": bypasses the queue entirely, executes immediately
|
|
8
|
+
*/
|
|
9
|
+
export type LoadMode = "low-priority" | "immediate" | "high-priority";
|
|
10
|
+
/**
|
|
11
|
+
* A queue that manages outgoing load requests with throttling.
|
|
12
|
+
*
|
|
13
|
+
* Features:
|
|
14
|
+
* - Limits concurrent in-flight load requests per peer
|
|
15
|
+
* - FIFO order for pending requests
|
|
16
|
+
* - O(1) enqueue and dequeue operations using LinkedList
|
|
17
|
+
* - Manages timeouts for in-flight loads with a single timer
|
|
18
|
+
*/
|
|
19
|
+
export declare class OutgoingLoadQueue {
|
|
20
|
+
private peerId;
|
|
21
|
+
private inFlightLoads;
|
|
22
|
+
private highPriorityPending;
|
|
23
|
+
private lowPriorityPending;
|
|
24
|
+
/**
|
|
25
|
+
* Tracks nodes in the low-priority queue by CoValue ID for O(1) upgrade lookup.
|
|
26
|
+
*/
|
|
27
|
+
private lowPriorityNodes;
|
|
28
|
+
/**
|
|
29
|
+
* Tracks nodes in the high-priority queue by CoValue ID for O(1) immediate mode lookup.
|
|
30
|
+
*/
|
|
31
|
+
private highPriorityNodes;
|
|
32
|
+
private timeoutHandle;
|
|
33
|
+
constructor(peerId: PeerID);
|
|
34
|
+
/**
|
|
35
|
+
* Check if we can send another load request.
|
|
36
|
+
*/
|
|
37
|
+
private canSend;
|
|
38
|
+
/**
|
|
39
|
+
* Track that a load request has been sent.
|
|
40
|
+
*/
|
|
41
|
+
private trackSent;
|
|
42
|
+
/**
|
|
43
|
+
* Schedule a timeout check if not already scheduled.
|
|
44
|
+
* Uses a single timer to check all in-flight loads.
|
|
45
|
+
*/
|
|
46
|
+
private scheduleTimeoutCheck;
|
|
47
|
+
/**
|
|
48
|
+
* Check all in-flight loads for timeouts and handle them.
|
|
49
|
+
*/
|
|
50
|
+
private checkTimeouts;
|
|
51
|
+
trackUpdate(coValue: CoValueCore): void;
|
|
52
|
+
/**
|
|
53
|
+
* Track that a load request has completed.
|
|
54
|
+
* Triggers processing of pending requests.
|
|
55
|
+
*/
|
|
56
|
+
trackComplete(coValue: CoValueCore): void;
|
|
57
|
+
/**
|
|
58
|
+
* Enqueue a load request.
|
|
59
|
+
* Immediately processes the queue to send requests if capacity is available.
|
|
60
|
+
* Skips CoValues that are already in-flight or pending.
|
|
61
|
+
*
|
|
62
|
+
* @param coValue - The CoValue to load
|
|
63
|
+
* @param sendCallback - Callback to send the request when ready
|
|
64
|
+
* @param mode - Optional mode: "low-priority" for background loads, "immediate" to bypass queue
|
|
65
|
+
*/
|
|
66
|
+
enqueue(value: CoValueCore, sendCallback: () => void, mode?: LoadMode): void;
|
|
67
|
+
private processing;
|
|
68
|
+
/**
|
|
69
|
+
* Process all pending load requests while capacity is available.
|
|
70
|
+
* High-priority requests are processed first, then low-priority.
|
|
71
|
+
*/
|
|
72
|
+
private processQueue;
|
|
73
|
+
/**
|
|
74
|
+
* Clear all state. Called on disconnect.
|
|
75
|
+
* Clears the timeout and all pending/in-flight loads.
|
|
76
|
+
*/
|
|
77
|
+
clear(): void;
|
|
78
|
+
/**
|
|
79
|
+
* Get the number of in-flight loads (for testing/debugging).
|
|
80
|
+
*/
|
|
81
|
+
get inFlightCount(): number;
|
|
82
|
+
/**
|
|
83
|
+
* Get the number of pending loads (for testing/debugging).
|
|
84
|
+
*/
|
|
85
|
+
get pendingCount(): number;
|
|
86
|
+
/**
|
|
87
|
+
* Get the number of high-priority pending loads (for testing/debugging).
|
|
88
|
+
*/
|
|
89
|
+
get highPriorityPendingCount(): number;
|
|
90
|
+
/**
|
|
91
|
+
* Get the number of low-priority pending loads (for testing/debugging).
|
|
92
|
+
*/
|
|
93
|
+
get lowPriorityPendingCount(): number;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=OutgoingLoadQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OutgoingLoadQueue.d.ts","sourceRoot":"","sources":["../../src/queue/OutgoingLoadQueue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAQzC;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,WAAW,GAAG,eAAe,CAAC;AAEtE;;;;;;;;GAQG;AACH,qBAAa,iBAAiB;IAsBhB,OAAO,CAAC,MAAM;IArB1B,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,mBAAmB,CAGzB;IACF,OAAO,CAAC,kBAAkB,CAGxB;IACF;;OAEG;IACH,OAAO,CAAC,gBAAgB,CACZ;IACZ;;OAEG;IACH,OAAO,CAAC,iBAAiB,CACb;IACZ,OAAO,CAAC,aAAa,CAA8C;gBAE/C,MAAM,EAAE,MAAM;IAElC;;OAEG;IACH,OAAO,CAAC,OAAO;IAOf;;OAEG;IACH,OAAO,CAAC,SAAS;IAMjB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAyCrB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IASvC;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAczC;;;;;;;;OAQG;IACH,OAAO,CACL,KAAK,EAAE,WAAW,EAClB,YAAY,EAAE,MAAM,IAAI,EACxB,IAAI,GAAE,QAA0B,GAC/B,IAAI;IAsDP,OAAO,CAAC,UAAU,CAAS;IAC3B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAiCpB;;;OAGG;IACH,KAAK,IAAI,IAAI;IAYb;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;OAEG;IACH,IAAI,wBAAwB,IAAI,MAAM,CAErC;IAED;;OAEG;IACH,IAAI,uBAAuB,IAAI,MAAM,CAEpC;CACF"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { CO_VALUE_LOADING_CONFIG } from "../config.js";
|
|
2
|
+
import { logger } from "../logger.js";
|
|
3
|
+
import { LinkedList, meteredList } from "./LinkedList.js";
|
|
4
|
+
/**
|
|
5
|
+
* A queue that manages outgoing load requests with throttling.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Limits concurrent in-flight load requests per peer
|
|
9
|
+
* - FIFO order for pending requests
|
|
10
|
+
* - O(1) enqueue and dequeue operations using LinkedList
|
|
11
|
+
* - Manages timeouts for in-flight loads with a single timer
|
|
12
|
+
*/
|
|
13
|
+
export class OutgoingLoadQueue {
|
|
14
|
+
constructor(peerId) {
|
|
15
|
+
this.peerId = peerId;
|
|
16
|
+
this.inFlightLoads = new Map();
|
|
17
|
+
this.highPriorityPending = meteredList("load-requests-queue", { priority: "high" });
|
|
18
|
+
this.lowPriorityPending = meteredList("load-requests-queue", { priority: "low" });
|
|
19
|
+
/**
|
|
20
|
+
* Tracks nodes in the low-priority queue by CoValue ID for O(1) upgrade lookup.
|
|
21
|
+
*/
|
|
22
|
+
this.lowPriorityNodes = new Map();
|
|
23
|
+
/**
|
|
24
|
+
* Tracks nodes in the high-priority queue by CoValue ID for O(1) immediate mode lookup.
|
|
25
|
+
*/
|
|
26
|
+
this.highPriorityNodes = new Map();
|
|
27
|
+
this.timeoutHandle = null;
|
|
28
|
+
this.processing = false;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Check if we can send another load request.
|
|
32
|
+
*/
|
|
33
|
+
canSend() {
|
|
34
|
+
return (this.inFlightLoads.size <
|
|
35
|
+
CO_VALUE_LOADING_CONFIG.MAX_IN_FLIGHT_LOADS_PER_PEER);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Track that a load request has been sent.
|
|
39
|
+
*/
|
|
40
|
+
trackSent(coValue) {
|
|
41
|
+
const now = performance.now();
|
|
42
|
+
this.inFlightLoads.set(coValue, now);
|
|
43
|
+
this.scheduleTimeoutCheck(CO_VALUE_LOADING_CONFIG.TIMEOUT);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Schedule a timeout check if not already scheduled.
|
|
47
|
+
* Uses a single timer to check all in-flight loads.
|
|
48
|
+
*/
|
|
49
|
+
scheduleTimeoutCheck(nextTimeout) {
|
|
50
|
+
if (this.timeoutHandle !== null) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
this.timeoutHandle = setTimeout(() => {
|
|
54
|
+
this.timeoutHandle = null;
|
|
55
|
+
this.checkTimeouts();
|
|
56
|
+
}, nextTimeout);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Check all in-flight loads for timeouts and handle them.
|
|
60
|
+
*/
|
|
61
|
+
checkTimeouts() {
|
|
62
|
+
const now = performance.now();
|
|
63
|
+
let nextTimeout;
|
|
64
|
+
for (const [coValue, sentAt] of this.inFlightLoads.entries()) {
|
|
65
|
+
const timeout = sentAt + CO_VALUE_LOADING_CONFIG.TIMEOUT;
|
|
66
|
+
if (now >= timeout) {
|
|
67
|
+
if (!coValue.isAvailable()) {
|
|
68
|
+
logger.warn("Load request timed out", {
|
|
69
|
+
id: coValue.id,
|
|
70
|
+
peerId: this.peerId,
|
|
71
|
+
});
|
|
72
|
+
coValue.markNotFoundInPeer(this.peerId);
|
|
73
|
+
}
|
|
74
|
+
else if (coValue.isStreaming()) {
|
|
75
|
+
logger.warn("Content streaming is taking more than " +
|
|
76
|
+
CO_VALUE_LOADING_CONFIG.TIMEOUT / 1000 +
|
|
77
|
+
"s", {
|
|
78
|
+
id: coValue.id,
|
|
79
|
+
peerId: this.peerId,
|
|
80
|
+
knownState: coValue.knownState().sessions,
|
|
81
|
+
streamingTarget: coValue.knownStateWithStreaming().sessions,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
this.inFlightLoads.delete(coValue);
|
|
85
|
+
this.processQueue();
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
nextTimeout = Math.min(nextTimeout ?? Infinity, timeout - now);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Reschedule if there are still in-flight loads
|
|
92
|
+
if (nextTimeout) {
|
|
93
|
+
this.scheduleTimeoutCheck(nextTimeout);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
trackUpdate(coValue) {
|
|
97
|
+
if (!this.inFlightLoads.has(coValue)) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
// Refresh the timeout for the in-flight load
|
|
101
|
+
this.inFlightLoads.set(coValue, performance.now());
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Track that a load request has completed.
|
|
105
|
+
* Triggers processing of pending requests.
|
|
106
|
+
*/
|
|
107
|
+
trackComplete(coValue) {
|
|
108
|
+
if (!this.inFlightLoads.has(coValue)) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (coValue.isStreaming()) {
|
|
112
|
+
// wait for the next chunk
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
this.inFlightLoads.delete(coValue);
|
|
116
|
+
this.processQueue();
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Enqueue a load request.
|
|
120
|
+
* Immediately processes the queue to send requests if capacity is available.
|
|
121
|
+
* Skips CoValues that are already in-flight or pending.
|
|
122
|
+
*
|
|
123
|
+
* @param coValue - The CoValue to load
|
|
124
|
+
* @param sendCallback - Callback to send the request when ready
|
|
125
|
+
* @param mode - Optional mode: "low-priority" for background loads, "immediate" to bypass queue
|
|
126
|
+
*/
|
|
127
|
+
enqueue(value, sendCallback, mode = "high-priority") {
|
|
128
|
+
if (this.inFlightLoads.has(value)) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const lowPriorityNode = this.lowPriorityNodes.get(value.id);
|
|
132
|
+
const highPriorityNode = this.highPriorityNodes.get(value.id);
|
|
133
|
+
switch (mode) {
|
|
134
|
+
case "immediate":
|
|
135
|
+
// Upgrade any low-priority or high-priority requests to immediate priority
|
|
136
|
+
if (lowPriorityNode) {
|
|
137
|
+
this.lowPriorityPending.remove(lowPriorityNode);
|
|
138
|
+
this.lowPriorityNodes.delete(value.id);
|
|
139
|
+
}
|
|
140
|
+
if (highPriorityNode) {
|
|
141
|
+
this.highPriorityPending.remove(highPriorityNode);
|
|
142
|
+
this.highPriorityNodes.delete(value.id);
|
|
143
|
+
}
|
|
144
|
+
this.trackSent(value);
|
|
145
|
+
sendCallback();
|
|
146
|
+
break;
|
|
147
|
+
case "high-priority":
|
|
148
|
+
if (highPriorityNode) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
// Upgrade any low-priority requests to high-priority
|
|
152
|
+
if (lowPriorityNode) {
|
|
153
|
+
this.lowPriorityPending.remove(lowPriorityNode);
|
|
154
|
+
this.lowPriorityNodes.delete(value.id);
|
|
155
|
+
}
|
|
156
|
+
this.highPriorityNodes.set(value.id, this.highPriorityPending.push({ value, sendCallback }));
|
|
157
|
+
this.processQueue();
|
|
158
|
+
break;
|
|
159
|
+
case "low-priority":
|
|
160
|
+
if (lowPriorityNode || highPriorityNode) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
this.lowPriorityNodes.set(value.id, this.lowPriorityPending.push({ value, sendCallback }));
|
|
164
|
+
this.processQueue();
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Process all pending load requests while capacity is available.
|
|
170
|
+
* High-priority requests are processed first, then low-priority.
|
|
171
|
+
*/
|
|
172
|
+
processQueue() {
|
|
173
|
+
if (this.processing || !this.canSend()) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
this.processing = true;
|
|
177
|
+
while (this.canSend()) {
|
|
178
|
+
// Try high-priority first
|
|
179
|
+
let next = this.highPriorityPending.shift();
|
|
180
|
+
if (next) {
|
|
181
|
+
// Remove from the tracking map since we're processing it
|
|
182
|
+
this.highPriorityNodes.delete(next.value.id);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
// Fall back to low-priority if high-priority is empty
|
|
186
|
+
next = this.lowPriorityPending.shift();
|
|
187
|
+
if (next) {
|
|
188
|
+
// Remove from the tracking map since we're processing it
|
|
189
|
+
this.lowPriorityNodes.delete(next.value.id);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (!next) {
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
this.trackSent(next.value);
|
|
196
|
+
next.sendCallback();
|
|
197
|
+
}
|
|
198
|
+
this.processing = false;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Clear all state. Called on disconnect.
|
|
202
|
+
* Clears the timeout and all pending/in-flight loads.
|
|
203
|
+
*/
|
|
204
|
+
clear() {
|
|
205
|
+
if (this.timeoutHandle !== null) {
|
|
206
|
+
clearTimeout(this.timeoutHandle);
|
|
207
|
+
this.timeoutHandle = null;
|
|
208
|
+
}
|
|
209
|
+
this.inFlightLoads.clear();
|
|
210
|
+
this.highPriorityPending = new LinkedList();
|
|
211
|
+
this.lowPriorityPending = new LinkedList();
|
|
212
|
+
this.highPriorityNodes.clear();
|
|
213
|
+
this.lowPriorityNodes.clear();
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get the number of in-flight loads (for testing/debugging).
|
|
217
|
+
*/
|
|
218
|
+
get inFlightCount() {
|
|
219
|
+
return this.inFlightLoads.size;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Get the number of pending loads (for testing/debugging).
|
|
223
|
+
*/
|
|
224
|
+
get pendingCount() {
|
|
225
|
+
return this.highPriorityPending.length + this.lowPriorityPending.length;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Get the number of high-priority pending loads (for testing/debugging).
|
|
229
|
+
*/
|
|
230
|
+
get highPriorityPendingCount() {
|
|
231
|
+
return this.highPriorityPending.length;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Get the number of low-priority pending loads (for testing/debugging).
|
|
235
|
+
*/
|
|
236
|
+
get lowPriorityPendingCount() {
|
|
237
|
+
return this.lowPriorityPending.length;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=OutgoingLoadQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OutgoingLoadQueue.js","sourceRoot":"","sources":["../../src/queue/OutgoingLoadQueue.ts"],"names":[],"mappings":"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"}
|
package/dist/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
|