@matter/protocol 0.16.0-alpha.0-20250913-0bc2515df → 0.16.0-alpha.0-20250920-809524dba
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/cjs/bdx/BdxClient.d.ts +31 -0
- package/dist/cjs/bdx/BdxClient.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxClient.js +57 -0
- package/dist/cjs/bdx/BdxClient.js.map +6 -0
- package/dist/cjs/bdx/BdxError.d.ts +21 -0
- package/dist/cjs/bdx/BdxError.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxError.js +54 -0
- package/dist/cjs/bdx/BdxError.js.map +6 -0
- package/dist/cjs/bdx/BdxMessenger.d.ts +77 -0
- package/dist/cjs/bdx/BdxMessenger.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxMessenger.js +245 -0
- package/dist/cjs/bdx/BdxMessenger.js.map +6 -0
- package/dist/cjs/bdx/BdxProtocol.d.ts +25 -0
- package/dist/cjs/bdx/BdxProtocol.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxProtocol.js +102 -0
- package/dist/cjs/bdx/BdxProtocol.js.map +6 -0
- package/dist/cjs/bdx/BdxSession.d.ts +36 -0
- package/dist/cjs/bdx/BdxSession.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxSession.js +153 -0
- package/dist/cjs/bdx/BdxSession.js.map +6 -0
- package/dist/cjs/bdx/BdxSessionConfiguration.d.ts +61 -0
- package/dist/cjs/bdx/BdxSessionConfiguration.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxSessionConfiguration.js +95 -0
- package/dist/cjs/bdx/BdxSessionConfiguration.js.map +6 -0
- package/dist/cjs/bdx/FileDesignator.d.ts +21 -0
- package/dist/cjs/bdx/FileDesignator.d.ts.map +1 -0
- package/dist/cjs/bdx/FileDesignator.js +62 -0
- package/dist/cjs/bdx/FileDesignator.js.map +6 -0
- package/dist/cjs/bdx/PersistedFileDesignator.d.ts +16 -0
- package/dist/cjs/bdx/PersistedFileDesignator.d.ts.map +1 -0
- package/dist/cjs/bdx/PersistedFileDesignator.js +57 -0
- package/dist/cjs/bdx/PersistedFileDesignator.js.map +6 -0
- package/dist/cjs/bdx/bdx-session-initiator.d.ts +14 -0
- package/dist/cjs/bdx/bdx-session-initiator.d.ts.map +1 -0
- package/dist/cjs/bdx/bdx-session-initiator.js +218 -0
- package/dist/cjs/bdx/bdx-session-initiator.js.map +6 -0
- package/dist/cjs/bdx/flow/DrivenSendingFlow.d.ts +15 -0
- package/dist/cjs/bdx/flow/DrivenSendingFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/DrivenSendingFlow.js +49 -0
- package/dist/cjs/bdx/flow/DrivenSendingFlow.js.map +6 -0
- package/dist/cjs/bdx/flow/DrivingReceivingFlow.d.ts +15 -0
- package/dist/cjs/bdx/flow/DrivingReceivingFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/DrivingReceivingFlow.js +47 -0
- package/dist/cjs/bdx/flow/DrivingReceivingFlow.js.map +6 -0
- package/dist/cjs/bdx/flow/Flow.d.ts +48 -0
- package/dist/cjs/bdx/flow/Flow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/Flow.js +112 -0
- package/dist/cjs/bdx/flow/Flow.js.map +6 -0
- package/dist/cjs/bdx/flow/FollowingReceivingFlow.d.ts +16 -0
- package/dist/cjs/bdx/flow/FollowingReceivingFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/FollowingReceivingFlow.js +60 -0
- package/dist/cjs/bdx/flow/FollowingReceivingFlow.js.map +6 -0
- package/dist/cjs/bdx/flow/FollowingSendingFlow.d.ts +15 -0
- package/dist/cjs/bdx/flow/FollowingSendingFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/FollowingSendingFlow.js +49 -0
- package/dist/cjs/bdx/flow/FollowingSendingFlow.js.map +6 -0
- package/dist/cjs/bdx/flow/InboundFlow.d.ts +26 -0
- package/dist/cjs/bdx/flow/InboundFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/InboundFlow.js +101 -0
- package/dist/cjs/bdx/flow/InboundFlow.js.map +6 -0
- package/dist/cjs/bdx/flow/OutboundFlow.d.ts +31 -0
- package/dist/cjs/bdx/flow/OutboundFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/OutboundFlow.js +124 -0
- package/dist/cjs/bdx/flow/OutboundFlow.js.map +6 -0
- package/dist/cjs/bdx/index.d.ts +16 -0
- package/dist/cjs/bdx/index.d.ts.map +1 -0
- package/dist/cjs/bdx/index.js +33 -0
- package/dist/cjs/bdx/index.js.map +6 -0
- package/dist/cjs/bdx/schema/BdxAcceptMessagesSchema.d.ts +50 -0
- package/dist/cjs/bdx/schema/BdxAcceptMessagesSchema.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/BdxAcceptMessagesSchema.js +125 -0
- package/dist/cjs/bdx/schema/BdxAcceptMessagesSchema.js.map +6 -0
- package/dist/cjs/bdx/schema/BdxBlockMessagesSchema.d.ts +53 -0
- package/dist/cjs/bdx/schema/BdxBlockMessagesSchema.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/BdxBlockMessagesSchema.js +92 -0
- package/dist/cjs/bdx/schema/BdxBlockMessagesSchema.js.map +6 -0
- package/dist/cjs/bdx/schema/BdxInitMessagesSchema.d.ts +117 -0
- package/dist/cjs/bdx/schema/BdxInitMessagesSchema.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/BdxInitMessagesSchema.js +153 -0
- package/dist/cjs/bdx/schema/BdxInitMessagesSchema.js.map +6 -0
- package/dist/cjs/bdx/schema/BdxMessage.d.ts +23 -0
- package/dist/cjs/bdx/schema/BdxMessage.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/BdxMessage.js +75 -0
- package/dist/cjs/bdx/schema/BdxMessage.js.map +6 -0
- package/dist/cjs/bdx/schema/BdxStatusMessageSchema.d.ts +12 -0
- package/dist/cjs/bdx/schema/BdxStatusMessageSchema.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/BdxStatusMessageSchema.js +35 -0
- package/dist/cjs/bdx/schema/BdxStatusMessageSchema.js.map +6 -0
- package/dist/cjs/bdx/schema/index.d.ts +11 -0
- package/dist/cjs/bdx/schema/index.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/index.js +28 -0
- package/dist/cjs/bdx/schema/index.js.map +6 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/mdns/MdnsClient.js +2 -2
- package/dist/cjs/mdns/MdnsClient.js.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.js +4 -2
- package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
- package/dist/cjs/protocol/MessageExchange.d.ts +2 -0
- package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageExchange.js +14 -8
- package/dist/cjs/protocol/MessageExchange.js.map +2 -2
- package/dist/cjs/protocol/ProtocolStatusMessage.d.ts +1 -1
- package/dist/cjs/protocol/ProtocolStatusMessage.d.ts.map +1 -1
- package/dist/cjs/protocol/ProtocolStatusMessage.js.map +1 -1
- package/dist/esm/bdx/BdxClient.d.ts +31 -0
- package/dist/esm/bdx/BdxClient.d.ts.map +1 -0
- package/dist/esm/bdx/BdxClient.js +37 -0
- package/dist/esm/bdx/BdxClient.js.map +6 -0
- package/dist/esm/bdx/BdxError.d.ts +21 -0
- package/dist/esm/bdx/BdxError.d.ts.map +1 -0
- package/dist/esm/bdx/BdxError.js +34 -0
- package/dist/esm/bdx/BdxError.js.map +6 -0
- package/dist/esm/bdx/BdxMessenger.d.ts +77 -0
- package/dist/esm/bdx/BdxMessenger.d.ts.map +1 -0
- package/dist/esm/bdx/BdxMessenger.js +233 -0
- package/dist/esm/bdx/BdxMessenger.js.map +6 -0
- package/dist/esm/bdx/BdxProtocol.d.ts +25 -0
- package/dist/esm/bdx/BdxProtocol.d.ts.map +1 -0
- package/dist/esm/bdx/BdxProtocol.js +82 -0
- package/dist/esm/bdx/BdxProtocol.js.map +6 -0
- package/dist/esm/bdx/BdxSession.d.ts +36 -0
- package/dist/esm/bdx/BdxSession.d.ts.map +1 -0
- package/dist/esm/bdx/BdxSession.js +133 -0
- package/dist/esm/bdx/BdxSession.js.map +6 -0
- package/dist/esm/bdx/BdxSessionConfiguration.d.ts +61 -0
- package/dist/esm/bdx/BdxSessionConfiguration.d.ts.map +1 -0
- package/dist/esm/bdx/BdxSessionConfiguration.js +75 -0
- package/dist/esm/bdx/BdxSessionConfiguration.js.map +6 -0
- package/dist/esm/bdx/FileDesignator.d.ts +21 -0
- package/dist/esm/bdx/FileDesignator.d.ts.map +1 -0
- package/dist/esm/bdx/FileDesignator.js +42 -0
- package/dist/esm/bdx/FileDesignator.js.map +6 -0
- package/dist/esm/bdx/PersistedFileDesignator.d.ts +16 -0
- package/dist/esm/bdx/PersistedFileDesignator.d.ts.map +1 -0
- package/dist/esm/bdx/PersistedFileDesignator.js +37 -0
- package/dist/esm/bdx/PersistedFileDesignator.js.map +6 -0
- package/dist/esm/bdx/bdx-session-initiator.d.ts +14 -0
- package/dist/esm/bdx/bdx-session-initiator.d.ts.map +1 -0
- package/dist/esm/bdx/bdx-session-initiator.js +198 -0
- package/dist/esm/bdx/bdx-session-initiator.js.map +6 -0
- package/dist/esm/bdx/flow/DrivenSendingFlow.d.ts +15 -0
- package/dist/esm/bdx/flow/DrivenSendingFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/DrivenSendingFlow.js +29 -0
- package/dist/esm/bdx/flow/DrivenSendingFlow.js.map +6 -0
- package/dist/esm/bdx/flow/DrivingReceivingFlow.d.ts +15 -0
- package/dist/esm/bdx/flow/DrivingReceivingFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/DrivingReceivingFlow.js +27 -0
- package/dist/esm/bdx/flow/DrivingReceivingFlow.js.map +6 -0
- package/dist/esm/bdx/flow/Flow.d.ts +48 -0
- package/dist/esm/bdx/flow/Flow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/Flow.js +92 -0
- package/dist/esm/bdx/flow/Flow.js.map +6 -0
- package/dist/esm/bdx/flow/FollowingReceivingFlow.d.ts +16 -0
- package/dist/esm/bdx/flow/FollowingReceivingFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/FollowingReceivingFlow.js +40 -0
- package/dist/esm/bdx/flow/FollowingReceivingFlow.js.map +6 -0
- package/dist/esm/bdx/flow/FollowingSendingFlow.d.ts +15 -0
- package/dist/esm/bdx/flow/FollowingSendingFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/FollowingSendingFlow.js +29 -0
- package/dist/esm/bdx/flow/FollowingSendingFlow.js.map +6 -0
- package/dist/esm/bdx/flow/InboundFlow.d.ts +26 -0
- package/dist/esm/bdx/flow/InboundFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/InboundFlow.js +81 -0
- package/dist/esm/bdx/flow/InboundFlow.js.map +6 -0
- package/dist/esm/bdx/flow/OutboundFlow.d.ts +31 -0
- package/dist/esm/bdx/flow/OutboundFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/OutboundFlow.js +104 -0
- package/dist/esm/bdx/flow/OutboundFlow.js.map +6 -0
- package/dist/esm/bdx/index.d.ts +16 -0
- package/dist/esm/bdx/index.d.ts.map +1 -0
- package/dist/esm/bdx/index.js +16 -0
- package/dist/esm/bdx/index.js.map +6 -0
- package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.d.ts +50 -0
- package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.d.ts.map +1 -0
- package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.js +109 -0
- package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.js.map +6 -0
- package/dist/esm/bdx/schema/BdxBlockMessagesSchema.d.ts +53 -0
- package/dist/esm/bdx/schema/BdxBlockMessagesSchema.d.ts.map +1 -0
- package/dist/esm/bdx/schema/BdxBlockMessagesSchema.js +72 -0
- package/dist/esm/bdx/schema/BdxBlockMessagesSchema.js.map +6 -0
- package/dist/esm/bdx/schema/BdxInitMessagesSchema.d.ts +117 -0
- package/dist/esm/bdx/schema/BdxInitMessagesSchema.d.ts.map +1 -0
- package/dist/esm/bdx/schema/BdxInitMessagesSchema.js +133 -0
- package/dist/esm/bdx/schema/BdxInitMessagesSchema.js.map +6 -0
- package/dist/esm/bdx/schema/BdxMessage.d.ts +23 -0
- package/dist/esm/bdx/schema/BdxMessage.d.ts.map +1 -0
- package/dist/esm/bdx/schema/BdxMessage.js +62 -0
- package/dist/esm/bdx/schema/BdxMessage.js.map +6 -0
- package/dist/esm/bdx/schema/BdxStatusMessageSchema.d.ts +12 -0
- package/dist/esm/bdx/schema/BdxStatusMessageSchema.d.ts.map +1 -0
- package/dist/esm/bdx/schema/BdxStatusMessageSchema.js +15 -0
- package/dist/esm/bdx/schema/BdxStatusMessageSchema.js.map +6 -0
- package/dist/esm/bdx/schema/index.d.ts +11 -0
- package/dist/esm/bdx/schema/index.d.ts.map +1 -0
- package/dist/esm/bdx/schema/index.js +11 -0
- package/dist/esm/bdx/schema/index.js.map +6 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mdns/MdnsClient.js +2 -2
- package/dist/esm/mdns/MdnsClient.js.map +1 -1
- package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeManager.js +4 -2
- package/dist/esm/protocol/ExchangeManager.js.map +1 -1
- package/dist/esm/protocol/MessageExchange.d.ts +2 -0
- package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/esm/protocol/MessageExchange.js +14 -8
- package/dist/esm/protocol/MessageExchange.js.map +2 -2
- package/dist/esm/protocol/ProtocolStatusMessage.d.ts +1 -1
- package/dist/esm/protocol/ProtocolStatusMessage.d.ts.map +1 -1
- package/dist/esm/protocol/ProtocolStatusMessage.js.map +1 -1
- package/package.json +6 -6
- package/src/bdx/BdxClient.ts +47 -0
- package/src/bdx/BdxError.ts +39 -0
- package/src/bdx/BdxMessenger.ts +291 -0
- package/src/bdx/BdxProtocol.ts +93 -0
- package/src/bdx/BdxSession.ts +174 -0
- package/src/bdx/BdxSessionConfiguration.ts +134 -0
- package/src/bdx/FileDesignator.ts +49 -0
- package/src/bdx/PersistedFileDesignator.ts +40 -0
- package/src/bdx/bdx-session-initiator.ts +246 -0
- package/src/bdx/flow/DrivenSendingFlow.ts +40 -0
- package/src/bdx/flow/DrivingReceivingFlow.ts +39 -0
- package/src/bdx/flow/Flow.ts +124 -0
- package/src/bdx/flow/FollowingReceivingFlow.ts +53 -0
- package/src/bdx/flow/FollowingSendingFlow.ts +38 -0
- package/src/bdx/flow/InboundFlow.ts +104 -0
- package/src/bdx/flow/OutboundFlow.ts +124 -0
- package/src/bdx/index.ts +16 -0
- package/src/bdx/schema/BdxAcceptMessagesSchema.ts +159 -0
- package/src/bdx/schema/BdxBlockMessagesSchema.ts +99 -0
- package/src/bdx/schema/BdxInitMessagesSchema.ts +213 -0
- package/src/bdx/schema/BdxMessage.ts +70 -0
- package/src/bdx/schema/BdxStatusMessageSchema.ts +14 -0
- package/src/bdx/schema/index.ts +11 -0
- package/src/index.ts +1 -0
- package/src/mdns/MdnsClient.ts +2 -2
- package/src/protocol/ExchangeManager.ts +2 -0
- package/src/protocol/MessageExchange.ts +17 -6
- package/src/protocol/ProtocolStatusMessage.ts +1 -1
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { ImplementationError, InternalError, Logger } from "#general";
|
|
7
|
+
import { BdxStatusCode } from "#types";
|
|
8
|
+
import { BdxError } from "./BdxError.js";
|
|
9
|
+
import { BdxMessenger } from "./BdxMessenger.js";
|
|
10
|
+
import { Flow } from "./flow/Flow.js";
|
|
11
|
+
import { BDX_VERSION } from "./schema/BdxInitMessagesSchema.js";
|
|
12
|
+
const logger = Logger.get("bdxSessionInitiator");
|
|
13
|
+
async function bdxSessionInitiator(messenger, config) {
|
|
14
|
+
if (config.isInitiator) {
|
|
15
|
+
if (config.isSender) {
|
|
16
|
+
const initMessage2 = await buildInitMessage();
|
|
17
|
+
const acceptMessage3 = await messenger.sendSendInit(initMessage2);
|
|
18
|
+
return collectAcceptParameters(
|
|
19
|
+
acceptMessage3,
|
|
20
|
+
// We define the data, so we know it are numbers
|
|
21
|
+
initMessage2.startOffset !== void 0 ? Number(initMessage2.startOffset) : void 0,
|
|
22
|
+
initMessage2.maxLength !== void 0 ? Number(initMessage2.maxLength) : void 0
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
const acceptMessage2 = await messenger.sendReceiveInit(await buildInitMessage());
|
|
26
|
+
return collectAcceptParameters(acceptMessage2);
|
|
27
|
+
}
|
|
28
|
+
const initMessage = config.initMessage;
|
|
29
|
+
if (initMessage === void 0) {
|
|
30
|
+
throw new InternalError("Initial message must be set before starting from initial message");
|
|
31
|
+
}
|
|
32
|
+
logger.debug(`Initialize BDX ${config.isSender ? "ReceiveInit" : "SendInit"} from incoming Message`, initMessage);
|
|
33
|
+
if (config.isSender) {
|
|
34
|
+
if (!config.fileDesignator.exists()) {
|
|
35
|
+
throw new BdxError(
|
|
36
|
+
`File designator ${config.fileDesignator.text} does not point to an existing file in the storage to send data`,
|
|
37
|
+
BdxStatusCode.FileDesignatorUnknown
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
let { startOffset } = initMessage;
|
|
41
|
+
if (startOffset !== void 0) {
|
|
42
|
+
startOffset = BdxMessenger.asSafeNumber(startOffset, "Start offset", BdxStatusCode.StartOffsetNotSupported);
|
|
43
|
+
}
|
|
44
|
+
const acceptMessage2 = await determineAcceptParameters(initMessage);
|
|
45
|
+
const length = "length" in acceptMessage2 && typeof acceptMessage2.length === "number" ? acceptMessage2.length : void 0;
|
|
46
|
+
const blobToRead = await config.fileDesignator.openBlob();
|
|
47
|
+
if (length !== void 0 && length > 0) {
|
|
48
|
+
const availableSize = blobToRead.size - (startOffset ?? 0);
|
|
49
|
+
if (length > availableSize) {
|
|
50
|
+
throw new BdxError(
|
|
51
|
+
`Requested maxLength ${length}bytes${startOffset ? ` with startOffset ${startOffset}` : ""} exceeds available size ${blobToRead.size} for blob ${config.fileDesignator.text}`,
|
|
52
|
+
BdxStatusCode.LengthTooLarge
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
await messenger.sendReceiveAccept(acceptMessage2);
|
|
57
|
+
return collectAcceptParameters(acceptMessage2, startOffset, length);
|
|
58
|
+
}
|
|
59
|
+
const acceptMessage = {
|
|
60
|
+
...await determineAcceptParameters(initMessage),
|
|
61
|
+
length: void 0
|
|
62
|
+
// Length is not included in SendAccept, so take out to not confuse in logs
|
|
63
|
+
};
|
|
64
|
+
await messenger.sendSendAccept(acceptMessage);
|
|
65
|
+
return collectAcceptParameters(acceptMessage);
|
|
66
|
+
async function buildInitMessage() {
|
|
67
|
+
const {
|
|
68
|
+
senderStartOffset,
|
|
69
|
+
maxTransferSize,
|
|
70
|
+
senderMaxLength,
|
|
71
|
+
preferredDriverModes,
|
|
72
|
+
asynchronousTransferAllowed
|
|
73
|
+
} = config.transferConfig;
|
|
74
|
+
const { isSender, fileDesignator } = config;
|
|
75
|
+
let startOffset;
|
|
76
|
+
let maxLength;
|
|
77
|
+
if (isSender) {
|
|
78
|
+
maxLength = (await fileDesignator.openBlob()).size;
|
|
79
|
+
if (senderStartOffset !== void 0) {
|
|
80
|
+
if (maxLength <= senderStartOffset) {
|
|
81
|
+
throw new ImplementationError(
|
|
82
|
+
`Available data of ${maxLength}bytes are smaller than senderStartOffset ${senderStartOffset}bytes`
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
startOffset = senderStartOffset;
|
|
86
|
+
maxLength -= startOffset;
|
|
87
|
+
}
|
|
88
|
+
if (maxTransferSize !== void 0) {
|
|
89
|
+
if (maxLength > maxTransferSize) {
|
|
90
|
+
throw new ImplementationError(
|
|
91
|
+
`Requested maxLength ${maxLength}bytes exceeds maximum transfer size ${maxTransferSize}bytes`
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (senderMaxLength !== void 0) {
|
|
96
|
+
if (maxLength >= senderMaxLength) {
|
|
97
|
+
maxLength = senderMaxLength;
|
|
98
|
+
} else {
|
|
99
|
+
logger.info(
|
|
100
|
+
`Ignoring requested senderMaxLength ${senderMaxLength}bytes as it is larger then the relevant payload size of ${maxLength}bytes`
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
let maxBlockSize = messenger.maxPayloadSize - 4;
|
|
106
|
+
const requestedBlockSize = config.transferConfig.maxBlockSize;
|
|
107
|
+
if (requestedBlockSize !== void 0) {
|
|
108
|
+
if (maxBlockSize > requestedBlockSize) {
|
|
109
|
+
maxBlockSize = requestedBlockSize;
|
|
110
|
+
} else {
|
|
111
|
+
logger.info(
|
|
112
|
+
`Ignoring requested maxBlockSize ${requestedBlockSize}, as it is larger then the transport max payload size ${maxBlockSize}bytes`
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
transferProtocol: {
|
|
118
|
+
version: BDX_VERSION,
|
|
119
|
+
senderDrive: !!preferredDriverModes?.includes(Flow.DriverMode.SenderDrive),
|
|
120
|
+
receiverDrive: !!preferredDriverModes?.includes(Flow.DriverMode.ReceiverDrive),
|
|
121
|
+
asynchronousTransfer: asynchronousTransferAllowed
|
|
122
|
+
// always false for now
|
|
123
|
+
},
|
|
124
|
+
maxBlockSize,
|
|
125
|
+
fileDesignator: fileDesignator.bytes,
|
|
126
|
+
startOffset,
|
|
127
|
+
maxLength
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
async function determineAcceptParameters(initMessage2) {
|
|
131
|
+
const { transferProtocol, maxLength: initMaxLength = 0 } = initMessage2;
|
|
132
|
+
let { maxBlockSize } = initMessage2;
|
|
133
|
+
let finalDriverMode;
|
|
134
|
+
for (const mode of config.transferConfig.preferredDriverModes) {
|
|
135
|
+
if (transferProtocol[mode]) {
|
|
136
|
+
finalDriverMode = mode;
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (finalDriverMode === void 0) {
|
|
141
|
+
throw new BdxError("Can not determine a valid transfer mode", BdxStatusCode.TransferMethodNotSupported);
|
|
142
|
+
}
|
|
143
|
+
const requestedMaxBlockSize = config.transferConfig.maxBlockSize;
|
|
144
|
+
if (requestedMaxBlockSize !== void 0 && maxBlockSize > requestedMaxBlockSize) {
|
|
145
|
+
maxBlockSize = requestedMaxBlockSize;
|
|
146
|
+
}
|
|
147
|
+
const maxLength = BdxMessenger.asSafeNumber(initMaxLength, "Max length", BdxStatusCode.LengthTooLarge);
|
|
148
|
+
const transferControl = {
|
|
149
|
+
version: BDX_VERSION,
|
|
150
|
+
// We support the minimum version, so no need for further checks
|
|
151
|
+
[finalDriverMode]: true,
|
|
152
|
+
// this sets either senderDrive or receiveDriver property
|
|
153
|
+
asynchronousTransfer: false
|
|
154
|
+
// Not supported so ignore if it was received
|
|
155
|
+
};
|
|
156
|
+
return {
|
|
157
|
+
transferControl,
|
|
158
|
+
maxBlockSize,
|
|
159
|
+
length: maxLength > 0 ? maxLength : void 0
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
function collectAcceptParameters(acceptMessage2, startOffset = 0, maxLength) {
|
|
163
|
+
const {
|
|
164
|
+
transferControl: { senderDrive, asynchronousTransfer },
|
|
165
|
+
maxBlockSize
|
|
166
|
+
} = acceptMessage2;
|
|
167
|
+
if (asynchronousTransfer) {
|
|
168
|
+
throw new BdxError(
|
|
169
|
+
"Asynchronous transfer is not supported in this implementation",
|
|
170
|
+
BdxStatusCode.TransferMethodNotSupported
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
const dataLength = "length" in acceptMessage2 && acceptMessage2.length !== void 0 ? BdxMessenger.asSafeNumber(
|
|
174
|
+
acceptMessage2.length,
|
|
175
|
+
"Accept message length field",
|
|
176
|
+
BdxStatusCode.LengthTooLarge
|
|
177
|
+
) : maxLength;
|
|
178
|
+
const transferParameters = {
|
|
179
|
+
transferMode: senderDrive ? Flow.DriverMode.SenderDrive : Flow.DriverMode.ReceiverDrive,
|
|
180
|
+
asynchronousTransfer: false,
|
|
181
|
+
// always false for now
|
|
182
|
+
dataLength,
|
|
183
|
+
startOffset,
|
|
184
|
+
blockSize: maxBlockSize,
|
|
185
|
+
isDriver: config.isSender && senderDrive || !config.isSender && !senderDrive,
|
|
186
|
+
fileDesignator: config.fileDesignator
|
|
187
|
+
};
|
|
188
|
+
logger.debug(
|
|
189
|
+
`${transferParameters.isDriver ? "We are" : "Peer is"} driving-${config.isSender ? "sender" : "receiver"} with negotiated transfer parameters`,
|
|
190
|
+
transferParameters
|
|
191
|
+
);
|
|
192
|
+
return transferParameters;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
export {
|
|
196
|
+
bdxSessionInitiator
|
|
197
|
+
};
|
|
198
|
+
//# sourceMappingURL=bdx-session-initiator.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/bdx/bdx-session-initiator.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["initMessage", "acceptMessage"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { OutboundFlow } from "./OutboundFlow.js";
|
|
7
|
+
/**
|
|
8
|
+
* BDX Transport flow logic for a "BDX Driving Sender":
|
|
9
|
+
* - Send out the Block and wait for Ack (if synchronous transfer is used)
|
|
10
|
+
* - Last message is sent with BlockEof and expects AckEof
|
|
11
|
+
*/
|
|
12
|
+
export declare class DrivenSendingFlow extends OutboundFlow {
|
|
13
|
+
protected transferNextChunk(): Promise<boolean>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=DrivenSendingFlow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DrivenSendingFlow.d.ts","sourceRoot":"","sources":["../../../../src/bdx/flow/DrivenSendingFlow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;cAC/B,iBAAiB;CAyBpC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { OutboundFlow } from "./OutboundFlow.js";
|
|
7
|
+
class DrivenSendingFlow extends OutboundFlow {
|
|
8
|
+
async transferNextChunk() {
|
|
9
|
+
const { asynchronousTransfer } = this.transferParameters;
|
|
10
|
+
const { iterator } = this.stream;
|
|
11
|
+
const blockCounter = this.nextMessageCounter;
|
|
12
|
+
const { data, done } = await this.readDataChunk(iterator);
|
|
13
|
+
if (done) {
|
|
14
|
+
await this.messenger.sendBlockEof({ data: data ?? new Uint8Array(), blockCounter });
|
|
15
|
+
this.finalBlockCounter = blockCounter;
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
await this.messenger.sendBlock({ data, blockCounter });
|
|
19
|
+
if (!asynchronousTransfer) {
|
|
20
|
+
const { blockCounter: ackedBlockCounter } = await this.messenger.readBlockAck();
|
|
21
|
+
this.validateCounter(ackedBlockCounter, blockCounter);
|
|
22
|
+
}
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export {
|
|
27
|
+
DrivenSendingFlow
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=DrivenSendingFlow.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/bdx/flow/DrivenSendingFlow.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,oBAAoB;AAOtB,MAAM,0BAA0B,aAAa;AAAA,EAChD,MAAgB,oBAAoB;AAChC,UAAM,EAAE,qBAAqB,IAAI,KAAK;AACtC,UAAM,EAAE,SAAS,IAAI,KAAK;AAE1B,UAAM,eAAe,KAAK;AAE1B,UAAM,EAAE,MAAM,KAAK,IAAI,MAAM,KAAK,cAAc,QAAQ;AAExD,QAAI,MAAM;AAEN,YAAM,KAAK,UAAU,aAAa,EAAE,MAAM,QAAQ,IAAI,WAAW,GAAG,aAAa,CAAC;AAClF,WAAK,oBAAoB;AACzB,aAAO;AAAA,IACX;AAGA,UAAM,KAAK,UAAU,UAAU,EAAE,MAAM,aAAa,CAAC;AAGrD,QAAI,CAAC,sBAAsB;AACvB,YAAM,EAAE,cAAc,kBAAkB,IAAI,MAAM,KAAK,UAAU,aAAa;AAC9E,WAAK,gBAAgB,mBAAmB,YAAY;AAAA,IACxD;AACA,WAAO;AAAA,EACX;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { InboundFlow } from "./InboundFlow.js";
|
|
7
|
+
/**
|
|
8
|
+
* BDX Transport flow logic for a "BDX Driving Receiver":
|
|
9
|
+
* - Requests the next Blow using BlockQuery and then reads the Block
|
|
10
|
+
* - Last message is confirmed with an AckEof
|
|
11
|
+
*/
|
|
12
|
+
export declare class DrivingReceivingFlow extends InboundFlow {
|
|
13
|
+
transferNextChunk(): Promise<boolean>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=DrivingReceivingFlow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DrivingReceivingFlow.d.ts","sourceRoot":"","sources":["../../../../src/bdx/flow/DrivingReceivingFlow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;IAC3C,iBAAiB;CAwB1B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { InboundFlow } from "./InboundFlow.js";
|
|
7
|
+
class DrivingReceivingFlow extends InboundFlow {
|
|
8
|
+
async transferNextChunk() {
|
|
9
|
+
const { writeController } = this.stream;
|
|
10
|
+
const blockCounter = this.nextMessageCounter;
|
|
11
|
+
await this.messenger.sendBlockQuery({ blockCounter });
|
|
12
|
+
const {
|
|
13
|
+
kind: messageType,
|
|
14
|
+
message: { blockCounter: dataBlockCounter, data }
|
|
15
|
+
} = await this.messenger.readBlock();
|
|
16
|
+
this.validateCounter(dataBlockCounter, blockCounter);
|
|
17
|
+
if (this.writeDataChunk(writeController, data, messageType)) {
|
|
18
|
+
this.finalBlockCounter = dataBlockCounter;
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
DrivingReceivingFlow
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=DrivingReceivingFlow.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/bdx/flow/DrivingReceivingFlow.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,mBAAmB;AAOrB,MAAM,6BAA6B,YAAY;AAAA,EAClD,MAAM,oBAAoB;AACtB,UAAM,EAAE,gBAAgB,IAAI,KAAK;AAEjC,UAAM,eAAe,KAAK;AAI1B,UAAM,KAAK,UAAU,eAAe,EAAE,aAAa,CAAC;AAGpD,UAAM;AAAA,MACF,MAAM;AAAA,MACN,SAAS,EAAE,cAAc,kBAAkB,KAAK;AAAA,IACpD,IAAI,MAAM,KAAK,UAAU,UAAU;AACnC,SAAK,gBAAgB,kBAAkB,YAAY;AAGnD,QAAI,KAAK,eAAe,iBAAiB,MAAM,WAAW,GAAG;AACzD,WAAK,oBAAoB;AACzB,aAAO;AAAA,IACX;AAEA,WAAO;AAAA,EACX;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { BdxMessenger } from "../BdxMessenger.js";
|
|
7
|
+
import { PersistedFileDesignator } from "../PersistedFileDesignator.js";
|
|
8
|
+
/** Base class for BDX transfer flows. */
|
|
9
|
+
export declare abstract class Flow {
|
|
10
|
+
#private;
|
|
11
|
+
constructor(messenger: BdxMessenger, transferParameters: Flow.TransferOptions);
|
|
12
|
+
protected get transferParameters(): Flow.TransferOptions;
|
|
13
|
+
protected get isClosed(): boolean;
|
|
14
|
+
protected get messenger(): BdxMessenger;
|
|
15
|
+
protected get bytesLeft(): number | undefined;
|
|
16
|
+
protected set bytesLeft(value: number);
|
|
17
|
+
protected set finalBlockCounter(blockCounter: number);
|
|
18
|
+
protected get finalBlockCounter(): number;
|
|
19
|
+
/** Determines the next message counter to use for the next message, also handles wrapping around at 2^32. */
|
|
20
|
+
protected get nextMessageCounter(): number;
|
|
21
|
+
/** Utility function to check if a block counter is valid */
|
|
22
|
+
protected validateCounter(messageBlockCounter: number, expectedCounter?: number): number;
|
|
23
|
+
close(_error?: unknown): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Main logic method to execute the flow.
|
|
26
|
+
* The promise resolves when the flow is complete, or rejects on any error or unexpected conditions.
|
|
27
|
+
*/
|
|
28
|
+
processTransfer(): Promise<void>;
|
|
29
|
+
protected abstract initTransfer(): Promise<void>;
|
|
30
|
+
protected abstract transferNextChunk(): Promise<boolean>;
|
|
31
|
+
protected abstract finalizeTransfer(): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
export declare namespace Flow {
|
|
34
|
+
interface TransferOptions {
|
|
35
|
+
transferMode: DriverMode;
|
|
36
|
+
asynchronousTransfer: false;
|
|
37
|
+
dataLength?: number;
|
|
38
|
+
startOffset: number;
|
|
39
|
+
blockSize: number;
|
|
40
|
+
isDriver: boolean;
|
|
41
|
+
fileDesignator: PersistedFileDesignator;
|
|
42
|
+
}
|
|
43
|
+
enum DriverMode {
|
|
44
|
+
SenderDrive = "senderDrive",
|
|
45
|
+
ReceiverDrive = "receiverDrive"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=Flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Flow.d.ts","sourceRoot":"","sources":["../../../../src/bdx/flow/Flow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAExE,yCAAyC;AACzC,8BAAsB,IAAI;;gBAQV,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,IAAI,CAAC,eAAe;IAM7E,SAAS,KAAK,kBAAkB,IAAI,IAAI,CAAC,eAAe,CAEvD;IAED,SAAS,KAAK,QAAQ,YAErB;IAED,SAAS,KAAK,SAAS,iBAEtB;IAED,SAAS,KAAK,SAAS,IAAI,MAAM,GAAG,SAAS,CAE5C;IAED,SAAS,KAAK,SAAS,CAAC,KAAK,EAAE,MAAM,EAEpC;IAED,SAAS,KAAK,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAKnD;IAED,SAAS,KAAK,iBAAiB,IAPe,MAAM,CAYnD;IAED,6GAA6G;IAC7G,SAAS,KAAK,kBAAkB,WAG/B;IAED,4DAA4D;IAC5D,SAAS,CAAC,eAAe,CAAC,mBAAmB,EAAE,MAAM,EAAE,eAAe,SAA0B;IAU1F,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO;IAI5B;;;OAGG;IACG,eAAe;IAerB,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAExD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CACvD;AAED,yBAAiB,IAAI,CAAC;IAClB,UAAiB,eAAe;QAC5B,YAAY,EAAE,UAAU,CAAC;QACzB,oBAAoB,EAAE,KAAK,CAAC;QAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC;QAClB,cAAc,EAAE,uBAAuB,CAAC;KAC3C;IAED,KAAY,UAAU;QAClB,WAAW,gBAAgB;QAC3B,aAAa,kBAAkB;KAClC;CACJ"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { InternalError } from "#general";
|
|
7
|
+
import { BdxStatusCode } from "#types";
|
|
8
|
+
import { BdxError } from "../BdxError.js";
|
|
9
|
+
class Flow {
|
|
10
|
+
#transferParameters;
|
|
11
|
+
#messenger;
|
|
12
|
+
#isClosed = false;
|
|
13
|
+
#blockCounter = 0;
|
|
14
|
+
#bytesLeft;
|
|
15
|
+
#finalBlockCounter;
|
|
16
|
+
constructor(messenger, transferParameters) {
|
|
17
|
+
this.#messenger = messenger;
|
|
18
|
+
this.#transferParameters = transferParameters;
|
|
19
|
+
this.#bytesLeft = transferParameters.dataLength;
|
|
20
|
+
}
|
|
21
|
+
get transferParameters() {
|
|
22
|
+
return this.#transferParameters;
|
|
23
|
+
}
|
|
24
|
+
get isClosed() {
|
|
25
|
+
return this.#isClosed;
|
|
26
|
+
}
|
|
27
|
+
get messenger() {
|
|
28
|
+
return this.#messenger;
|
|
29
|
+
}
|
|
30
|
+
get bytesLeft() {
|
|
31
|
+
return this.#bytesLeft;
|
|
32
|
+
}
|
|
33
|
+
set bytesLeft(value) {
|
|
34
|
+
this.#bytesLeft = value;
|
|
35
|
+
}
|
|
36
|
+
set finalBlockCounter(blockCounter) {
|
|
37
|
+
if (this.#finalBlockCounter !== void 0) {
|
|
38
|
+
throw new InternalError("Transfer already finalized. finalizeTransfer() should only be called once.");
|
|
39
|
+
}
|
|
40
|
+
this.#finalBlockCounter = blockCounter;
|
|
41
|
+
}
|
|
42
|
+
get finalBlockCounter() {
|
|
43
|
+
if (this.#finalBlockCounter === void 0) {
|
|
44
|
+
throw new InternalError("Transfer not finalized. Call finalizeTransfer() after completing the transfer.");
|
|
45
|
+
}
|
|
46
|
+
return this.#finalBlockCounter;
|
|
47
|
+
}
|
|
48
|
+
/** Determines the next message counter to use for the next message, also handles wrapping around at 2^32. */
|
|
49
|
+
get nextMessageCounter() {
|
|
50
|
+
this.#blockCounter = (this.#blockCounter + 1) % 4294967296;
|
|
51
|
+
return this.#blockCounter;
|
|
52
|
+
}
|
|
53
|
+
/** Utility function to check if a block counter is valid */
|
|
54
|
+
validateCounter(messageBlockCounter, expectedCounter = this.nextMessageCounter) {
|
|
55
|
+
if (messageBlockCounter !== expectedCounter) {
|
|
56
|
+
throw new BdxError(
|
|
57
|
+
`Received Block with unexpected block counter: ${messageBlockCounter}, expected: ${expectedCounter}`,
|
|
58
|
+
BdxStatusCode.BadBlockCounter
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
return messageBlockCounter;
|
|
62
|
+
}
|
|
63
|
+
async close(_error) {
|
|
64
|
+
this.#isClosed = true;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Main logic method to execute the flow.
|
|
68
|
+
* The promise resolves when the flow is complete, or rejects on any error or unexpected conditions.
|
|
69
|
+
*/
|
|
70
|
+
async processTransfer() {
|
|
71
|
+
await this.initTransfer();
|
|
72
|
+
while (!this.isClosed) {
|
|
73
|
+
if (await this.transferNextChunk()) {
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (!this.isClosed) {
|
|
78
|
+
await this.finalizeTransfer();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
((Flow2) => {
|
|
83
|
+
let DriverMode;
|
|
84
|
+
((DriverMode2) => {
|
|
85
|
+
DriverMode2["SenderDrive"] = "senderDrive";
|
|
86
|
+
DriverMode2["ReceiverDrive"] = "receiverDrive";
|
|
87
|
+
})(DriverMode = Flow2.DriverMode || (Flow2.DriverMode = {}));
|
|
88
|
+
})(Flow || (Flow = {}));
|
|
89
|
+
export {
|
|
90
|
+
Flow
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=Flow.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/bdx/flow/Flow.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,gBAAgB;AAKlB,MAAe,KAAK;AAAA,EACd;AAAA,EACA;AAAA,EACT,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EAEA,YAAY,WAAyB,oBAA0C;AAC3E,SAAK,aAAa;AAClB,SAAK,sBAAsB;AAC3B,SAAK,aAAa,mBAAmB;AAAA,EACzC;AAAA,EAEA,IAAc,qBAA2C;AACrD,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAc,WAAW;AACrB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAc,YAAY;AACtB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAc,YAAgC;AAC1C,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAc,UAAU,OAAe;AACnC,SAAK,aAAa;AAAA,EACtB;AAAA,EAEA,IAAc,kBAAkB,cAAsB;AAClD,QAAI,KAAK,uBAAuB,QAAW;AACvC,YAAM,IAAI,cAAc,4EAA4E;AAAA,IACxG;AACA,SAAK,qBAAqB;AAAA,EAC9B;AAAA,EAEA,IAAc,oBAAoB;AAC9B,QAAI,KAAK,uBAAuB,QAAW;AACvC,YAAM,IAAI,cAAc,gFAAgF;AAAA,IAC5G;AACA,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAGA,IAAc,qBAAqB;AAC/B,SAAK,iBAAiB,KAAK,gBAAgB,KAAK;AAChD,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAGU,gBAAgB,qBAA6B,kBAAkB,KAAK,oBAAoB;AAC9F,QAAI,wBAAwB,iBAAiB;AACzC,YAAM,IAAI;AAAA,QACN,iDAAiD,mBAAmB,eAAe,eAAe;AAAA,QAClG,cAAc;AAAA,MAClB;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,MAAM,QAAkB;AAC1B,SAAK,YAAY;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkB;AACpB,UAAM,KAAK,aAAa;AAGxB,WAAO,CAAC,KAAK,UAAU;AACnB,UAAI,MAAM,KAAK,kBAAkB,GAAG;AAChC;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,CAAC,KAAK,UAAU;AAChB,YAAM,KAAK,iBAAiB;AAAA,IAChC;AAAA,EACJ;AAOJ;AAAA,CAEO,CAAUA,UAAV;AAWI,MAAK;AAAL,IAAKC,gBAAL;AACH,IAAAA,YAAA,iBAAc;AACd,IAAAA,YAAA,mBAAgB;AAAA,KAFR,aAAAD,MAAA,eAAAA,MAAA;AAAA,GAXC;",
|
|
5
|
+
"names": ["Flow", "DriverMode"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { OutboundFlow } from "./OutboundFlow.js";
|
|
7
|
+
/**
|
|
8
|
+
* BDX Transport flow logic for a "BDX Following Receiver":
|
|
9
|
+
* - Reads BlockQuery(WithSkip) messages and responds with Block or (for last block) BlockEof.
|
|
10
|
+
* Data are skipped over when requested by the peer.
|
|
11
|
+
* - After the last block is send it expects an AckEof
|
|
12
|
+
*/
|
|
13
|
+
export declare class FollowingReceivingFlow extends OutboundFlow {
|
|
14
|
+
protected transferNextChunk(): Promise<boolean>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=FollowingReceivingFlow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FollowingReceivingFlow.d.ts","sourceRoot":"","sources":["../../../../src/bdx/flow/FollowingReceivingFlow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,YAAY;cACpC,iBAAiB;CAgCpC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Logger } from "#general";
|
|
7
|
+
import { BdxMessageType, BdxStatusCode } from "#types";
|
|
8
|
+
import { BdxMessenger } from "../BdxMessenger.js";
|
|
9
|
+
import { BdxMessage } from "../schema/BdxMessage.js";
|
|
10
|
+
import { OutboundFlow } from "./OutboundFlow.js";
|
|
11
|
+
const logger = Logger.get("BdxFollowingReceivingFlow");
|
|
12
|
+
class FollowingReceivingFlow extends OutboundFlow {
|
|
13
|
+
async transferNextChunk() {
|
|
14
|
+
const { iterator, streamReader } = this.stream;
|
|
15
|
+
const blockQuery = await this.messenger.readBlockQuery();
|
|
16
|
+
const bytesToSkip = BdxMessage.is(blockQuery, BdxMessageType.BlockQueryWithSkip) ? BdxMessenger.asSafeNumber(
|
|
17
|
+
blockQuery.message.bytesToSkip,
|
|
18
|
+
"BytesToSkip",
|
|
19
|
+
BdxStatusCode.TransferFailedUnknownError
|
|
20
|
+
) : 0;
|
|
21
|
+
const { blockCounter } = blockQuery.message;
|
|
22
|
+
this.validateCounter(blockCounter);
|
|
23
|
+
if (bytesToSkip > 0) {
|
|
24
|
+
const skipped = await streamReader.skip(bytesToSkip);
|
|
25
|
+
logger.debug(`Skipped ${skipped}bytes of data (requested ${bytesToSkip}bytes)`);
|
|
26
|
+
}
|
|
27
|
+
const { data, done } = await this.readDataChunk(iterator);
|
|
28
|
+
if (done) {
|
|
29
|
+
await this.messenger.sendBlockEof({ data, blockCounter });
|
|
30
|
+
this.finalBlockCounter = blockCounter;
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
await this.messenger.sendBlock({ data, blockCounter });
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export {
|
|
38
|
+
FollowingReceivingFlow
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=FollowingReceivingFlow.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/bdx/flow/FollowingReceivingFlow.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc;AACvB,SAAS,gBAAgB,qBAAqB;AAC9C,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAE7B,MAAM,SAAS,OAAO,IAAI,2BAA2B;AAO9C,MAAM,+BAA+B,aAAa;AAAA,EACrD,MAAgB,oBAAoB;AAChC,UAAM,EAAE,UAAU,aAAa,IAAI,KAAK;AAGxC,UAAM,aAAa,MAAM,KAAK,UAAU,eAAe;AACvD,UAAM,cAAc,WAAW,GAAG,YAAY,eAAe,kBAAkB,IACzE,aAAa;AAAA,MACT,WAAW,QAAQ;AAAA,MACnB;AAAA,MACA,cAAc;AAAA,IAClB,IACA;AAEN,UAAM,EAAE,aAAa,IAAI,WAAW;AACpC,SAAK,gBAAgB,YAAY;AAEjC,QAAI,cAAc,GAAG;AACjB,YAAM,UAAU,MAAM,aAAa,KAAK,WAAW;AACnD,aAAO,MAAM,WAAW,OAAO,4BAA4B,WAAW,QAAQ;AAAA,IAClF;AACA,UAAM,EAAE,MAAM,KAAK,IAAI,MAAM,KAAK,cAAc,QAAQ;AAExD,QAAI,MAAM;AACN,YAAM,KAAK,UAAU,aAAa,EAAE,MAAM,aAAa,CAAC;AACxD,WAAK,oBAAoB;AACzB,aAAO;AAAA,IACX;AAEA,UAAM,KAAK,UAAU,UAAU,EAAE,MAAM,aAAa,CAAC;AAErD,WAAO;AAAA,EACX;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { InboundFlow } from "./InboundFlow.js";
|
|
7
|
+
/**
|
|
8
|
+
* BDX Transport flow logic for a "BDX Following Sender":
|
|
9
|
+
* - Reads the Block and sends an Ack (if synchronous transfer is used)
|
|
10
|
+
* - Last message is confirmed with an AckEof
|
|
11
|
+
*/
|
|
12
|
+
export declare class FollowingSendingFlow extends InboundFlow {
|
|
13
|
+
protected transferNextChunk(): Promise<boolean>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=FollowingSendingFlow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FollowingSendingFlow.d.ts","sourceRoot":"","sources":["../../../../src/bdx/flow/FollowingSendingFlow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;cACjC,iBAAiB;CAuBpC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { InboundFlow } from "./InboundFlow.js";
|
|
7
|
+
class FollowingSendingFlow extends InboundFlow {
|
|
8
|
+
async transferNextChunk() {
|
|
9
|
+
const { asynchronousTransfer } = this.transferParameters;
|
|
10
|
+
const { writeController } = this.stream;
|
|
11
|
+
const {
|
|
12
|
+
kind: messageType,
|
|
13
|
+
message: { data, blockCounter }
|
|
14
|
+
} = await this.messenger.readBlock();
|
|
15
|
+
this.validateCounter(blockCounter);
|
|
16
|
+
if (this.writeDataChunk(writeController, data, messageType)) {
|
|
17
|
+
this.finalBlockCounter = blockCounter;
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
if (!asynchronousTransfer) {
|
|
21
|
+
await this.messenger.sendBlockAck({ blockCounter });
|
|
22
|
+
}
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export {
|
|
27
|
+
FollowingSendingFlow
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=FollowingSendingFlow.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/bdx/flow/FollowingSendingFlow.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,mBAAmB;AAOrB,MAAM,6BAA6B,YAAY;AAAA,EAClD,MAAgB,oBAAoB;AAChC,UAAM,EAAE,qBAAqB,IAAI,KAAK;AACtC,UAAM,EAAE,gBAAgB,IAAI,KAAK;AAEjC,UAAM;AAAA,MACF,MAAM;AAAA,MACN,SAAS,EAAE,MAAM,aAAa;AAAA,IAClC,IAAI,MAAM,KAAK,UAAU,UAAU;AACnC,SAAK,gBAAgB,YAAY;AAGjC,QAAI,KAAK,eAAe,iBAAiB,MAAM,WAAW,GAAG;AACzD,WAAK,oBAAoB;AACzB,aAAO;AAAA,IACX;AAEA,QAAI,CAAC,sBAAsB;AAEvB,YAAM,KAAK,UAAU,aAAa,EAAE,aAAa,CAAC;AAAA,IACtD;AAEA,WAAO;AAAA,EACX;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Bytes } from "#general";
|
|
7
|
+
import { BdxMessageType } from "#types";
|
|
8
|
+
import { Flow } from "./Flow.js";
|
|
9
|
+
/**
|
|
10
|
+
* Base class for inbound BDX transfer flows where data is received from the peer and written to our node.
|
|
11
|
+
*/
|
|
12
|
+
export declare abstract class InboundFlow extends Flow {
|
|
13
|
+
#private;
|
|
14
|
+
/**
|
|
15
|
+
* Returns initialized streams for the transfer and initializes the #closeStream class function
|
|
16
|
+
*/
|
|
17
|
+
protected initTransfer(): Promise<void>;
|
|
18
|
+
protected get stream(): {
|
|
19
|
+
writeController: ReadableStreamDefaultController<AllowSharedBufferSource>;
|
|
20
|
+
writePromise: PromiseLike<void>;
|
|
21
|
+
};
|
|
22
|
+
protected finalizeTransfer(): Promise<void>;
|
|
23
|
+
protected writeDataChunk(writeController: ReadableStreamDefaultController<Bytes>, data: Bytes, messageType: BdxMessageType): boolean;
|
|
24
|
+
close(error?: unknown): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=InboundFlow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InboundFlow.d.ts","sourceRoot":"","sources":["../../../../src/bdx/flow/InboundFlow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAA+B,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAiB,MAAM,QAAQ,CAAC;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;GAEG;AACH,8BAAsB,WAAY,SAAQ,IAAI;;IAK1C;;OAEG;cACa,YAAY;IAkC5B,SAAS,KAAK,MAAM;;;MAKnB;cAEe,gBAAgB;IAOhC,SAAS,CAAC,cAAc,CACpB,eAAe,EAAE,+BAA+B,CAAC,KAAK,CAAC,EACvD,IAAI,EAAE,KAAK,EACX,WAAW,EAAE,cAAc;IA0BhB,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO;CAIvC"}
|