@zlink-systems/framework 0.29.1 → 0.30.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/LICENSE +150 -68
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Actors/ZLinkActorClient.d.ts +2 -1
- package/dist/contracts/Channels/Calls.d.ts +2 -1
- package/dist/contracts/Common/ZLinkMessageMetadata.js +11 -5
- package/dist/contracts/Configuration/Builders.d.ts +1 -2
- package/dist/contracts/Configuration/Configs.d.ts +0 -5
- package/dist/contracts/Configuration/RegistrationBuilders.js +6 -4
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -6
- package/dist/contracts/Configuration/RegistrationValidators.js +4 -4
- package/dist/contracts/Configuration/index.d.ts +1 -1
- package/dist/contracts/Handlers/Attributes.d.ts +5 -13
- package/dist/contracts/Handlers/Attributes.js +7 -11
- package/dist/contracts/Handlers/JsonContract.d.ts +2 -46
- package/dist/contracts/Handlers/JsonContract.js +4 -153
- package/dist/contracts/Spots/Contracts.d.ts +2 -1
- package/dist/internal.d.ts +1 -0
- package/dist/internal.js +3 -1
- package/dist/nest-integration.d.ts +1 -1
- package/dist/nest-integration.js +2 -1
- package/dist/runtime/actors/actor-client.d.ts +1 -1
- package/dist/runtime/actors/actor-client.js +14 -12
- package/dist/runtime/actors/actor-handoff.d.ts +3 -2
- package/dist/runtime/actors/actor-handoff.js +15 -7
- package/dist/runtime/actors/actor-join-relocation.d.ts +1 -0
- package/dist/runtime/actors/actor-local-native-join.js +9 -12
- package/dist/runtime/actors/actor-remote-wire.js +15 -0
- package/dist/runtime/actors/actor-routed-join-transport.d.ts +6 -2
- package/dist/runtime/actors/actor-routed-json-request.d.ts +2 -0
- package/dist/runtime/actors/index.d.ts +2 -1
- package/dist/runtime/actors/index.js +18 -6
- package/dist/runtime/actors/spot-actor-dispatch.js +2 -2
- package/dist/runtime/admission.d.ts +1 -1
- package/dist/runtime/admission.js +15 -5
- package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +9 -9
- package/dist/runtime/application-jobs/application-ingress-record-owner.js +45 -23
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +5 -2
- package/dist/runtime/application-jobs/application-job-queue-scope.js +41 -21
- package/dist/runtime/application-jobs/contracts.d.ts +15 -2
- package/dist/runtime/backend/contracts/index.d.ts +27 -27
- package/dist/runtime/backend/mesh-completion-table.d.ts +15 -5
- package/dist/runtime/backend/mesh-completion-table.js +160 -50
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +3 -0
- package/dist/runtime/backend/mesh-dispatch-pump.js +53 -36
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +6 -1
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -3
- package/dist/runtime/backend/node/node-backend-adapter-support.js +33 -31
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +5 -2
- package/dist/runtime/backend/node/node-mesh-backend-adapter.d.ts +1 -9
- package/dist/runtime/backend/node/node-mesh-backend-adapter.js +1 -1
- package/dist/runtime/backend/node/node-raw-binding-port.js +50 -25
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +22 -16
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +133 -149
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +15 -10
- package/dist/runtime/backend/raw-binding-port.d.ts +10 -3
- package/dist/runtime/backend/runtime-message.d.ts +1 -0
- package/dist/runtime/backend/runtime-message.js +5 -0
- package/dist/runtime/backend/runtime-values.d.ts +1 -0
- package/dist/runtime/backend/runtime-values.js +2 -1
- package/dist/runtime/channels/channel-clients.d.ts +1 -0
- package/dist/runtime/channels/channel-clients.js +58 -21
- package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +3 -2
- package/dist/runtime/channels/channel-dispatch-pipeline.js +20 -11
- package/dist/runtime/channels/channel-dispatch-services.d.ts +1 -0
- package/dist/runtime/channels/channel-dispatch-services.js +45 -0
- package/dist/runtime/channels/channel-dispatchers.d.ts +1 -1
- package/dist/runtime/channels/channel-dispatchers.js +27 -26
- package/dist/runtime/channels/channel-envelope-inspection.d.ts +1 -2
- package/dist/runtime/channels/channel-envelope-inspection.js +1 -16
- package/dist/runtime/channels/channel-envelope.d.ts +1 -0
- package/dist/runtime/channels/channel-envelope.js +83 -8
- package/dist/runtime/channels/channel-outbound-operations.d.ts +2 -2
- package/dist/runtime/channels/channel-outbound-operations.js +8 -8
- package/dist/runtime/channels/channel-receive-loops.js +3 -3
- package/dist/runtime/channels/channel-runtime-lifecycle.js +2 -1
- package/dist/runtime/channels/channel-runtime-manager.d.ts +6 -6
- package/dist/runtime/channels/channel-runtime-manager.js +12 -12
- package/dist/runtime/channels/channel-socket-registry.d.ts +10 -3
- package/dist/runtime/channels/channel-socket-registry.js +59 -82
- package/dist/runtime/channels/channel-transports.d.ts +18 -15
- package/dist/runtime/channels/channel-transports.js +48 -31
- package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/local-spot-route-transport.js +2 -1
- package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +2 -2
- package/dist/runtime/channels/router-socket-spot-route-transport.js +4 -4
- package/dist/runtime/channels/source-spot-router.d.ts +2 -2
- package/dist/runtime/channels/source-spot-router.js +4 -4
- package/dist/runtime/channels/spot-node-route-transport.d.ts +2 -2
- package/dist/runtime/channels/spot-node-route-transport.js +4 -4
- package/dist/runtime/channels/spot-route-bridge-transport.d.ts +2 -2
- package/dist/runtime/channels/spot-route-bridge-transport.js +4 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +5 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +18 -18
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -0
- package/dist/runtime/diagnostics/message-flow.js +3 -3
- package/dist/runtime/execution/serial-execution-queue.d.ts +1 -0
- package/dist/runtime/execution/serial-execution-queue.js +1 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +2 -2
- package/dist/runtime/foundation/durable-service-request.d.ts +14 -0
- package/dist/runtime/foundation/durable-service-request.js +98 -0
- package/dist/runtime/foundation/operation-identity.d.ts +1 -0
- package/dist/runtime/foundation/operation-identity.js +5 -1
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +37 -6
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +473 -220
- package/dist/runtime/foundation/service-liveness-registry.d.ts +20 -8
- package/dist/runtime/foundation/service-liveness-registry.js +57 -44
- package/dist/runtime/foundation/service-mailbox.d.ts +3 -0
- package/dist/runtime/foundation/service-mailbox.js +2 -1
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +1 -0
- package/dist/runtime/foundation/service-relocation-object-owner.js +1 -0
- package/dist/runtime/foundation/service-relocation-runtime.d.ts +2 -0
- package/dist/runtime/foundation/service-relocation-runtime.js +13 -1
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +10 -9
- package/dist/runtime/foundation/service-stateful-runtime.js +78 -126
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +5 -7
- package/dist/runtime/foundation/service-stateful-wire-codec.js +43 -61
- package/dist/runtime/foundation/service-topology-registry.d.ts +16 -4
- package/dist/runtime/foundation/service-topology-registry.js +69 -30
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +3 -3
- package/dist/runtime/foundation/service-wire-m6a-codec.js +36 -38
- package/dist/runtime/handlers/handler-instance-scope.d.ts +8 -0
- package/dist/runtime/handlers/handler-instance-scope.js +54 -11
- package/dist/runtime/host/actor-packet-relay.js +7 -7
- package/dist/runtime/host/actor-runtime-options-factory.js +2 -2
- package/dist/runtime/host/application-job-queue.d.ts +28 -9
- package/dist/runtime/host/application-job-queue.js +214 -50
- package/dist/runtime/host/entry-actor-runtime.d.ts +1 -0
- package/dist/runtime/host/entry-actor-runtime.js +4 -1
- package/dist/runtime/host/index.d.ts +7 -1
- package/dist/runtime/host/index.js +154 -126
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -1
- package/dist/runtime/host/instance-activation-authority.js +89 -25
- package/dist/runtime/host/remote-bound-session-relay.js +2 -18
- package/dist/runtime/host/route-mesh-runtime.js +1 -1
- package/dist/runtime/host/service-relocation-control.d.ts +1 -0
- package/dist/runtime/host/service-relocation-control.js +10 -4
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +6 -8
- package/dist/runtime/host/service-relocation-host-runtime.js +215 -243
- package/dist/runtime/host/spot-address-transport.d.ts +1 -0
- package/dist/runtime/host/spot-address-transport.js +28 -14
- package/dist/runtime/host/spot-runtime-options-factory.js +3 -2
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +1 -0
- package/dist/runtime/host/user-spot-creation-coordinator.js +1 -0
- package/dist/runtime/locations/actor-location-claims.d.ts +2 -2
- package/dist/runtime/locations/actor-location-claims.js +34 -19
- package/dist/runtime/locations/domain-store-contract.d.ts +2 -2
- package/dist/runtime/locations/in-memory-authority-store.d.ts +4 -2
- package/dist/runtime/locations/in-memory-authority-store.js +80 -8
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +19 -3
- package/dist/runtime/locations/internal-location-contracts.d.ts +3 -0
- package/dist/runtime/locations/lifecycle.d.ts +1 -2
- package/dist/runtime/locations/lifecycle.js +2 -5
- package/dist/runtime/locations/location-store-repository.d.ts +3 -2
- package/dist/runtime/locations/location-store-repository.js +165 -22
- package/dist/runtime/locations/resolvers.d.ts +2 -1
- package/dist/runtime/locations/resolvers.js +10 -1
- package/dist/runtime/locations/runtime.d.ts +1 -1
- package/dist/runtime/locations/runtime.js +24 -23
- package/dist/runtime/messaging/framework-json-v1.d.ts +4 -6
- package/dist/runtime/messaging/framework-json-v1.js +38 -294
- package/dist/runtime/messaging/packet-name.d.ts +1 -1
- package/dist/runtime/messaging/packet-name.js +8 -24
- package/dist/runtime/messaging/request-result.d.ts +2 -0
- package/dist/runtime/messaging/request-result.js +54 -0
- package/dist/runtime/messaging/submission-result.d.ts +2 -1
- package/dist/runtime/messaging/submission-result.js +7 -4
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +15 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +144 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +9 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +14 -1
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +9 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +33 -19
- package/dist/runtime/spots/index.d.ts +7 -3
- package/dist/runtime/spots/index.js +23 -16
- package/dist/runtime/spots/spot-activation.d.ts +3 -1
- package/dist/runtime/spots/spot-activation.js +21 -12
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +2 -1
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +11 -10
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +4 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +7 -5
- package/dist/runtime/spots/spot-actor-packet-drain.js +2 -0
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -0
- package/dist/runtime/spots/spot-entry-activation.js +9 -3
- package/dist/runtime/spots/spot-handler-registry.d.ts +3 -1
- package/dist/runtime/spots/spot-handler-registry.js +18 -8
- package/dist/runtime/spots/spot-node-autoconnect.js +4 -3
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +2 -1
- package/dist/runtime/spots/spot-node-runtime-manager.js +4 -11
- package/dist/runtime/spots/spot-outbound.d.ts +3 -0
- package/dist/runtime/spots/spot-outbound.js +24 -15
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +1 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +1 -1
- package/dist/runtime/spots/spot-routing-internal.d.ts +6 -0
- package/dist/runtime/spots/spot-runtime-ports.d.ts +3 -1
- package/dist/runtime/spots/spot-subscription-dispatch.js +0 -3
- package/dist/runtime/spots/spot-timer.js +1 -0
- package/dist/runtime/streams/stream-session-runtime.d.ts +1 -1
- package/dist/runtime/streams/stream-session-runtime.js +14 -28
- package/package.json +3 -3
- package/src/contracts/Actors/ZLinkActorClient.ts +2 -1
- package/src/contracts/Channels/Calls.ts +2 -1
- package/src/contracts/Common/ZLinkMessageMetadata.ts +13 -8
- package/src/contracts/Configuration/Builders.ts +1 -2
- package/src/contracts/Configuration/Configs.ts +0 -6
- package/src/contracts/Configuration/RegistrationBuilders.ts +8 -12
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -6
- package/src/contracts/Configuration/RegistrationValidators.ts +9 -10
- package/src/contracts/Configuration/index.ts +1 -6
- package/src/contracts/Handlers/Attributes.ts +14 -21
- package/src/contracts/Handlers/JsonContract.ts +8 -216
- package/src/contracts/Spots/Contracts.ts +2 -1
- package/src/internal.ts +1 -0
- package/src/nest-integration.ts +1 -0
- package/src/runtime/actors/actor-client.ts +40 -16
- package/src/runtime/actors/actor-handoff.ts +22 -8
- package/src/runtime/actors/actor-join-relocation.ts +1 -0
- package/src/runtime/actors/actor-local-native-join.ts +17 -26
- package/src/runtime/actors/actor-remote-wire.ts +17 -0
- package/src/runtime/actors/actor-routed-join-transport.ts +14 -4
- package/src/runtime/actors/actor-routed-json-request.ts +10 -2
- package/src/runtime/actors/index.ts +19 -5
- package/src/runtime/actors/spot-actor-dispatch.ts +4 -2
- package/src/runtime/admission.ts +18 -5
- package/src/runtime/application-jobs/application-ingress-record-owner.ts +53 -27
- package/src/runtime/application-jobs/application-job-queue-scope.ts +56 -22
- package/src/runtime/application-jobs/contracts.ts +28 -2
- package/src/runtime/backend/contracts/index.ts +63 -32
- package/src/runtime/backend/mesh-completion-table.ts +175 -59
- package/src/runtime/backend/mesh-dispatch-pump.ts +59 -32
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +12 -5
- package/src/runtime/backend/node/node-backend-adapter-support.ts +42 -31
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +12 -2
- package/src/runtime/backend/node/node-mesh-backend-adapter.ts +3 -10
- package/src/runtime/backend/node/node-raw-binding-port.ts +73 -37
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +209 -176
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +32 -13
- package/src/runtime/backend/raw-binding-port.ts +18 -3
- package/src/runtime/backend/runtime-message.ts +6 -0
- package/src/runtime/backend/runtime-values.ts +1 -0
- package/src/runtime/channels/channel-clients.ts +90 -41
- package/src/runtime/channels/channel-dispatch-pipeline.ts +69 -34
- package/src/runtime/channels/channel-dispatch-services.ts +69 -1
- package/src/runtime/channels/channel-dispatchers.ts +29 -27
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -16
- package/src/runtime/channels/channel-envelope.ts +133 -8
- package/src/runtime/channels/channel-outbound-operations.ts +22 -8
- package/src/runtime/channels/channel-receive-loops.ts +3 -3
- package/src/runtime/channels/channel-runtime-lifecycle.ts +7 -1
- package/src/runtime/channels/channel-runtime-manager.ts +29 -12
- package/src/runtime/channels/channel-socket-registry.ts +84 -130
- package/src/runtime/channels/channel-transports.ts +128 -60
- package/src/runtime/channels/local-spot-route-transport.ts +3 -1
- package/src/runtime/channels/router-socket-spot-route-transport.ts +13 -4
- package/src/runtime/channels/source-spot-router.ts +8 -4
- package/src/runtime/channels/spot-node-route-transport.ts +8 -4
- package/src/runtime/channels/spot-route-bridge-transport.ts +6 -4
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +47 -18
- package/src/runtime/diagnostics/message-flow.ts +1 -1
- package/src/runtime/execution/serial-execution-queue.ts +2 -0
- package/src/runtime/foundation/actor-join-recovery-codec.ts +2 -2
- package/src/runtime/foundation/durable-service-request.ts +137 -0
- package/src/runtime/foundation/operation-identity.ts +5 -1
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +642 -253
- package/src/runtime/foundation/service-liveness-registry.ts +68 -59
- package/src/runtime/foundation/service-mailbox.ts +7 -1
- package/src/runtime/foundation/service-relocation-object-owner.ts +2 -0
- package/src/runtime/foundation/service-relocation-runtime.ts +18 -1
- package/src/runtime/foundation/service-runtime-contracts.ts +7 -1
- package/src/runtime/foundation/service-stateful-runtime.ts +128 -160
- package/src/runtime/foundation/service-stateful-wire-codec.ts +55 -84
- package/src/runtime/foundation/service-topology-registry.ts +103 -42
- package/src/runtime/foundation/service-wire-m6a-codec.ts +57 -38
- package/src/runtime/handlers/handler-instance-scope.ts +67 -16
- package/src/runtime/host/actor-packet-relay.ts +7 -0
- package/src/runtime/host/actor-runtime-options-factory.ts +14 -2
- package/src/runtime/host/application-job-queue.ts +249 -48
- package/src/runtime/host/entry-actor-runtime.ts +5 -0
- package/src/runtime/host/index.ts +224 -160
- package/src/runtime/host/instance-activation-authority.ts +132 -27
- package/src/runtime/host/remote-bound-session-relay.ts +2 -23
- package/src/runtime/host/route-mesh-runtime.ts +1 -1
- package/src/runtime/host/service-relocation-control.ts +11 -5
- package/src/runtime/host/service-relocation-host-runtime.ts +317 -291
- package/src/runtime/host/spot-address-transport.ts +49 -24
- package/src/runtime/host/spot-runtime-options-factory.ts +4 -0
- package/src/runtime/host/user-spot-creation-coordinator.ts +8 -0
- package/src/runtime/locations/actor-location-claims.ts +52 -30
- package/src/runtime/locations/domain-store-contract.ts +6 -2
- package/src/runtime/locations/in-memory-authority-store.ts +113 -9
- package/src/runtime/locations/in-memory-location-store.ts +25 -3
- package/src/runtime/locations/internal-location-contracts.ts +4 -0
- package/src/runtime/locations/lifecycle.ts +8 -26
- package/src/runtime/locations/location-store-repository.ts +220 -15
- package/src/runtime/locations/resolvers.ts +25 -2
- package/src/runtime/locations/runtime.ts +28 -24
- package/src/runtime/messaging/framework-json-v1.ts +5 -325
- package/src/runtime/messaging/packet-name.ts +5 -25
- package/src/runtime/messaging/request-result.ts +58 -0
- package/src/runtime/messaging/submission-result.ts +7 -3
- package/src/runtime/protocol/service_wire_codec.generated.ts +131 -1
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +45 -23
- package/src/runtime/spots/index.ts +30 -2
- package/src/runtime/spots/spot-activation.ts +33 -10
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +13 -0
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +10 -0
- package/src/runtime/spots/spot-actor-packet-drain.ts +2 -0
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +1 -0
- package/src/runtime/spots/spot-entry-activation.ts +12 -2
- package/src/runtime/spots/spot-handler-registry.ts +41 -8
- package/src/runtime/spots/spot-node-autoconnect.ts +6 -2
- package/src/runtime/spots/spot-node-runtime-manager.ts +7 -12
- package/src/runtime/spots/spot-outbound.ts +36 -16
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +2 -1
- package/src/runtime/spots/spot-routing-internal.ts +14 -0
- package/src/runtime/spots/spot-runtime-ports.ts +3 -0
- package/src/runtime/spots/spot-subscription-dispatch.ts +0 -3
- package/src/runtime/spots/spot-timer.ts +5 -1
- package/src/runtime/streams/stream-session-runtime.ts +13 -30
|
@@ -5,5 +5,5 @@ export declare class ZLinkLocalSpotRouteTransport {
|
|
|
5
5
|
private readonly defaultRequestTimeoutMs;
|
|
6
6
|
constructor(dispatcher: ZLinkLocalSpotRouteDispatcher | undefined, defaultRequestTimeoutMs: number | undefined);
|
|
7
7
|
send(routerChannelId: string, spotId: RoutingId, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<void>;
|
|
8
|
-
request<TReply>(routerChannelId: string, spotId: RoutingId, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal): Promise<TReply>;
|
|
8
|
+
request<TReply>(routerChannelId: string, spotId: RoutingId, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<TReply>;
|
|
9
9
|
}
|
|
@@ -18,12 +18,13 @@ class ZLinkLocalSpotRouteTransport {
|
|
|
18
18
|
metadata
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
|
-
request(routerChannelId, spotId, packetName, request, timeoutMs, signal) {
|
|
21
|
+
request(routerChannelId, spotId, packetName, request, timeoutMs, signal, onAdmitted) {
|
|
22
22
|
if (this.dispatcher === undefined) {
|
|
23
23
|
throw new configuration_1.ZLinkConfigurationException(`Route channel '${routerChannelId}' could not dispatch local SPOT request.`);
|
|
24
24
|
}
|
|
25
25
|
const pending = this.dispatcher.request(spotId, packetName, request, {
|
|
26
26
|
channelName: routerChannelId,
|
|
27
|
+
onAdmitted,
|
|
27
28
|
signal
|
|
28
29
|
});
|
|
29
30
|
const effectiveTimeoutMs = timeoutMs ?? this.defaultRequestTimeoutMs;
|
|
@@ -7,6 +7,6 @@ export declare class ZLinkRouterSocketSpotRouteTransport {
|
|
|
7
7
|
private readonly sockets;
|
|
8
8
|
constructor(sockets: ZLinkChannelSocketRegistry);
|
|
9
9
|
send(target: ZLinkSpotRouteTarget, parts: readonly Message[], flags: ZLinkBackendSendFlags): Promise<void>;
|
|
10
|
-
request<TReply>(target: ZLinkSpotRouteTarget, parts: readonly Message[], codecs: ZLinkChannelEnvelopeCodecRegistry | undefined, flags: ZLinkBackendSendFlags, timeoutMs: number | undefined, signal?: AbortSignal): Promise<TReply>;
|
|
11
|
-
requestRaw(target: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal): Promise<readonly Message[]>;
|
|
10
|
+
request<TReply>(target: ZLinkSpotRouteTarget, parts: readonly Message[], codecs: ZLinkChannelEnvelopeCodecRegistry | undefined, flags: ZLinkBackendSendFlags, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<TReply>;
|
|
11
|
+
requestRaw(target: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<readonly Message[]>;
|
|
12
12
|
}
|
|
@@ -17,10 +17,10 @@ class ZLinkRouterSocketSpotRouteTransport {
|
|
|
17
17
|
(0, channel_envelope_1.closeMessages)(parts);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
async request(target, parts, codecs, flags, timeoutMs, signal) {
|
|
20
|
+
async request(target, parts, codecs, flags, timeoutMs, signal, onAdmitted) {
|
|
21
21
|
const router = this.sockets.routeRouter(target.routerChannelId);
|
|
22
22
|
void flags;
|
|
23
|
-
const operation = router.requestToSpot(target.targetNodeRid, target.spotId, parts, timeoutMs);
|
|
23
|
+
const operation = router.requestToSpot(target.targetNodeRid, target.spotId, parts, timeoutMs, onAdmitted);
|
|
24
24
|
const replyParts = await (0, abort_1.awaitWithAbort)(operation, signal, () => {
|
|
25
25
|
void operation.then(channel_envelope_1.closeMessages, () => undefined);
|
|
26
26
|
});
|
|
@@ -32,9 +32,9 @@ class ZLinkRouterSocketSpotRouteTransport {
|
|
|
32
32
|
(0, channel_envelope_1.closeMessages)(parts);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
async requestRaw(target, request, timeoutMs, signal) {
|
|
35
|
+
async requestRaw(target, request, timeoutMs, signal, onAdmitted) {
|
|
36
36
|
const router = this.sockets.routeRouter(target.routerChannelId);
|
|
37
|
-
const operation = router.requestToSpot(target.targetNodeRid, target.spotId, [request], timeoutMs);
|
|
37
|
+
const operation = router.requestToSpot(target.targetNodeRid, target.spotId, [request], timeoutMs, onAdmitted);
|
|
38
38
|
return await (0, abort_1.awaitWithAbort)(operation, signal, () => {
|
|
39
39
|
void operation.then(channel_envelope_1.closeMessages, () => undefined);
|
|
40
40
|
});
|
|
@@ -4,7 +4,7 @@ import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
|
|
|
4
4
|
export declare class ZLinkSourceSpotRouter {
|
|
5
5
|
private readonly defaultRequestTimeoutMs;
|
|
6
6
|
constructor(defaultRequestTimeoutMs: number | undefined);
|
|
7
|
-
request<TReply>(sourceSpot: ZLinkBackendSpot, target: ZLinkSpotRouteTarget, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal): Promise<TReply>;
|
|
7
|
+
request<TReply>(sourceSpot: ZLinkBackendSpot, target: ZLinkSpotRouteTarget, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<TReply>;
|
|
8
8
|
send(sourceSpot: ZLinkBackendSpot, target: ZLinkSpotRouteTarget, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<void>;
|
|
9
|
-
requestRaw(sourceSpot: ZLinkBackendSpot, target: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal): Promise<readonly Message[]>;
|
|
9
|
+
requestRaw(sourceSpot: ZLinkBackendSpot, target: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<readonly Message[]>;
|
|
10
10
|
}
|
|
@@ -9,12 +9,12 @@ class ZLinkSourceSpotRouter {
|
|
|
9
9
|
constructor(defaultRequestTimeoutMs) {
|
|
10
10
|
this.defaultRequestTimeoutMs = defaultRequestTimeoutMs;
|
|
11
11
|
}
|
|
12
|
-
async request(sourceSpot, target, packetName, request, timeoutMs, signal) {
|
|
12
|
+
async request(sourceSpot, target, packetName, request, timeoutMs, signal, onAdmitted) {
|
|
13
13
|
(0, abort_1.throwIfAborted)(signal);
|
|
14
14
|
const parts = [
|
|
15
15
|
(0, spot_direct_envelope_1.encodeSpotDirectEnvelope)(1 /* ZLinkChannelMessageKind.Request */, target.routerChannelId, packetName, request)
|
|
16
16
|
];
|
|
17
|
-
const operation = sourceSpot.requestToSpot(target.targetNodeRid, target.spotId, parts, timeoutMs ?? this.defaultRequestTimeoutMs);
|
|
17
|
+
const operation = sourceSpot.requestToSpot(target.targetNodeRid, target.spotId, parts, timeoutMs ?? this.defaultRequestTimeoutMs, onAdmitted);
|
|
18
18
|
const replyParts = await (0, abort_1.awaitWithAbort)(operation, signal, () => {
|
|
19
19
|
void operation.then(channel_envelope_1.closeMessages, () => undefined);
|
|
20
20
|
});
|
|
@@ -37,9 +37,9 @@ class ZLinkSourceSpotRouter {
|
|
|
37
37
|
(0, channel_envelope_1.closeMessages)(parts);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
async requestRaw(sourceSpot, target, request, timeoutMs, signal) {
|
|
40
|
+
async requestRaw(sourceSpot, target, request, timeoutMs, signal, onAdmitted) {
|
|
41
41
|
(0, abort_1.throwIfAborted)(signal);
|
|
42
|
-
const operation = sourceSpot.requestToSpot(target.targetNodeRid, target.spotId, request, timeoutMs ?? this.defaultRequestTimeoutMs);
|
|
42
|
+
const operation = sourceSpot.requestToSpot(target.targetNodeRid, target.spotId, request, timeoutMs ?? this.defaultRequestTimeoutMs, onAdmitted);
|
|
43
43
|
return await (0, abort_1.awaitWithAbort)(operation, signal, () => {
|
|
44
44
|
void operation.then(channel_envelope_1.closeMessages, () => undefined);
|
|
45
45
|
});
|
|
@@ -8,6 +8,6 @@ export declare class ZLinkSpotNodeRouteTransport {
|
|
|
8
8
|
private readonly targets;
|
|
9
9
|
constructor(registration: ZLinkFrameworkRegistration, targets: ZLinkSpotRouteTargetResolver);
|
|
10
10
|
send(target: ZLinkSpotRouteTarget, parts: readonly Message[]): Promise<boolean>;
|
|
11
|
-
request<TReply>(target: ZLinkSpotRouteTarget, parts: readonly Message[], codecs: ZLinkChannelEnvelopeCodecRegistry | undefined, timeoutMs: number | undefined, signal?: AbortSignal): Promise<TReply> | undefined;
|
|
12
|
-
requestRaw(target: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal): Promise<readonly Message[]> | undefined;
|
|
11
|
+
request<TReply>(target: ZLinkSpotRouteTarget, parts: readonly Message[], codecs: ZLinkChannelEnvelopeCodecRegistry | undefined, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<TReply> | undefined;
|
|
12
|
+
requestRaw(target: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<readonly Message[]> | undefined;
|
|
13
13
|
}
|
|
@@ -24,14 +24,14 @@ class ZLinkSpotNodeRouteTransport {
|
|
|
24
24
|
(0, channel_envelope_1.closeMessages)(parts);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
request(target, parts, codecs, timeoutMs, signal) {
|
|
27
|
+
request(target, parts, codecs, timeoutMs, signal, onAdmitted) {
|
|
28
28
|
const router = this.targets.spotNodeRouter(target.routerChannelId);
|
|
29
29
|
if (router === undefined) {
|
|
30
30
|
return undefined;
|
|
31
31
|
}
|
|
32
32
|
const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS;
|
|
33
33
|
(0, abort_1.throwIfAborted)(signal);
|
|
34
|
-
const operation = router.requestToSpot(target.targetNodeRid, target.spotId, parts, effectiveTimeoutMs);
|
|
34
|
+
const operation = router.requestToSpot(target.targetNodeRid, target.spotId, parts, effectiveTimeoutMs, onAdmitted);
|
|
35
35
|
return (0, abort_1.awaitWithAbort)(operation, signal, () => {
|
|
36
36
|
void operation.then(channel_envelope_1.closeMessages, () => undefined);
|
|
37
37
|
}).then((replyParts) => {
|
|
@@ -44,14 +44,14 @@ class ZLinkSpotNodeRouteTransport {
|
|
|
44
44
|
}
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
|
-
requestRaw(target, request, timeoutMs, signal) {
|
|
47
|
+
requestRaw(target, request, timeoutMs, signal, onAdmitted) {
|
|
48
48
|
const router = this.targets.spotNodeRouter(target.routerChannelId);
|
|
49
49
|
if (router === undefined) {
|
|
50
50
|
return undefined;
|
|
51
51
|
}
|
|
52
52
|
const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS;
|
|
53
53
|
(0, abort_1.throwIfAborted)(signal);
|
|
54
|
-
const operation = router.requestToSpot(target.targetNodeRid, target.spotId, request, effectiveTimeoutMs);
|
|
54
|
+
const operation = router.requestToSpot(target.targetNodeRid, target.spotId, request, effectiveTimeoutMs, onAdmitted);
|
|
55
55
|
return (0, abort_1.awaitWithAbort)(operation, signal, () => {
|
|
56
56
|
void operation.then(channel_envelope_1.closeMessages, () => undefined);
|
|
57
57
|
});
|
|
@@ -8,7 +8,7 @@ export declare class ZLinkSpotRouteBridgeTransport {
|
|
|
8
8
|
constructor(bridges: ReadonlyMap<string, ZLinkBackendSpotRouteBridge>, defaultRequestTimeoutMs: number | undefined);
|
|
9
9
|
has(routerChannelId: string): boolean;
|
|
10
10
|
send(target: ZLinkSpotRouteTarget, parts: readonly Message[]): Promise<void>;
|
|
11
|
-
request<TReply>(target: ZLinkSpotRouteTarget, parts: readonly Message[], codecs: ZLinkChannelEnvelopeCodecRegistry | undefined, timeoutMs: number | undefined, signal?: AbortSignal): Promise<TReply>;
|
|
12
|
-
requestRaw(target: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal): Promise<readonly Message[]>;
|
|
11
|
+
request<TReply>(target: ZLinkSpotRouteTarget, parts: readonly Message[], codecs: ZLinkChannelEnvelopeCodecRegistry | undefined, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<TReply>;
|
|
12
|
+
requestRaw(target: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<readonly Message[]>;
|
|
13
13
|
private requireBridge;
|
|
14
14
|
}
|
|
@@ -24,11 +24,11 @@ class ZLinkSpotRouteBridgeTransport {
|
|
|
24
24
|
(0, channel_envelope_1.closeMessages)(parts);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
async request(target, parts, codecs, timeoutMs, signal) {
|
|
27
|
+
async request(target, parts, codecs, timeoutMs, signal, onAdmitted) {
|
|
28
28
|
const bridge = this.requireBridge(target.routerChannelId);
|
|
29
29
|
const operation = (0, channel_multipart_1.appendParts)(bridge.request(target.routerChannelId, target.targetNodeRid, target.spotId), parts)
|
|
30
30
|
.timeout(timeoutMs ?? 0)
|
|
31
|
-
.submit();
|
|
31
|
+
.submit(onAdmitted);
|
|
32
32
|
const replyParts = await (0, abort_1.awaitWithAbort)(operation, signal, () => {
|
|
33
33
|
void operation.then(channel_envelope_1.closeMessages, () => undefined);
|
|
34
34
|
});
|
|
@@ -40,13 +40,13 @@ class ZLinkSpotRouteBridgeTransport {
|
|
|
40
40
|
(0, channel_envelope_1.closeMessages)(parts);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
requestRaw(target, request, timeoutMs, signal) {
|
|
43
|
+
requestRaw(target, request, timeoutMs, signal, onAdmitted) {
|
|
44
44
|
const bridge = this.requireBridge(target.routerChannelId);
|
|
45
45
|
const operation = bridge
|
|
46
46
|
.request(target.routerChannelId, target.targetNodeRid, target.spotId)
|
|
47
47
|
.message(request)
|
|
48
48
|
.timeout(timeoutMs ?? this.defaultRequestTimeoutMs ?? 0)
|
|
49
|
-
.submit();
|
|
49
|
+
.submit(onAdmitted);
|
|
50
50
|
return (0, abort_1.awaitWithAbort)(operation, signal, () => {
|
|
51
51
|
void operation.then(channel_envelope_1.closeMessages, () => undefined);
|
|
52
52
|
});
|
|
@@ -13,6 +13,7 @@ export interface ZLinkLocalSpotRouteDispatcher {
|
|
|
13
13
|
request<TReply>(spotId: RoutingId, packetName: string | undefined, request: unknown, context: {
|
|
14
14
|
readonly channelName: string;
|
|
15
15
|
readonly signal?: AbortSignal;
|
|
16
|
+
readonly onAdmitted?: () => void;
|
|
16
17
|
readonly metadata?: ReadonlyMap<string, string>;
|
|
17
18
|
}): Promise<TReply>;
|
|
18
19
|
}
|
|
@@ -39,10 +40,10 @@ export declare class ZLinkSpotRouteDispatchStrategy {
|
|
|
39
40
|
canRoutePacketChannel(routerChannelId: string): boolean;
|
|
40
41
|
routeSendToSpot(spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<void>;
|
|
41
42
|
private routeSendToSpotScoped;
|
|
42
|
-
routeRequestToSpot<TReply>(spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, metadata?: ReadonlyMap<string, string
|
|
43
|
+
routeRequestToSpot<TReply>(spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>, onAdmitted?: () => void): Promise<TReply>;
|
|
43
44
|
private routeRequestToSpotScoped;
|
|
44
|
-
routeRequestFromSpotToSpot<TReply>(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal): Promise<TReply>;
|
|
45
|
+
routeRequestFromSpotToSpot<TReply>(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<TReply>;
|
|
45
46
|
routeSendFromSpotToSpot(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, packetName: string | undefined, message: unknown, metadata?: ReadonlyMap<string, string>): Promise<void>;
|
|
46
|
-
routeRequestRawFromSpotToSpot(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal): Promise<readonly Message[]>;
|
|
47
|
-
routeRequestRawToSpot(spotRouteTarget: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal): Promise<readonly Message[]>;
|
|
47
|
+
routeRequestRawFromSpotToSpot(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<readonly Message[]>;
|
|
48
|
+
routeRequestRawToSpot(spotRouteTarget: ZLinkSpotRouteTarget, request: Message, timeoutMs: number | undefined, signal?: AbortSignal, onAdmitted?: () => void): Promise<readonly Message[]>;
|
|
48
49
|
}
|
|
@@ -70,58 +70,58 @@ class ZLinkSpotRouteDispatchStrategy {
|
|
|
70
70
|
}
|
|
71
71
|
await this.routerSocketTransport.send(spotRouteTarget, parts, ZLINK_SEND_DONT_WAIT);
|
|
72
72
|
}
|
|
73
|
-
routeRequestToSpot(spotRouteTarget, packetName, request, timeoutMs, signal, metadata) {
|
|
74
|
-
return (0, flow_context_1.runWithOutboundFlow)(this.options.flowCreationEnabled?.() ?? true, () => this.routeRequestToSpotScoped(spotRouteTarget, packetName, request, timeoutMs, signal, metadata));
|
|
73
|
+
routeRequestToSpot(spotRouteTarget, packetName, request, timeoutMs, signal, metadata, onAdmitted) {
|
|
74
|
+
return (0, flow_context_1.runWithOutboundFlow)(this.options.flowCreationEnabled?.() ?? true, () => this.routeRequestToSpotScoped(spotRouteTarget, packetName, request, timeoutMs, signal, metadata, onAdmitted));
|
|
75
75
|
}
|
|
76
|
-
async routeRequestToSpotScoped(spotRouteTarget, packetName, request, timeoutMs, signal, metadata) {
|
|
76
|
+
async routeRequestToSpotScoped(spotRouteTarget, packetName, request, timeoutMs, signal, metadata, onAdmitted) {
|
|
77
77
|
(0, abort_1.throwIfAborted)(signal);
|
|
78
78
|
const localSpotRouteNode = this.targets.localRouteNode(spotRouteTarget);
|
|
79
79
|
if (localSpotRouteNode !== undefined) {
|
|
80
|
-
return this.localTransport.request(spotRouteTarget.routerChannelId, spotRouteTarget.spotId, packetName, request, timeoutMs, signal);
|
|
80
|
+
return this.localTransport.request(spotRouteTarget.routerChannelId, spotRouteTarget.spotId, packetName, request, timeoutMs, signal, onAdmitted);
|
|
81
81
|
}
|
|
82
82
|
const codecs = (0, channel_framework_packets_1.codecsForFrameworkPacket)(packetName, this.options.codecs);
|
|
83
83
|
const parts = (0, channel_envelope_1.encodeChannelEnvelopeParts)(1 /* ZLinkChannelMessageKind.Request */, spotRouteTarget.routerChannelId, packetName, request, timeoutMs, undefined, codecs, undefined, this.options.flowCreationEnabled?.() ?? true, metadata);
|
|
84
84
|
if (this.targets.hasNamedSpotNode(spotRouteTarget.routerChannelId)) {
|
|
85
|
-
const namedSpotNodeRequest = this.spotNodeTransport.request(spotRouteTarget, parts, codecs, timeoutMs, signal);
|
|
85
|
+
const namedSpotNodeRequest = this.spotNodeTransport.request(spotRouteTarget, parts, codecs, timeoutMs, signal, onAdmitted);
|
|
86
86
|
if (namedSpotNodeRequest !== undefined)
|
|
87
87
|
return namedSpotNodeRequest;
|
|
88
88
|
}
|
|
89
89
|
if (this.bridgeTransport.has(spotRouteTarget.routerChannelId)) {
|
|
90
|
-
return this.bridgeTransport.request(spotRouteTarget, parts, codecs, timeoutMs, signal);
|
|
90
|
+
return this.bridgeTransport.request(spotRouteTarget, parts, codecs, timeoutMs, signal, onAdmitted);
|
|
91
91
|
}
|
|
92
92
|
if (this.targets.hasBoundRouteRouter(spotRouteTarget.routerChannelId)) {
|
|
93
|
-
return this.routerSocketTransport.request(spotRouteTarget, parts, codecs, ZLINK_SEND_DONT_WAIT, timeoutMs, signal);
|
|
93
|
+
return this.routerSocketTransport.request(spotRouteTarget, parts, codecs, ZLINK_SEND_DONT_WAIT, timeoutMs, signal, onAdmitted);
|
|
94
94
|
}
|
|
95
|
-
const spotNodeRequest = this.spotNodeTransport.request(spotRouteTarget, parts, codecs, timeoutMs, signal);
|
|
95
|
+
const spotNodeRequest = this.spotNodeTransport.request(spotRouteTarget, parts, codecs, timeoutMs, signal, onAdmitted);
|
|
96
96
|
if (spotNodeRequest !== undefined) {
|
|
97
97
|
return spotNodeRequest;
|
|
98
98
|
}
|
|
99
|
-
return this.routerSocketTransport.request(spotRouteTarget, parts, codecs, 0, timeoutMs, signal);
|
|
99
|
+
return this.routerSocketTransport.request(spotRouteTarget, parts, codecs, 0, timeoutMs, signal, onAdmitted);
|
|
100
100
|
}
|
|
101
|
-
routeRequestFromSpotToSpot(sourceSpot, spotRouteTarget, packetName, request, timeoutMs, signal) {
|
|
102
|
-
return this.sourceSpotRouter.request(sourceSpot, spotRouteTarget, packetName, request, timeoutMs, signal);
|
|
101
|
+
routeRequestFromSpotToSpot(sourceSpot, spotRouteTarget, packetName, request, timeoutMs, signal, onAdmitted) {
|
|
102
|
+
return this.sourceSpotRouter.request(sourceSpot, spotRouteTarget, packetName, request, timeoutMs, signal, onAdmitted);
|
|
103
103
|
}
|
|
104
104
|
async routeSendFromSpotToSpot(sourceSpot, spotRouteTarget, packetName, message, metadata) {
|
|
105
105
|
await this.sourceSpotRouter.send(sourceSpot, spotRouteTarget, packetName, message, metadata);
|
|
106
106
|
}
|
|
107
|
-
routeRequestRawFromSpotToSpot(sourceSpot, spotRouteTarget, request, timeoutMs, signal) {
|
|
108
|
-
return this.sourceSpotRouter.requestRaw(sourceSpot, spotRouteTarget, request, timeoutMs, signal);
|
|
107
|
+
routeRequestRawFromSpotToSpot(sourceSpot, spotRouteTarget, request, timeoutMs, signal, onAdmitted) {
|
|
108
|
+
return this.sourceSpotRouter.requestRaw(sourceSpot, spotRouteTarget, request, timeoutMs, signal, onAdmitted);
|
|
109
109
|
}
|
|
110
|
-
async routeRequestRawToSpot(spotRouteTarget, request, timeoutMs, signal) {
|
|
110
|
+
async routeRequestRawToSpot(spotRouteTarget, request, timeoutMs, signal, onAdmitted) {
|
|
111
111
|
(0, abort_1.throwIfAborted)(signal);
|
|
112
112
|
if (this.targets.hasNamedSpotNode(spotRouteTarget.routerChannelId)) {
|
|
113
|
-
const namedSpotNodeRequest = this.spotNodeTransport.requestRaw(spotRouteTarget, request, timeoutMs, signal);
|
|
113
|
+
const namedSpotNodeRequest = this.spotNodeTransport.requestRaw(spotRouteTarget, request, timeoutMs, signal, onAdmitted);
|
|
114
114
|
if (namedSpotNodeRequest !== undefined)
|
|
115
115
|
return namedSpotNodeRequest;
|
|
116
116
|
}
|
|
117
117
|
if (this.bridgeTransport.has(spotRouteTarget.routerChannelId)) {
|
|
118
|
-
return this.bridgeTransport.requestRaw(spotRouteTarget, request, timeoutMs, signal);
|
|
118
|
+
return this.bridgeTransport.requestRaw(spotRouteTarget, request, timeoutMs, signal, onAdmitted);
|
|
119
119
|
}
|
|
120
|
-
const spotNodeRequest = this.spotNodeTransport.requestRaw(spotRouteTarget, request, timeoutMs, signal);
|
|
120
|
+
const spotNodeRequest = this.spotNodeTransport.requestRaw(spotRouteTarget, request, timeoutMs, signal, onAdmitted);
|
|
121
121
|
if (spotNodeRequest !== undefined) {
|
|
122
122
|
return spotNodeRequest;
|
|
123
123
|
}
|
|
124
|
-
return this.routerSocketTransport.requestRaw(spotRouteTarget, request, timeoutMs, signal);
|
|
124
|
+
return this.routerSocketTransport.requestRaw(spotRouteTarget, request, timeoutMs, signal, onAdmitted);
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
exports.ZLinkSpotRouteDispatchStrategy = ZLinkSpotRouteDispatchStrategy;
|
|
@@ -10,6 +10,7 @@ export interface ZLinkDiagnosticsContext {
|
|
|
10
10
|
readonly sourceMeshGeneration: bigint;
|
|
11
11
|
}
|
|
12
12
|
export declare const DEFAULT_ZLINK_DIAGNOSTICS: ZLinkDiagnosticsOptions;
|
|
13
|
+
export declare const telemetryLogger: import("@opentelemetry/api-logs").Logger;
|
|
13
14
|
export declare function effectiveMessageFlow(ctx: ZLinkDiagnosticsContext): ZLinkMessageFlowLogMode;
|
|
14
15
|
export declare function createMessageFlowModeCell(dispatch: {
|
|
15
16
|
diagnostics?: ZLinkDiagnosticsOptions;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ZLinkMessageFlowTracer = exports.DEFAULT_ZLINK_DIAGNOSTICS = void 0;
|
|
3
|
+
exports.ZLinkMessageFlowTracer = exports.telemetryLogger = exports.DEFAULT_ZLINK_DIAGNOSTICS = void 0;
|
|
4
4
|
exports.effectiveMessageFlow = effectiveMessageFlow;
|
|
5
5
|
exports.createMessageFlowModeCell = createMessageFlowModeCell;
|
|
6
6
|
exports.createDiagnosticsContext = createDiagnosticsContext;
|
|
@@ -18,7 +18,7 @@ exports.DEFAULT_ZLINK_DIAGNOSTICS = {
|
|
|
18
18
|
sampleRate: 1,
|
|
19
19
|
includeMessageSizes: false
|
|
20
20
|
};
|
|
21
|
-
|
|
21
|
+
exports.telemetryLogger = api_logs_1.logs.getLogger('@zlink-systems/framework');
|
|
22
22
|
const telemetryTracer = api_1.trace.getTracer('@zlink-systems/framework');
|
|
23
23
|
let diagnosticsGeneration = 0n;
|
|
24
24
|
function effectiveMessageFlow(ctx) {
|
|
@@ -165,7 +165,7 @@ class ZLinkMessageFlowTracer {
|
|
|
165
165
|
publishToLogger(record) {
|
|
166
166
|
try {
|
|
167
167
|
const severityNumber = record.eventId === DISPATCH_ERROR_EVENT_ID ? api_logs_1.SeverityNumber.ERROR : api_logs_1.SeverityNumber.INFO;
|
|
168
|
-
telemetryLogger.emit({
|
|
168
|
+
exports.telemetryLogger.emit({
|
|
169
169
|
eventName: record.eventId,
|
|
170
170
|
timestamp: record.timestamp,
|
|
171
171
|
severityNumber,
|
|
@@ -56,7 +56,7 @@ function encodeCanonicalActorJoinRecoverySavedWork(input) {
|
|
|
56
56
|
const request = Buffer.from(input.request);
|
|
57
57
|
const replyContentType = operationId === undefined
|
|
58
58
|
? null
|
|
59
|
-
:
|
|
59
|
+
: (nullableText(input.replyContentType ?? null, 'Actor Join reply content type') ?? null);
|
|
60
60
|
const metadata = encodeMetadataJson({
|
|
61
61
|
Request: {
|
|
62
62
|
ActorId: requireText(input.actorId, 'Actor id'),
|
|
@@ -167,7 +167,7 @@ function decodeCanonicalActorJoinRecoverySavedWork(encoded) {
|
|
|
167
167
|
const operationLow = integer(metadata.OperationIdLow, 'OperationIdLow');
|
|
168
168
|
const hasOperation = operationHigh !== 0n || operationLow !== 0n;
|
|
169
169
|
const replyContentType = nullableText(metadata.ReplyContentType, 'ReplyContentType');
|
|
170
|
-
if (hasOperation
|
|
170
|
+
if (!hasOperation && replyContentType !== undefined) {
|
|
171
171
|
throw new TypeError('Canonical Actor Join recovery reply identity is invalid.');
|
|
172
172
|
}
|
|
173
173
|
const targetNodeRid = base64(metadata.TargetNodeRid, 'TargetNodeRid');
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface PeerRouteObservation {
|
|
2
|
+
readonly generation?: bigint;
|
|
3
|
+
readonly ready: boolean;
|
|
4
|
+
}
|
|
5
|
+
export interface DurableServiceRequestPort {
|
|
6
|
+
readonly requestStopSignal?: AbortSignal;
|
|
7
|
+
observePeerRoute(target: string): PeerRouteObservation;
|
|
8
|
+
observePeerRouteChanged(listener: (target: string) => void): () => void;
|
|
9
|
+
observePeerConnectionIntentRemoved(listener: (target: string) => void): () => void;
|
|
10
|
+
requestService(target: string, parts: readonly Uint8Array[], timeoutMs: number, onAdmitted?: () => void): Promise<readonly Buffer[]>;
|
|
11
|
+
}
|
|
12
|
+
/** Actor model §8.1: a ready edge or a typed transport failure owns replay. */
|
|
13
|
+
export declare function requestDurableService(port: DurableServiceRequestPort, target: string, parts: readonly Uint8Array[], deadlineMs: number, operationKind: string, signal?: AbortSignal, onSubmitted?: (signal: AbortSignal) => Promise<void>): Promise<readonly Buffer[]>;
|
|
14
|
+
export declare function durableRequestCanReplay(error: unknown): boolean;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.requestDurableService = requestDurableService;
|
|
4
|
+
exports.durableRequestCanReplay = durableRequestCanReplay;
|
|
5
|
+
const abort_1 = require("../abort");
|
|
6
|
+
const runtime_values_1 = require("../backend/runtime-values");
|
|
7
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
8
|
+
/** Actor model §8.1: a ready edge or a typed transport failure owns replay. */
|
|
9
|
+
async function requestDurableService(port, target, parts, deadlineMs, operationKind, signal, onSubmitted) {
|
|
10
|
+
let wasAdmitted = false;
|
|
11
|
+
const stop = new AbortController();
|
|
12
|
+
const exhausted = (cause) => (0, framework_errors_internal_1.createInternalFrameworkException)(wasAdmitted
|
|
13
|
+
? framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.DeadlineExceeded
|
|
14
|
+
: framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, `${operationKind} exhausted its end-to-end deadline.`, true, cause);
|
|
15
|
+
const timer = setTimeout(() => stop.abort(exhausted()), Math.max(0, Math.ceil(deadlineMs - performance.now())));
|
|
16
|
+
const unobserveIntent = port.observePeerConnectionIntentRemoved((rid) => {
|
|
17
|
+
if (rid === target)
|
|
18
|
+
stop.abort((0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, `${operationKind} target node lifecycle ended.`, true));
|
|
19
|
+
});
|
|
20
|
+
const cancellation = AbortSignal.any([
|
|
21
|
+
stop.signal,
|
|
22
|
+
...(signal === undefined ? [] : [signal]),
|
|
23
|
+
...(port.requestStopSignal === undefined ? [] : [port.requestStopSignal])
|
|
24
|
+
]);
|
|
25
|
+
try {
|
|
26
|
+
for (;;) {
|
|
27
|
+
cancellation.throwIfAborted();
|
|
28
|
+
const remainingMs = Math.ceil(deadlineMs - performance.now());
|
|
29
|
+
if (remainingMs <= 0)
|
|
30
|
+
throw exhausted();
|
|
31
|
+
let changed;
|
|
32
|
+
const transition = new Promise((resolve) => {
|
|
33
|
+
changed = resolve;
|
|
34
|
+
});
|
|
35
|
+
let submittedGeneration;
|
|
36
|
+
const attemptStop = new AbortController();
|
|
37
|
+
const attemptSignal = AbortSignal.any([cancellation, attemptStop.signal]);
|
|
38
|
+
const unobserveRoute = port.observePeerRouteChanged((rid) => {
|
|
39
|
+
if (rid !== target)
|
|
40
|
+
return;
|
|
41
|
+
const route = port.observePeerRoute(target);
|
|
42
|
+
if (submittedGeneration === undefined
|
|
43
|
+
? route.ready
|
|
44
|
+
: route.generation !== undefined && route.generation !== submittedGeneration) {
|
|
45
|
+
changed();
|
|
46
|
+
attemptStop.abort();
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
try {
|
|
50
|
+
const route = port.observePeerRoute(target);
|
|
51
|
+
if (!route.ready) {
|
|
52
|
+
await (0, abort_1.awaitWithAbort)(transition, cancellation);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
submittedGeneration = route.generation;
|
|
56
|
+
const reply = port.requestService(target, parts, remainingMs, () => {
|
|
57
|
+
wasAdmitted = true;
|
|
58
|
+
});
|
|
59
|
+
const request = onSubmitted === undefined
|
|
60
|
+
? reply
|
|
61
|
+
: Promise.race([
|
|
62
|
+
reply,
|
|
63
|
+
Promise.resolve()
|
|
64
|
+
.then(() => onSubmitted(attemptSignal))
|
|
65
|
+
.then(() => reply)
|
|
66
|
+
]);
|
|
67
|
+
const result = await (0, abort_1.awaitWithAbort)(Promise.race([request.then((parts) => ({ parts })), transition.then(() => undefined)]), cancellation);
|
|
68
|
+
if (result !== undefined)
|
|
69
|
+
return result.parts;
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
cancellation.throwIfAborted();
|
|
73
|
+
if (!durableRequestCanReplay(error))
|
|
74
|
+
throw error;
|
|
75
|
+
if ((0, runtime_values_1.isZLinkBackendResultError)(error) && error.operation === 'request')
|
|
76
|
+
wasAdmitted = true;
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
attemptStop.abort();
|
|
80
|
+
unobserveRoute();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
clearTimeout(timer);
|
|
86
|
+
unobserveIntent();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function durableRequestCanReplay(error) {
|
|
90
|
+
if (!(0, runtime_values_1.isZLinkBackendResultError)(error))
|
|
91
|
+
return false;
|
|
92
|
+
return error.operation === 'request'
|
|
93
|
+
? error.result === runtime_values_1.RequestResult.NotConnected || error.result === runtime_values_1.RequestResult.TimedOut
|
|
94
|
+
: error.result === runtime_values_1.SubmitResult.NotConnected ||
|
|
95
|
+
error.result === runtime_values_1.SubmitResult.NotFound ||
|
|
96
|
+
error.result === runtime_values_1.SubmitResult.NotAdmitted ||
|
|
97
|
+
error.result === runtime_values_1.SubmitResult.Backpressured;
|
|
98
|
+
}
|
|
@@ -10,5 +10,6 @@ export type ZLinkOperationIdentityKey = string & {
|
|
|
10
10
|
readonly [operationKeyBrand]: true;
|
|
11
11
|
};
|
|
12
12
|
export declare function operationIdentityKey(operationId: ZLinkOperationIdentity128): ZLinkOperationIdentityKey;
|
|
13
|
+
export declare function validateOperationIdentity(operationId: ZLinkOperationIdentity128): void;
|
|
13
14
|
export declare function createRandomOperationIdentity(source?: (size: number) => Buffer): ZLinkOperationIdentity128;
|
|
14
15
|
export {};
|
|
@@ -2,18 +2,22 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLINK_NATIVE_CORRELATION_OPERATION_NAMESPACE = exports.OPERATION_IDENTITY_BYTES = void 0;
|
|
4
4
|
exports.operationIdentityKey = operationIdentityKey;
|
|
5
|
+
exports.validateOperationIdentity = validateOperationIdentity;
|
|
5
6
|
exports.createRandomOperationIdentity = createRandomOperationIdentity;
|
|
6
7
|
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
7
8
|
const node_crypto_1 = require("node:crypto");
|
|
8
9
|
exports.OPERATION_IDENTITY_BYTES = 16;
|
|
9
10
|
exports.ZLINK_NATIVE_CORRELATION_OPERATION_NAMESPACE = 2n;
|
|
10
11
|
function operationIdentityKey(operationId) {
|
|
12
|
+
validateOperationIdentity(operationId);
|
|
13
|
+
return `${operationId.high.toString(16)}:${operationId.low.toString(16)}`;
|
|
14
|
+
}
|
|
15
|
+
function validateOperationIdentity(operationId) {
|
|
11
16
|
requireUnsigned64(operationId.high, 'operationId.high');
|
|
12
17
|
requireUnsigned64(operationId.low, 'operationId.low');
|
|
13
18
|
if (operationId.high === 0n && operationId.low === 0n) {
|
|
14
19
|
throw new RangeError('Operation identity must not be all zero.');
|
|
15
20
|
}
|
|
16
|
-
return `${operationId.high.toString(16)}:${operationId.low.toString(16)}`;
|
|
17
21
|
}
|
|
18
22
|
function createRandomOperationIdentity(source = node_crypto_1.randomBytes) {
|
|
19
23
|
for (;;) {
|
|
@@ -17,6 +17,7 @@ export interface RawServiceRequestResult {
|
|
|
17
17
|
/** An M6A application frame already owned by the Framework runtime. */
|
|
18
18
|
type ServiceApplicationPayloadInput = ServiceApplicationPayload | Buffer;
|
|
19
19
|
export interface RawServiceIngressRecord {
|
|
20
|
+
readonly onAdmitted?: () => void;
|
|
20
21
|
readonly command: number;
|
|
21
22
|
readonly flags: number;
|
|
22
23
|
readonly sourceRoutingId: string;
|
|
@@ -29,6 +30,8 @@ export interface RawServiceIngressRecord {
|
|
|
29
30
|
}
|
|
30
31
|
export type RawServiceIngressHandler = (record: RawServiceIngressRecord) => RawServicePumpResult | undefined | Promise<RawServicePumpResult | undefined>;
|
|
31
32
|
export interface RawServiceMeshRuntimeOptions {
|
|
33
|
+
readonly onReceiveReady?: () => void;
|
|
34
|
+
readonly infrastructureTaskRunner?: import('../spots/spot-actor-join-dispatch').ZLinkDetachedTaskRunner;
|
|
32
35
|
readonly onPendingOperationsChanged?: () => void;
|
|
33
36
|
readonly descriptor: ServiceNodeDescriptor;
|
|
34
37
|
readonly resolveAdvertisedEndpoint?: (boundEndpoint: string) => string;
|
|
@@ -61,6 +64,7 @@ export declare class RawServiceMeshRuntime {
|
|
|
61
64
|
private readonly expectedPeers;
|
|
62
65
|
private readonly endpointOnlyPeers;
|
|
63
66
|
private readonly peerConnectionIntentRemoved;
|
|
67
|
+
private readonly peerRouteChanged;
|
|
64
68
|
/**
|
|
65
69
|
* The last observed Core selected route of each RID (Core ROUTER §10.1):
|
|
66
70
|
* RID -> route generation. Only `observeSelectedRoutes` replaces it.
|
|
@@ -68,8 +72,16 @@ export declare class RawServiceMeshRuntime {
|
|
|
68
72
|
private selectedRoutes;
|
|
69
73
|
private readonly bindingPort;
|
|
70
74
|
private readonly applicationJobQueue;
|
|
75
|
+
private readonly nodeMailboxOwner;
|
|
71
76
|
private readonly peerAdmissionSealed?;
|
|
72
77
|
private readonly applicationJobStop;
|
|
78
|
+
private receiveAcquisition?;
|
|
79
|
+
private receivePermit?;
|
|
80
|
+
private receiveRotation?;
|
|
81
|
+
private readonly controlSends;
|
|
82
|
+
private infrastructureFailure?;
|
|
83
|
+
private readonly onReceiveReady?;
|
|
84
|
+
private readonly infrastructureTaskRunner?;
|
|
73
85
|
private readonly onPeerNotRequired?;
|
|
74
86
|
private readonly onPeerDisconnected?;
|
|
75
87
|
private readonly onProtocolError?;
|
|
@@ -80,6 +92,7 @@ export declare class RawServiceMeshRuntime {
|
|
|
80
92
|
private router?;
|
|
81
93
|
private nextCorrelation;
|
|
82
94
|
private serviceIngress?;
|
|
95
|
+
private serviceIngressAccepts?;
|
|
83
96
|
private closed;
|
|
84
97
|
constructor(options: RawServiceMeshRuntimeOptions);
|
|
85
98
|
start(): void;
|
|
@@ -90,6 +103,11 @@ export declare class RawServiceMeshRuntime {
|
|
|
90
103
|
disconnectPeer(endpoint: string, nodeRoutingId: string, lifecycleGeneration?: bigint): void;
|
|
91
104
|
disconnectPeerEndpoint(endpoint: string): void;
|
|
92
105
|
observePeerConnectionIntentRemoved(listener: (nodeRoutingId: string) => void): () => void;
|
|
106
|
+
observePeerRoute(nodeRoutingId: string): import('./durable-service-request').PeerRouteObservation;
|
|
107
|
+
get requestStopSignal(): AbortSignal;
|
|
108
|
+
observePeerRouteChanged(listener: (nodeRoutingId: string) => void): () => void;
|
|
109
|
+
hasSelectedPeerRoute(nodeRoutingId: string): boolean;
|
|
110
|
+
private notifyPeerRouteChanged;
|
|
93
111
|
private notifyPeerConnectionIntentRemoved;
|
|
94
112
|
announcePeer(nodeRoutingId: string): Promise<boolean>;
|
|
95
113
|
isPeerRouteReady(nodeRoutingId: string, lifecycleGeneration?: bigint): boolean;
|
|
@@ -100,17 +118,18 @@ export declare class RawServiceMeshRuntime {
|
|
|
100
118
|
readonly channelWeight?: number;
|
|
101
119
|
readonly state?: 'draining';
|
|
102
120
|
}): Promise<void>;
|
|
121
|
+
private publishLocalDescriptor;
|
|
103
122
|
replaceDiscoveredNotRequired(descriptors: readonly ServiceNodeDescriptor[]): void;
|
|
104
123
|
isObjectClientNodeDirectTarget(nodeRoutingId: string): boolean;
|
|
105
|
-
sendToNode(targetNodeRoutingId: string, payload: ServiceApplicationPayloadInput): Promise<boolean>;
|
|
124
|
+
sendToNode(targetNodeRoutingId: string, payload: ServiceApplicationPayloadInput): boolean | Promise<boolean>;
|
|
106
125
|
sendToChannel(channelName: string, payload: ServiceApplicationPayloadInput): Promise<SubmitResult>;
|
|
107
|
-
requestToNode(targetNodeRoutingId: string, payload: ServiceApplicationPayloadInput, timeoutMs: number): PendingOperation<RawServiceRequestResult>;
|
|
108
|
-
requestToChannel(channelName: string, payload: ServiceApplicationPayloadInput, timeoutMs: number): PendingOperation<RawServiceRequestResult>;
|
|
126
|
+
requestToNode(targetNodeRoutingId: string, payload: ServiceApplicationPayloadInput, timeoutMs: number, onAdmitted?: () => void): PendingOperation<RawServiceRequestResult>;
|
|
127
|
+
requestToChannel(channelName: string, payload: ServiceApplicationPayloadInput, timeoutMs: number, onAdmitted?: () => void): PendingOperation<RawServiceRequestResult>;
|
|
109
128
|
private selectChannelTarget;
|
|
110
|
-
setServiceIngress(handler: RawServiceIngressHandler): void;
|
|
129
|
+
setServiceIngress(handler: RawServiceIngressHandler, accepts?: (command: number) => boolean): void;
|
|
111
130
|
reserveLocalIngress(signal?: AbortSignal): Promise<ApplicationIngressRecordOwner>;
|
|
112
131
|
sendService(targetNodeRoutingId: string, parts: readonly Uint8Array[]): Promise<boolean>;
|
|
113
|
-
requestService(targetNodeRoutingId: string, parts: readonly Uint8Array[], timeoutMs: number): Promise<readonly Buffer[]>;
|
|
132
|
+
requestService(targetNodeRoutingId: string, parts: readonly Uint8Array[], timeoutMs: number, onAdmitted?: () => void): Promise<readonly Buffer[]>;
|
|
114
133
|
replyService(record: Pick<RawServiceIngressRecord, 'sourceRoutingId' | 'sourceRoute' | 'requestSequence' | 'reply'>, parts: readonly Uint8Array[]): void;
|
|
115
134
|
reply(request: ServiceMailboxRecord, payload: ServiceApplicationPayloadInput, terminalResult?: number, failureCode?: number): void;
|
|
116
135
|
pumpOne(nowMs?: number, observe?: RawServicePumpObserver): Promise<RawServicePumpResult>;
|
|
@@ -118,12 +137,18 @@ export declare class RawServiceMeshRuntime {
|
|
|
118
137
|
/** Returns whether a receive budget ended before no-data; idle ticks only maintain peers. */
|
|
119
138
|
pumpBatch(receiveReady?: boolean, routeReady?: boolean): Promise<boolean>;
|
|
120
139
|
private receiveOne;
|
|
140
|
+
private finishReceive;
|
|
121
141
|
private reportProtocolError;
|
|
122
142
|
private replyGenericProtocolError;
|
|
123
143
|
private processReceived;
|
|
144
|
+
private receiveProtocolFailure;
|
|
145
|
+
private processAdmission;
|
|
146
|
+
private processLiveness;
|
|
147
|
+
private processApplicationReceived;
|
|
148
|
+
private enqueueOrdinaryRecord;
|
|
124
149
|
expireOperations(nowMs: number, turnDeadlineMs: number): number;
|
|
125
150
|
get pendingOperationCount(): number;
|
|
126
|
-
tickLiveness(nowMs?: number):
|
|
151
|
+
tickLiveness(nowMs?: number): ServiceLivenessTick;
|
|
127
152
|
/**
|
|
128
153
|
* The socket's one route observer (Core ROUTER §10.1). It replaces the
|
|
129
154
|
* observation with Core's selected-route snapshot, ends the admission of
|
|
@@ -144,6 +169,12 @@ export declare class RawServiceMeshRuntime {
|
|
|
144
169
|
private selectBilateralConnection;
|
|
145
170
|
private removePeer;
|
|
146
171
|
private requireStarted;
|
|
172
|
+
private sendControl;
|
|
173
|
+
private submitControl;
|
|
174
|
+
private startControlSend;
|
|
175
|
+
private reportInfrastructureFailure;
|
|
176
|
+
private observeInfrastructureFailure;
|
|
147
177
|
private send;
|
|
178
|
+
private sendFailure;
|
|
148
179
|
}
|
|
149
180
|
export {};
|