@zlink-systems/framework 0.21.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Common/ZLinkMessage.js +5 -5
- package/dist/contracts/Configuration/CodecContentType.js +5 -7
- package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
- package/dist/contracts/Configuration/EndpointNotation.js +4 -8
- package/dist/contracts/Configuration/Registration.js +14 -11
- package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
- package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
- package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
- package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -0
- package/dist/contracts/Handlers/JsonContract.js +23 -11
- package/dist/contracts/Spots/SpotKind.js +16 -8
- package/dist/contracts/Streams/IZLinkSession.d.ts +2 -1
- package/dist/location-store-integration.js +16 -16
- package/dist/nest-integration.js +17 -11
- package/dist/runtime/abort.js +9 -5
- package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
- package/dist/runtime/actors/actor-authority-publication.js +18 -17
- package/dist/runtime/actors/actor-client.js +83 -63
- package/dist/runtime/actors/actor-context.js +28 -22
- package/dist/runtime/actors/actor-creation.js +4 -3
- package/dist/runtime/actors/actor-handoff.js +89 -92
- package/dist/runtime/actors/actor-join-deferred-scope.d.ts +0 -1
- package/dist/runtime/actors/actor-join-deferred-scope.js +0 -18
- package/dist/runtime/actors/actor-local-native-join.js +18 -19
- package/dist/runtime/actors/actor-mailbox.js +1 -1
- package/dist/runtime/actors/actor-message-follow-context.js +24 -21
- package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
- package/dist/runtime/actors/actor-remote-joiner.js +20 -17
- package/dist/runtime/actors/actor-remote-wire.js +6 -7
- package/dist/runtime/actors/actor-runtime-state.js +87 -81
- package/dist/runtime/actors/actor-transfer-registry.js +3 -5
- package/dist/runtime/actors/bound-session-wire.js +14 -9
- package/dist/runtime/actors/deferred-join-accepted-journal.js +160 -130
- package/dist/runtime/actors/index.js +2 -5
- package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
- package/dist/runtime/actors/post-commit-actor-location.js +1 -1
- package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
- package/dist/runtime/admission.js +2 -6
- package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
- package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
- package/dist/runtime/backend/contracts/index.d.ts +1 -0
- package/dist/runtime/backend/mesh-completion-table.js +1 -3
- package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
- package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
- package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
- package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +3 -0
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +134 -118
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
- package/dist/runtime/backend/runtime-message.js +3 -3
- package/dist/runtime/backend/runtime-values.d.ts +2 -2
- package/dist/runtime/backend/runtime-values.js +4 -5
- package/dist/runtime/channels/channel-clients.js +27 -24
- package/dist/runtime/channels/channel-dispatch-pipeline.js +12 -20
- package/dist/runtime/channels/channel-dispatch-services.js +7 -4
- package/dist/runtime/channels/channel-dispatchers.js +9 -9
- package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
- package/dist/runtime/channels/channel-envelope.js +83 -47
- package/dist/runtime/channels/channel-outbound-operations.js +8 -8
- package/dist/runtime/channels/channel-receive-loops.js +20 -22
- package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
- package/dist/runtime/channels/channel-runtime-manager.js +18 -9
- package/dist/runtime/channels/channel-socket-registry.js +126 -123
- package/dist/runtime/channels/channel-transports.js +46 -42
- package/dist/runtime/channels/client-server-location-runtime.js +32 -40
- package/dist/runtime/channels/client-server-service-wire.js +29 -22
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -0
- package/dist/runtime/channels/dispatch-error-reporter.js +9 -39
- package/dist/runtime/channels/fanout-location-runtime.js +34 -47
- package/dist/runtime/channels/fanout-service-wire.js +3 -5
- package/dist/runtime/channels/local-spot-route-transport.js +7 -1
- package/dist/runtime/channels/route-member-snapshot.js +3 -3
- package/dist/runtime/channels/source-spot-router.js +6 -2
- package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
- package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +6 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +55 -0
- package/dist/runtime/diagnostics/flow-context.d.ts +2 -1
- package/dist/runtime/diagnostics/flow-context.js +2 -2
- package/dist/runtime/diagnostics/index.js +38 -10
- package/dist/runtime/diagnostics/message-flow.js +58 -42
- package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
- package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
- package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
- package/dist/runtime/execution/index.js +7 -6
- package/dist/runtime/execution/serial-execution-queue.js +12 -18
- package/dist/runtime/execution/state-lane.js +2 -2
- package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -27
- package/dist/runtime/foundation/event-loop-resources.js +4 -4
- package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +4 -2
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +169 -144
- package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
- package/dist/runtime/foundation/runtime-state-projections.js +22 -11
- package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
- package/dist/runtime/foundation/service-discovery-registry.js +35 -33
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
- package/dist/runtime/foundation/service-liveness-registry.js +16 -12
- package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
- package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
- package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
- package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +1 -0
- package/dist/runtime/foundation/service-stateful-registry.js +24 -23
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +4 -0
- package/dist/runtime/foundation/service-stateful-runtime.js +461 -439
- package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -0
- package/dist/runtime/foundation/service-topology-registry.js +105 -96
- package/dist/runtime/foundation/service-weighted-selection.js +6 -11
- package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
- package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
- package/dist/runtime/framework-errors-internal.js +7 -10
- package/dist/runtime/handlers/handler-instance-scope.js +4 -5
- package/dist/runtime/handlers/index.js +3 -1
- package/dist/runtime/host/actor-packet-relay.js +74 -70
- package/dist/runtime/host/actor-placement-coordinator.js +29 -31
- package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
- package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
- package/dist/runtime/host/actor-transfer-runtime.js +176 -153
- package/dist/runtime/host/application-job-queue.js +18 -22
- package/dist/runtime/host/bound-session-relay.js +3 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
- package/dist/runtime/host/host-capacity-status.js +8 -4
- package/dist/runtime/host/index.js +245 -228
- package/dist/runtime/host/instance-activation-authority.js +93 -96
- package/dist/runtime/host/location-runtime-owner.js +16 -14
- package/dist/runtime/host/mesh-router-resolver.js +11 -13
- package/dist/runtime/host/relocation-direct-transfer.js +10 -9
- package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
- package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
- package/dist/runtime/host/remote-bound-session-relay.js +97 -73
- package/dist/runtime/host/route-mesh-runtime.js +64 -69
- package/dist/runtime/host/runtime-shutdown.js +1 -2
- package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
- package/dist/runtime/host/spot-address-transport.js +69 -71
- package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
- package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
- package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
- package/dist/runtime/locations/actor-location-claims.js +26 -20
- package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
- package/dist/runtime/locations/authority-key-codec.js +7 -7
- package/dist/runtime/locations/auto-connect-loop.js +3 -3
- package/dist/runtime/locations/auto-connect-planner.js +25 -19
- package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
- package/dist/runtime/locations/in-memory-authority-store.js +128 -118
- package/dist/runtime/locations/in-memory-location-store.js +195 -168
- package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
- package/dist/runtime/locations/key-codec.js +1 -1
- package/dist/runtime/locations/lease-tracker.js +23 -21
- package/dist/runtime/locations/lifecycle.js +4 -5
- package/dist/runtime/locations/location-store-repository.js +368 -324
- package/dist/runtime/locations/opaque-record-key.js +2 -2
- package/dist/runtime/locations/resolvers.js +73 -82
- package/dist/runtime/locations/runtime.js +68 -63
- package/dist/runtime/locations/spot-location-claims.js +39 -35
- package/dist/runtime/messaging/framework-json-v1.js +7 -7
- package/dist/runtime/messaging/packet-name.js +7 -6
- package/dist/runtime/messaging/payload-codec.js +21 -18
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
- package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +20 -18
- package/dist/runtime/routing-id.js +3 -5
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
- package/dist/runtime/spots/index.js +209 -220
- package/dist/runtime/spots/spot-activation-registry.js +15 -14
- package/dist/runtime/spots/spot-activation-state.js +17 -15
- package/dist/runtime/spots/spot-activation.js +33 -16
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
- package/dist/runtime/spots/spot-actor-membership.js +1 -3
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +2 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +29 -21
- package/dist/runtime/spots/spot-actor-packet-drain.js +14 -10
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
- package/dist/runtime/spots/spot-closing.js +3 -7
- package/dist/runtime/spots/spot-context.js +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +13 -14
- package/dist/runtime/spots/spot-handle.js +6 -3
- package/dist/runtime/spots/spot-handler-registry.js +12 -12
- package/dist/runtime/spots/spot-manager-public.js +5 -6
- package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
- package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +79 -86
- package/dist/runtime/spots/spot-outbound.js +10 -14
- package/dist/runtime/spots/spot-remote-codec.js +22 -26
- package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
- package/dist/runtime/spots/spot-route-packet-dispatch.js +17 -15
- package/dist/runtime/spots/spot-route-replies.js +4 -6
- package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
- package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +2 -3
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
- package/dist/runtime/spots/spot-serial-executor.js +5 -8
- package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
- package/dist/runtime/spots/spot-subscription-dispatch.js +6 -6
- package/dist/runtime/spots/spot-timer.js +26 -30
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +21 -8
- package/dist/runtime/streams/actor-session-binding-registry.js +168 -148
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -0
- package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +20 -17
- package/dist/runtime/streams/bound-session-response-target.js +8 -1
- package/dist/runtime/streams/bound-session-service.d.ts +1 -0
- package/dist/runtime/streams/bound-session-service.js +14 -12
- package/dist/runtime/streams/index.js +28 -20
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +52 -31
- package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
- package/dist/runtime/streams/protocol.d.ts +5 -1
- package/dist/runtime/streams/protocol.js +68 -20
- package/dist/runtime/streams/session-actor-coordinator.js +37 -41
- package/dist/runtime/streams/session-context.d.ts +9 -2
- package/dist/runtime/streams/session-context.js +50 -32
- package/dist/runtime/streams/session-local-actors.d.ts +3 -1
- package/dist/runtime/streams/session-local-actors.js +17 -2
- package/dist/runtime/streams/session-provider.js +2 -2
- package/dist/runtime/streams/session-serial-executor.js +1 -2
- package/dist/runtime/streams/stream-frame-factory.d.ts +1 -1
- package/dist/runtime/streams/stream-frame-factory.js +14 -7
- package/dist/runtime/streams/stream-session-runtime.js +112 -78
- package/dist/runtime/workers/index.js +15 -4
- package/package.json +3 -3
- package/src/contracts/Channels/RouteCalls.ts +6 -1
- package/src/contracts/Common/ZLinkMessage.ts +5 -5
- package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
- package/src/contracts/Configuration/Builders.ts +14 -14
- package/src/contracts/Configuration/CodecContentType.ts +8 -10
- package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
- package/src/contracts/Configuration/EndpointNotation.ts +11 -11
- package/src/contracts/Configuration/ObjectRoles.ts +1 -3
- package/src/contracts/Configuration/Registration.ts +46 -17
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
- package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
- package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
- package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
- package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
- package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
- package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
- package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
- package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -6
- package/src/contracts/Errors/index.ts +1 -4
- package/src/contracts/Handlers/Attributes.ts +15 -9
- package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
- package/src/contracts/Handlers/JsonContract.ts +53 -19
- package/src/contracts/Locations/ActorTransfer.ts +1 -5
- package/src/contracts/Locations/Authority.ts +4 -11
- package/src/contracts/Locations/Keys.ts +6 -1
- package/src/contracts/Locations/Options.ts +3 -2
- package/src/contracts/Locations/RelocationStore.ts +1 -4
- package/src/contracts/Locations/Resolvers.ts +5 -5
- package/src/contracts/Locations/RuntimeQuery.ts +6 -2
- package/src/contracts/Locations/Stores.ts +1 -2
- package/src/contracts/Locations/index.ts +2 -8
- package/src/contracts/RouteMesh/Contracts.ts +1 -7
- package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
- package/src/contracts/Spots/Contracts.ts +2 -8
- package/src/contracts/Spots/SpotKind.ts +16 -8
- package/src/contracts/Spots/ZLinkSpot.ts +8 -11
- package/src/contracts/Streams/IZLinkSession.ts +2 -2
- package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
- package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
- package/src/internal.ts +5 -4
- package/src/location-store-integration.ts +24 -16
- package/src/nest-integration.ts +40 -25
- package/src/runtime/abort.ts +10 -4
- package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
- package/src/runtime/actors/actor-authority-publication.ts +92 -77
- package/src/runtime/actors/actor-client.ts +162 -133
- package/src/runtime/actors/actor-context.ts +142 -134
- package/src/runtime/actors/actor-creation.ts +47 -44
- package/src/runtime/actors/actor-execution-context.ts +6 -4
- package/src/runtime/actors/actor-handoff.ts +269 -293
- package/src/runtime/actors/actor-join-deferred-scope.ts +1 -32
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
- package/src/runtime/actors/actor-local-native-join.ts +131 -159
- package/src/runtime/actors/actor-mailbox.ts +16 -19
- package/src/runtime/actors/actor-message-follow-context.ts +46 -36
- package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
- package/src/runtime/actors/actor-remote-joiner.ts +50 -54
- package/src/runtime/actors/actor-remote-wire.ts +9 -13
- package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
- package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
- package/src/runtime/actors/actor-runtime-state.ts +127 -124
- package/src/runtime/actors/actor-transfer-registry.ts +9 -14
- package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
- package/src/runtime/actors/bound-session-wire.ts +37 -17
- package/src/runtime/actors/deferred-join-accepted-journal.ts +353 -326
- package/src/runtime/actors/index.ts +43 -86
- package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
- package/src/runtime/actors/post-commit-actor-location.ts +30 -23
- package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
- package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
- package/src/runtime/admission.ts +9 -9
- package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
- package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
- package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
- package/src/runtime/backend/contracts/index.ts +77 -52
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
- package/src/runtime/backend/mesh-completion-table.ts +6 -9
- package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
- package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
- package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
- package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
- package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +370 -390
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
- package/src/runtime/backend/runtime-message.ts +5 -3
- package/src/runtime/backend/runtime-values.ts +10 -7
- package/src/runtime/channels/channel-autoconnect.ts +1 -4
- package/src/runtime/channels/channel-clients.ts +93 -73
- package/src/runtime/channels/channel-dispatch-pipeline.ts +44 -44
- package/src/runtime/channels/channel-dispatch-services.ts +51 -49
- package/src/runtime/channels/channel-dispatchers.ts +152 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
- package/src/runtime/channels/channel-envelope.ts +256 -150
- package/src/runtime/channels/channel-multipart.ts +13 -5
- package/src/runtime/channels/channel-outbound-operations.ts +37 -41
- package/src/runtime/channels/channel-receive-loops.ts +102 -98
- package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
- package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
- package/src/runtime/channels/channel-runtime-manager.ts +63 -37
- package/src/runtime/channels/channel-socket-options.ts +3 -10
- package/src/runtime/channels/channel-socket-registry.ts +331 -273
- package/src/runtime/channels/channel-transports.ts +218 -206
- package/src/runtime/channels/client-server-location-runtime.ts +116 -100
- package/src/runtime/channels/client-server-service-wire.ts +37 -36
- package/src/runtime/channels/dispatch-error-reporter.ts +12 -47
- package/src/runtime/channels/fanout-location-runtime.ts +91 -94
- package/src/runtime/channels/fanout-service-wire.ts +5 -12
- package/src/runtime/channels/handler-filter-scope.ts +1 -4
- package/src/runtime/channels/index.ts +1 -4
- package/src/runtime/channels/local-spot-route-transport.ts +20 -5
- package/src/runtime/channels/route-member-snapshot.ts +11 -5
- package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
- package/src/runtime/channels/source-spot-router.ts +26 -22
- package/src/runtime/channels/spot-direct-envelope.ts +10 -8
- package/src/runtime/channels/spot-node-route-transport.ts +13 -16
- package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
- package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
- package/src/runtime/codecs/index.ts +3 -2
- package/src/runtime/diagnostics/dispatch-error-details.ts +62 -0
- package/src/runtime/diagnostics/flow-context.ts +18 -7
- package/src/runtime/diagnostics/index.ts +96 -61
- package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
- package/src/runtime/diagnostics/message-flow.ts +107 -79
- package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
- package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
- package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
- package/src/runtime/execution/index.ts +18 -26
- package/src/runtime/execution/serial-execution-queue.ts +31 -40
- package/src/runtime/execution/state-lane.ts +2 -2
- package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -55
- package/src/runtime/foundation/event-loop-resources.ts +8 -4
- package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
- package/src/runtime/foundation/operation-identity.ts +1 -2
- package/src/runtime/foundation/operation-registry.ts +8 -2
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +364 -396
- package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
- package/src/runtime/foundation/runtime-state-projections.ts +24 -23
- package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
- package/src/runtime/foundation/service-discovery-registry.ts +67 -59
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
- package/src/runtime/foundation/service-liveness-registry.ts +18 -13
- package/src/runtime/foundation/service-mailbox.ts +14 -14
- package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
- package/src/runtime/foundation/service-metadata-codec.ts +2 -9
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
- package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
- package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
- package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
- package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -4
- package/src/runtime/foundation/service-stateful-registry.ts +69 -59
- package/src/runtime/foundation/service-stateful-runtime.ts +1233 -1112
- package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
- package/src/runtime/foundation/service-topology-registry.ts +170 -159
- package/src/runtime/foundation/service-weighted-selection.ts +9 -15
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
- package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
- package/src/runtime/framework-errors-internal.ts +31 -30
- package/src/runtime/handlers/handler-instance-scope.ts +18 -29
- package/src/runtime/handlers/index.ts +18 -8
- package/src/runtime/host/actor-packet-relay.ts +290 -261
- package/src/runtime/host/actor-placement-coordinator.ts +165 -150
- package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
- package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
- package/src/runtime/host/actor-transfer-runtime.ts +391 -395
- package/src/runtime/host/application-job-queue.ts +32 -48
- package/src/runtime/host/bound-session-relay.ts +7 -9
- package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
- package/src/runtime/host/host-capacity-status.ts +10 -9
- package/src/runtime/host/index.ts +861 -789
- package/src/runtime/host/instance-activation-authority.ts +125 -143
- package/src/runtime/host/location-runtime-owner.ts +38 -26
- package/src/runtime/host/mesh-router-resolver.ts +30 -23
- package/src/runtime/host/relocation-direct-transfer.ts +15 -15
- package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
- package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
- package/src/runtime/host/remote-bound-session-relay.ts +274 -247
- package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
- package/src/runtime/host/route-mesh-runtime.ts +227 -181
- package/src/runtime/host/runtime-shutdown.ts +4 -3
- package/src/runtime/host/service-relocation-control.ts +14 -5
- package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
- package/src/runtime/host/spot-address-transport.ts +284 -237
- package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
- package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
- package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
- package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
- package/src/runtime/locations/actor-location-claims.ts +61 -49
- package/src/runtime/locations/actor-session-route-claims.ts +1 -4
- package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
- package/src/runtime/locations/authority-key-codec.ts +13 -10
- package/src/runtime/locations/auto-connect-loop.ts +14 -11
- package/src/runtime/locations/auto-connect-planner.ts +42 -31
- package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
- package/src/runtime/locations/canonical-codec.ts +3 -1
- package/src/runtime/locations/creation-operation-id.ts +4 -3
- package/src/runtime/locations/domain-store-contract.ts +13 -7
- package/src/runtime/locations/in-memory-authority-store.ts +232 -199
- package/src/runtime/locations/in-memory-location-store.ts +432 -250
- package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
- package/src/runtime/locations/internal-store-contracts.ts +95 -38
- package/src/runtime/locations/key-codec.ts +3 -4
- package/src/runtime/locations/lease-tracker.ts +36 -27
- package/src/runtime/locations/lifecycle-runtime.ts +15 -3
- package/src/runtime/locations/lifecycle.ts +33 -28
- package/src/runtime/locations/location-store-repository.ts +1329 -1185
- package/src/runtime/locations/opaque-record-key.ts +4 -9
- package/src/runtime/locations/resolvers.ts +201 -178
- package/src/runtime/locations/runtime.ts +251 -159
- package/src/runtime/locations/spot-location-claims.ts +110 -112
- package/src/runtime/messaging/creation-payload-codec.ts +4 -1
- package/src/runtime/messaging/framework-json-v1.ts +34 -15
- package/src/runtime/messaging/packet-name.ts +8 -6
- package/src/runtime/messaging/payload-codec.ts +70 -50
- package/src/runtime/messaging/submission-result.ts +6 -9
- package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +19 -18
- package/src/runtime/routing-id.ts +10 -7
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
- package/src/runtime/spots/index.ts +595 -564
- package/src/runtime/spots/spot-activation-registry.ts +38 -34
- package/src/runtime/spots/spot-activation-state.ts +43 -51
- package/src/runtime/spots/spot-activation.ts +179 -116
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
- package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
- package/src/runtime/spots/spot-actor-membership.ts +25 -27
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +196 -148
- package/src/runtime/spots/spot-actor-packet-drain.ts +56 -42
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
- package/src/runtime/spots/spot-closing.ts +11 -12
- package/src/runtime/spots/spot-context.ts +46 -26
- package/src/runtime/spots/spot-entry-activation.ts +84 -65
- package/src/runtime/spots/spot-handle.ts +17 -15
- package/src/runtime/spots/spot-handler-registry.ts +44 -31
- package/src/runtime/spots/spot-location-claim.ts +5 -4
- package/src/runtime/spots/spot-manager-public.ts +62 -82
- package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
- package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
- package/src/runtime/spots/spot-node-runtime-manager.ts +235 -222
- package/src/runtime/spots/spot-outbound.ts +47 -59
- package/src/runtime/spots/spot-publisher-transport.ts +5 -4
- package/src/runtime/spots/spot-remote-codec.ts +66 -65
- package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
- package/src/runtime/spots/spot-route-packet-dispatch.ts +129 -95
- package/src/runtime/spots/spot-route-replies.ts +23 -24
- package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
- package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
- package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +13 -18
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
- package/src/runtime/spots/spot-routing-internal.ts +1 -4
- package/src/runtime/spots/spot-runtime-ports.ts +5 -5
- package/src/runtime/spots/spot-serial-executor.ts +5 -9
- package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
- package/src/runtime/spots/spot-subscription-dispatch.ts +58 -47
- package/src/runtime/spots/spot-timer.ts +103 -91
- package/src/runtime/streams/actor-session-binding-registry.ts +421 -292
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +8 -4
- package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
- package/src/runtime/streams/bound-actor-relay-sender.ts +60 -50
- package/src/runtime/streams/bound-session-response-target.ts +39 -9
- package/src/runtime/streams/bound-session-service.ts +52 -42
- package/src/runtime/streams/index.ts +183 -100
- package/src/runtime/streams/managed-stream.ts +123 -90
- package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
- package/src/runtime/streams/protocol.ts +115 -46
- package/src/runtime/streams/session-actor-coordinator.ts +109 -93
- package/src/runtime/streams/session-calls.ts +2 -8
- package/src/runtime/streams/session-context.ts +96 -51
- package/src/runtime/streams/session-local-actors.ts +19 -3
- package/src/runtime/streams/session-provider.ts +5 -7
- package/src/runtime/streams/session-serial-executor.ts +7 -6
- package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
- package/src/runtime/streams/stream-frame-factory.ts +59 -40
- package/src/runtime/streams/stream-session-runtime.ts +317 -214
- package/src/runtime/workers/index.ts +68 -29
|
@@ -30,20 +30,28 @@ export enum ZLinkStreamCodec {
|
|
|
30
30
|
|
|
31
31
|
export function streamCodecContentType(codec: ZLinkStreamCodec): string {
|
|
32
32
|
switch (codec) {
|
|
33
|
-
case ZLinkStreamCodec.Json:
|
|
34
|
-
|
|
35
|
-
case ZLinkStreamCodec.
|
|
36
|
-
|
|
33
|
+
case ZLinkStreamCodec.Json:
|
|
34
|
+
return 'application/json';
|
|
35
|
+
case ZLinkStreamCodec.MessagePack:
|
|
36
|
+
return 'application/x-msgpack';
|
|
37
|
+
case ZLinkStreamCodec.Protobuf:
|
|
38
|
+
return 'application/x-protobuf';
|
|
39
|
+
case ZLinkStreamCodec.Raw:
|
|
40
|
+
return 'application/octet-stream';
|
|
37
41
|
}
|
|
38
42
|
throw new TypeError(`Unsupported STREAM codec '${codec}'.`);
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
export function streamCodecForContentType(contentType: string): ZLinkStreamCodec {
|
|
42
46
|
switch (contentType) {
|
|
43
|
-
case 'application/json':
|
|
44
|
-
|
|
45
|
-
case 'application/x-
|
|
46
|
-
|
|
47
|
+
case 'application/json':
|
|
48
|
+
return ZLinkStreamCodec.Json;
|
|
49
|
+
case 'application/x-msgpack':
|
|
50
|
+
return ZLinkStreamCodec.MessagePack;
|
|
51
|
+
case 'application/x-protobuf':
|
|
52
|
+
return ZLinkStreamCodec.Protobuf;
|
|
53
|
+
case 'application/octet-stream':
|
|
54
|
+
return ZLinkStreamCodec.Raw;
|
|
47
55
|
}
|
|
48
56
|
throw new TypeError(`Unsupported STREAM content type '${contentType}'.`);
|
|
49
57
|
}
|
|
@@ -62,7 +70,8 @@ export enum ZLinkStreamHeaderFlags {
|
|
|
62
70
|
HasMetadata = 0x02,
|
|
63
71
|
PayloadCompressed = 0x04,
|
|
64
72
|
HasCorrelationId = 0x08,
|
|
65
|
-
HasFlowId = 0x10
|
|
73
|
+
HasFlowId = 0x10,
|
|
74
|
+
HasActorSlot = 0x20
|
|
66
75
|
}
|
|
67
76
|
|
|
68
77
|
export enum ZLinkStreamCloseReasonCode {
|
|
@@ -87,18 +96,21 @@ export interface ZLinkStreamFrameHeader {
|
|
|
87
96
|
readonly correlationId?: string;
|
|
88
97
|
readonly flowId?: string;
|
|
89
98
|
readonly flowOrigin?: ZLinkFlowOrigin;
|
|
99
|
+
readonly actorSlot?: number;
|
|
90
100
|
}
|
|
91
101
|
|
|
92
102
|
export type ZLinkStreamReplyMessageKind =
|
|
93
|
-
| ZLinkStreamMessageKind.
|
|
94
|
-
| ZLinkStreamMessageKind.Error;
|
|
103
|
+
ZLinkStreamMessageKind.Response | ZLinkStreamMessageKind.Error;
|
|
95
104
|
|
|
96
105
|
export interface ZLinkStreamFrame {
|
|
97
106
|
readonly header: Uint8Array;
|
|
98
107
|
readonly payload: Uint8Array;
|
|
99
108
|
}
|
|
100
109
|
|
|
101
|
-
export function resolvePacketName(
|
|
110
|
+
export function resolvePacketName(
|
|
111
|
+
message: unknown,
|
|
112
|
+
explicitPacketName: string | undefined
|
|
113
|
+
): string {
|
|
102
114
|
const packetName = resolveFrameworkPacketName(message, explicitPacketName, 'Stream');
|
|
103
115
|
if (packetName.trim().length === 0) {
|
|
104
116
|
throw new Error('Stream packet name must not be empty.');
|
|
@@ -117,13 +129,38 @@ export function encodeStreamFrame(header: ZLinkStreamFrameHeader, payload: Uint8
|
|
|
117
129
|
}
|
|
118
130
|
|
|
119
131
|
export function encodeStreamControlFrame(name: string): Uint8Array {
|
|
120
|
-
return encodeStreamFrame(
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
132
|
+
return encodeStreamFrame(
|
|
133
|
+
{
|
|
134
|
+
kind: ZLinkStreamMessageKind.Control,
|
|
135
|
+
codec: ZLinkStreamCodec.Raw,
|
|
136
|
+
flags: ZLinkStreamHeaderFlags.None,
|
|
137
|
+
name,
|
|
138
|
+
metadata: EMPTY_STREAM_METADATA
|
|
139
|
+
},
|
|
140
|
+
new Uint8Array()
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export function encodeActorBoundFrame(actorSlot: number, actorId: string): Uint8Array {
|
|
145
|
+
const actorIdBytes = utf8Encode(actorId);
|
|
146
|
+
if (actorIdBytes.length < 1 || actorIdBytes.length > 0xff) {
|
|
147
|
+
throw new Error('Actor id length is invalid for a STREAM binding control packet.');
|
|
148
|
+
}
|
|
149
|
+
const payload = new Uint8Array(4 + actorIdBytes.length);
|
|
150
|
+
payload[0] = 1;
|
|
151
|
+
payload[1] = actorSlot >>> 8;
|
|
152
|
+
payload[2] = actorSlot & 0xff;
|
|
153
|
+
payload[3] = actorIdBytes.length;
|
|
154
|
+
payload.set(actorIdBytes, 4);
|
|
155
|
+
return encodeStreamFrame(controlHeader('$zlink.actor.bound'), payload);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export function encodeActorUnboundFrame(actorSlot: number): Uint8Array {
|
|
159
|
+
const payload = new Uint8Array(3);
|
|
160
|
+
payload[0] = 1;
|
|
161
|
+
payload[1] = actorSlot >>> 8;
|
|
162
|
+
payload[2] = actorSlot & 0xff;
|
|
163
|
+
return encodeStreamFrame(controlHeader('$zlink.actor.unbound'), payload);
|
|
127
164
|
}
|
|
128
165
|
|
|
129
166
|
export function encodeSessionClosingFrame(
|
|
@@ -138,13 +175,16 @@ export function encodeSessionClosingFrame(
|
|
|
138
175
|
payload[2] = diagnosticBytes.length >>> 8;
|
|
139
176
|
payload[3] = diagnosticBytes.length & 0xff;
|
|
140
177
|
payload.set(diagnosticBytes, 4);
|
|
141
|
-
return encodeStreamFrame(
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
178
|
+
return encodeStreamFrame(
|
|
179
|
+
{
|
|
180
|
+
kind: ZLinkStreamMessageKind.Control,
|
|
181
|
+
codec: ZLinkStreamCodec.Raw,
|
|
182
|
+
flags: ZLinkStreamHeaderFlags.None,
|
|
183
|
+
name: 'session-closing',
|
|
184
|
+
metadata: new Map()
|
|
185
|
+
},
|
|
186
|
+
payload
|
|
187
|
+
);
|
|
148
188
|
}
|
|
149
189
|
|
|
150
190
|
export function decodeStreamFrame(frame: Uint8Array): ZLinkStreamFrame {
|
|
@@ -160,8 +200,14 @@ export function encodeStreamHeader(header: ZLinkStreamFrameHeader): Uint8Array {
|
|
|
160
200
|
const hasMetadata = header.metadata.size > 0;
|
|
161
201
|
const hasCorrelation = header.correlationId !== undefined && header.correlationId.length > 0;
|
|
162
202
|
const hasFlow = header.flowId !== undefined || header.flowOrigin !== undefined;
|
|
163
|
-
|
|
164
|
-
|
|
203
|
+
const hasActorSlot = header.actorSlot !== undefined;
|
|
204
|
+
if (
|
|
205
|
+
header.kind === ZLinkStreamMessageKind.Control &&
|
|
206
|
+
(hasCorrelation || hasRequestSeq || hasMetadata || hasFlow || hasActorSlot)
|
|
207
|
+
) {
|
|
208
|
+
throw new Error(
|
|
209
|
+
'Control packet must not contain a request sequence, metadata, correlation id, or flow id.'
|
|
210
|
+
);
|
|
165
211
|
}
|
|
166
212
|
// Explicit construction: this runs for every outbound frame, so avoid a
|
|
167
213
|
// per-message spread of the whole header.
|
|
@@ -174,14 +220,12 @@ export function encodeStreamHeader(header: ZLinkStreamFrameHeader): Uint8Array {
|
|
|
174
220
|
metadata: header.metadata,
|
|
175
221
|
correlationId: header.correlationId,
|
|
176
222
|
flowId: header.flowId,
|
|
177
|
-
flowOrigin: encodeFlowOrigin(header.flowOrigin)
|
|
223
|
+
flowOrigin: encodeFlowOrigin(header.flowOrigin),
|
|
224
|
+
actorSlot: header.actorSlot
|
|
178
225
|
});
|
|
179
226
|
}
|
|
180
227
|
|
|
181
|
-
export function decodeStreamHeader(
|
|
182
|
-
header: Uint8Array,
|
|
183
|
-
flowEnabled = true
|
|
184
|
-
): ZLinkStreamFrameHeader {
|
|
228
|
+
export function decodeStreamHeader(header: Uint8Array, flowEnabled = true): ZLinkStreamFrameHeader {
|
|
185
229
|
const decoded = decodeStreamWireHeader(header, undefined, flowEnabled);
|
|
186
230
|
const kind = decoded.kind as ZLinkStreamMessageKind;
|
|
187
231
|
const flags = decoded.flags as ZLinkStreamHeaderFlags;
|
|
@@ -189,26 +233,35 @@ export function decodeStreamHeader(
|
|
|
189
233
|
const hasMetadata = (flags & ZLinkStreamHeaderFlags.HasMetadata) !== 0;
|
|
190
234
|
const hasCorrelation = (flags & ZLinkStreamHeaderFlags.HasCorrelationId) !== 0;
|
|
191
235
|
const hasFlow = (flags & ZLinkStreamHeaderFlags.HasFlowId) !== 0;
|
|
192
|
-
|
|
193
|
-
|
|
236
|
+
const hasActorSlot = (flags & ZLinkStreamHeaderFlags.HasActorSlot) !== 0;
|
|
237
|
+
if (
|
|
238
|
+
kind === ZLinkStreamMessageKind.Control &&
|
|
239
|
+
(hasCorrelation || hasRequestSeq || hasMetadata || hasFlow || hasActorSlot)
|
|
240
|
+
) {
|
|
241
|
+
throw new Error(
|
|
242
|
+
'Control packet must not contain a request sequence, metadata, correlation id, or flow id.'
|
|
243
|
+
);
|
|
194
244
|
}
|
|
195
245
|
const metadata = publicStreamMetadata(decoded.metadata);
|
|
196
246
|
return {
|
|
197
247
|
kind,
|
|
198
248
|
codec: decoded.codec as ZLinkStreamCodec,
|
|
199
|
-
flags:
|
|
200
|
-
? flags & ~ZLinkStreamHeaderFlags.HasMetadata
|
|
201
|
-
|
|
249
|
+
flags:
|
|
250
|
+
(metadata.size === 0 ? flags & ~ZLinkStreamHeaderFlags.HasMetadata : flags) &
|
|
251
|
+
(flowEnabled ? ~0 : ~ZLinkStreamHeaderFlags.HasFlowId),
|
|
202
252
|
requestSeq: decoded.requestSeq,
|
|
203
253
|
name: decoded.name,
|
|
204
254
|
metadata,
|
|
205
255
|
correlationId: decoded.correlationId,
|
|
206
256
|
flowId: decoded.flowId,
|
|
207
|
-
flowOrigin: decodeFlowOrigin(decoded.flowOrigin)
|
|
257
|
+
flowOrigin: decodeFlowOrigin(decoded.flowOrigin),
|
|
258
|
+
actorSlot: decoded.actorSlot
|
|
208
259
|
};
|
|
209
260
|
}
|
|
210
261
|
|
|
211
|
-
export function actorRequestDeadlineMetadata(
|
|
262
|
+
export function actorRequestDeadlineMetadata(
|
|
263
|
+
deadlineUnixMs: number | undefined
|
|
264
|
+
): ReadonlyMap<string, string> {
|
|
212
265
|
return deadlineUnixMs === undefined
|
|
213
266
|
? EMPTY_STREAM_METADATA
|
|
214
267
|
: new Map([[actorRequestDeadlineMetadataKey, String(deadlineUnixMs)]]);
|
|
@@ -250,18 +303,31 @@ export function createStreamReplyHeader(
|
|
|
250
303
|
// observation-only and is not copied into the reply when tracing is Off
|
|
251
304
|
// (spec 27 §4, §7).
|
|
252
305
|
correlationId: requestHeader.correlationId,
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
306
|
+
actorSlot: requestHeader.actorSlot,
|
|
307
|
+
...(includeFlow ? { flowId: requestHeader.flowId, flowOrigin: requestHeader.flowOrigin } : {})
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
function controlHeader(name: string): ZLinkStreamFrameHeader {
|
|
312
|
+
return {
|
|
313
|
+
kind: ZLinkStreamMessageKind.Control,
|
|
314
|
+
codec: ZLinkStreamCodec.Raw,
|
|
315
|
+
flags: ZLinkStreamHeaderFlags.None,
|
|
316
|
+
name,
|
|
317
|
+
metadata: EMPTY_STREAM_METADATA
|
|
256
318
|
};
|
|
257
319
|
}
|
|
258
320
|
|
|
259
321
|
function encodeFlowOrigin(origin: ZLinkFlowOrigin | undefined): number | undefined {
|
|
260
|
-
return origin === undefined
|
|
322
|
+
return origin === undefined
|
|
323
|
+
? undefined
|
|
324
|
+
: ({ Inbound: 1, Timer: 2, Application: 3, Lifecycle: 4 } as const)[origin];
|
|
261
325
|
}
|
|
262
326
|
|
|
263
327
|
function decodeFlowOrigin(origin: number | undefined): ZLinkFlowOrigin | undefined {
|
|
264
|
-
return origin === undefined
|
|
328
|
+
return origin === undefined
|
|
329
|
+
? undefined
|
|
330
|
+
: ({ 1: 'Inbound', 2: 'Timer', 3: 'Application', 4: 'Lifecycle' } as const)[origin];
|
|
265
331
|
}
|
|
266
332
|
|
|
267
333
|
export function messageToBytes(message: Message): Uint8Array {
|
|
@@ -286,6 +352,9 @@ export function lz4Pickle(payload: Uint8Array): Uint8Array {
|
|
|
286
352
|
return lz4PickleUncompressed(payload);
|
|
287
353
|
}
|
|
288
354
|
|
|
289
|
-
export function lz4Unpickle(
|
|
355
|
+
export function lz4Unpickle(
|
|
356
|
+
payload: Uint8Array,
|
|
357
|
+
maxDecompressedSize = defaultMaxDecompressedPayloadSize
|
|
358
|
+
): Uint8Array {
|
|
290
359
|
return lz4UnpicklePayload(payload, maxDecompressedSize);
|
|
291
360
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException } from '../framework-errors-internal';
|
|
2
1
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
} from '../../contracts';
|
|
2
|
+
ZLinkFrameworkInternalErrorKind,
|
|
3
|
+
createInternalFrameworkException
|
|
4
|
+
} from '../framework-errors-internal';
|
|
5
|
+
import { ActorRef, ZLinkActor, ZLinkFrameworkException } from '../../contracts';
|
|
7
6
|
import { throwIfAborted } from '../abort';
|
|
8
7
|
import { routingIdsEqual } from '../routing-id';
|
|
9
8
|
import type { ZLinkRuntimeMetrics } from '../diagnostics';
|
|
@@ -12,13 +11,8 @@ import {
|
|
|
12
11
|
type ZLinkActorSessionAuthorityFence
|
|
13
12
|
} from './actor-session-binding-registry';
|
|
14
13
|
import { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
} from './managed-stream';
|
|
18
|
-
import {
|
|
19
|
-
DefaultZLinkSessionActor,
|
|
20
|
-
DefaultZLinkSessionContext
|
|
21
|
-
} from './session-context';
|
|
14
|
+
import { ZLinkManagedStream } from './managed-stream';
|
|
15
|
+
import { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './session-context';
|
|
22
16
|
|
|
23
17
|
export interface ZLinkSessionActorCoordinatorOptions {
|
|
24
18
|
readonly actorBindTimeoutMs?: number;
|
|
@@ -27,9 +21,11 @@ export interface ZLinkSessionActorCoordinatorOptions {
|
|
|
27
21
|
actorId: string,
|
|
28
22
|
signal?: AbortSignal
|
|
29
23
|
) => Promise<ZLinkActorSessionAuthorityFence | undefined>;
|
|
30
|
-
readonly nativeActorNodeProvider?: () =>
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
readonly nativeActorNodeProvider?: () =>
|
|
25
|
+
| {
|
|
26
|
+
status(): { readonly routingId: unknown };
|
|
27
|
+
}
|
|
28
|
+
| undefined;
|
|
33
29
|
readonly nativeActorMeshNameProvider?: () => string | undefined;
|
|
34
30
|
readonly confirmRemoteActorSessionBinding?: (
|
|
35
31
|
actor: ActorRef,
|
|
@@ -37,15 +33,20 @@ export interface ZLinkSessionActorCoordinatorOptions {
|
|
|
37
33
|
signal?: AbortSignal,
|
|
38
34
|
options?: { readonly waitForAcknowledgement?: boolean }
|
|
39
35
|
) => Promise<void>;
|
|
40
|
-
readonly errorSink?: () =>
|
|
41
|
-
|
|
42
|
-
|
|
36
|
+
readonly errorSink?: () =>
|
|
37
|
+
| {
|
|
38
|
+
reportRuntimeTaskException(taskName: string, error: unknown): void;
|
|
39
|
+
}
|
|
40
|
+
| undefined;
|
|
43
41
|
readonly metrics?: ZLinkRuntimeMetrics;
|
|
44
42
|
}
|
|
45
43
|
|
|
46
44
|
export class ZLinkSessionActorCoordinator {
|
|
47
45
|
constructor(
|
|
48
|
-
private readonly routes: ZLinkActorSessionBindingRegistry<
|
|
46
|
+
private readonly routes: ZLinkActorSessionBindingRegistry<
|
|
47
|
+
DefaultZLinkSessionContext,
|
|
48
|
+
DefaultZLinkSessionActor
|
|
49
|
+
>,
|
|
49
50
|
private readonly sessionActorRuntime: ConstructorParameters<typeof DefaultZLinkSessionActor>[0],
|
|
50
51
|
private readonly options: ZLinkSessionActorCoordinatorOptions = {},
|
|
51
52
|
private readonly lifecycle = new ZLinkActorSessionLifecycleCoordinator()
|
|
@@ -59,7 +60,9 @@ export class ZLinkSessionActorCoordinator {
|
|
|
59
60
|
const actorRef = isActorRefLike(actorOrRef)
|
|
60
61
|
? normalizeActorRef(actorOrRef, this.options.nativeActorMeshNameProvider?.())
|
|
61
62
|
: this.resolveActorRef(actorOrRef as ZLinkActor);
|
|
62
|
-
return await this.lifecycle.run(actorRef.actorId, async () =>
|
|
63
|
+
return await this.lifecycle.run(actorRef.actorId, async () =>
|
|
64
|
+
this.replaceBinding(context, actorRef, signal)
|
|
65
|
+
);
|
|
63
66
|
}
|
|
64
67
|
|
|
65
68
|
private async replaceBinding(
|
|
@@ -101,13 +104,12 @@ export class ZLinkSessionActorCoordinator {
|
|
|
101
104
|
|
|
102
105
|
const previous = await this.routes.route(actorRef.actorId);
|
|
103
106
|
const sameIncarnation =
|
|
104
|
-
previous !== undefined
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
107
|
+
previous !== undefined &&
|
|
108
|
+
previous.context === context &&
|
|
109
|
+
previous.actor.ref.actorId === actorRef.actorId &&
|
|
110
|
+
BigInt(previous.actor.ref.objectGeneration) === BigInt(actorRef.objectGeneration);
|
|
108
111
|
const samePhysicalBinding = sameIncarnation && sameActorRef(previous!.actor.ref, actorRef);
|
|
109
|
-
const reuseActor =
|
|
110
|
-
sameIncarnation ? previous!.actor : undefined;
|
|
112
|
+
const reuseActor = sameIncarnation ? previous!.actor : undefined;
|
|
111
113
|
if (reuseActor !== undefined) {
|
|
112
114
|
// A repeated bind from the same physical session is idempotent. A route
|
|
113
115
|
// refresh for the same actor incarnation still submits the native bind,
|
|
@@ -127,10 +129,10 @@ export class ZLinkSessionActorCoordinator {
|
|
|
127
129
|
: undefined,
|
|
128
130
|
previous?.actor.ref
|
|
129
131
|
);
|
|
130
|
-
const sessionActor =
|
|
131
|
-
??
|
|
132
|
+
const sessionActor =
|
|
133
|
+
reuseActor ??
|
|
134
|
+
new DefaultZLinkSessionActor(this.sessionActorRuntime, boundActorRef, bindingToken);
|
|
132
135
|
const sessionIdentity = String(this.actorBindingRoutingId(context));
|
|
133
|
-
sessionActor.updateRef(boundActorRef);
|
|
134
136
|
if (previous === undefined) {
|
|
135
137
|
if (releaseSeal !== undefined) {
|
|
136
138
|
throw createInternalFrameworkException(
|
|
@@ -139,7 +141,14 @@ export class ZLinkSessionActorCoordinator {
|
|
|
139
141
|
true
|
|
140
142
|
);
|
|
141
143
|
}
|
|
142
|
-
await this.routes.bind(
|
|
144
|
+
await this.routes.bind(
|
|
145
|
+
context,
|
|
146
|
+
sessionActor,
|
|
147
|
+
bindingToken,
|
|
148
|
+
authorityFence,
|
|
149
|
+
sessionIdentity,
|
|
150
|
+
() => sessionActor.updateRef(boundActorRef)
|
|
151
|
+
);
|
|
143
152
|
} else if (releaseSeal !== undefined) {
|
|
144
153
|
await this.routes.replaceAndReleaseSeal(
|
|
145
154
|
previous,
|
|
@@ -148,7 +157,8 @@ export class ZLinkSessionActorCoordinator {
|
|
|
148
157
|
bindingToken,
|
|
149
158
|
releaseSeal.sealId,
|
|
150
159
|
authorityFence,
|
|
151
|
-
sessionIdentity
|
|
160
|
+
sessionIdentity,
|
|
161
|
+
() => sessionActor.updateRef(boundActorRef)
|
|
152
162
|
);
|
|
153
163
|
} else {
|
|
154
164
|
await this.routes.replace(
|
|
@@ -157,12 +167,16 @@ export class ZLinkSessionActorCoordinator {
|
|
|
157
167
|
sessionActor,
|
|
158
168
|
bindingToken,
|
|
159
169
|
authorityFence,
|
|
160
|
-
sessionIdentity
|
|
170
|
+
sessionIdentity,
|
|
171
|
+
() => sessionActor.updateRef(boundActorRef)
|
|
161
172
|
);
|
|
162
173
|
}
|
|
163
|
-
if (
|
|
164
|
-
|
|
165
|
-
|
|
174
|
+
if (
|
|
175
|
+
confirmRemoteSessionBinding !== false &&
|
|
176
|
+
this.options.confirmRemoteActorSessionBinding !== undefined
|
|
177
|
+
) {
|
|
178
|
+
const waitForAcknowledgement =
|
|
179
|
+
previous === undefined && confirmRemoteSessionBinding !== 'send';
|
|
166
180
|
const confirmation = this.options.confirmRemoteActorSessionBinding(
|
|
167
181
|
boundActorRef,
|
|
168
182
|
this.actorBindingRoutingId(context),
|
|
@@ -174,10 +188,9 @@ export class ZLinkSessionActorCoordinator {
|
|
|
174
188
|
// its failure is bounded diagnostics rather than a rollback. The
|
|
175
189
|
// relay retries independently and reports the typed failure through
|
|
176
190
|
// the runtime error sink instead of silently discarding it.
|
|
177
|
-
this.options
|
|
178
|
-
|
|
179
|
-
error
|
|
180
|
-
);
|
|
191
|
+
this.options
|
|
192
|
+
.errorSink?.()
|
|
193
|
+
?.reportRuntimeTaskException('remote session binding confirmation', error);
|
|
181
194
|
};
|
|
182
195
|
if (waitForAcknowledgement) {
|
|
183
196
|
try {
|
|
@@ -227,11 +240,11 @@ export class ZLinkSessionActorCoordinator {
|
|
|
227
240
|
readonly ownerLeaseGeneration?: bigint;
|
|
228
241
|
readonly ownerNodeGeneration?: bigint;
|
|
229
242
|
};
|
|
230
|
-
if (internal.ownershipGeneration !== undefined
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
243
|
+
if (internal.ownershipGeneration !== undefined && internal.ownerLeaseGeneration !== undefined) {
|
|
244
|
+
const resolved =
|
|
245
|
+
internal.ownerNodeGeneration === undefined
|
|
246
|
+
? await this.options.actorAuthorityFenceResolver?.(actorRef.actorId, signal)
|
|
247
|
+
: undefined;
|
|
235
248
|
return {
|
|
236
249
|
authorityOwnerGeneration: internal.ownershipGeneration,
|
|
237
250
|
ownerLeaseGeneration: internal.ownerLeaseGeneration,
|
|
@@ -331,11 +344,10 @@ export class ZLinkSessionActorCoordinator {
|
|
|
331
344
|
requireSameIncarnation(route.actor.ref, normalizedActorRef);
|
|
332
345
|
if (routingIdsEqual(route.actor.ref.nodeRid, normalizedActorRef.nodeRid)) {
|
|
333
346
|
const authorityFence = await this.resolveAuthorityFence(normalizedActorRef, signal);
|
|
334
|
-
if (
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
)) {
|
|
347
|
+
if (
|
|
348
|
+
options.releaseSeal !== undefined &&
|
|
349
|
+
!(await this.routes.validateSeal(normalizedActorRef.actorId, options.releaseSeal.sealId))
|
|
350
|
+
) {
|
|
339
351
|
throw createInternalFrameworkException(
|
|
340
352
|
ZLinkFrameworkInternalErrorKind.ActorLocationStale,
|
|
341
353
|
`Actor '${normalizedActorRef.actorId}' route switch did not match its relocation seal.`,
|
|
@@ -346,11 +358,10 @@ export class ZLinkSessionActorCoordinator {
|
|
|
346
358
|
if (authorityFence !== undefined) {
|
|
347
359
|
await this.routes.updateAuthorityFence(normalizedActorRef.actorId, authorityFence);
|
|
348
360
|
}
|
|
349
|
-
if (
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
)) {
|
|
361
|
+
if (
|
|
362
|
+
options.releaseSeal !== undefined &&
|
|
363
|
+
!(await this.routes.abortSeal(normalizedActorRef.actorId, options.releaseSeal.sealId))
|
|
364
|
+
) {
|
|
354
365
|
throw createInternalFrameworkException(
|
|
355
366
|
ZLinkFrameworkInternalErrorKind.ActorLocationStale,
|
|
356
367
|
`Actor '${normalizedActorRef.actorId}' route switch lost its relocation seal.`,
|
|
@@ -379,10 +390,10 @@ export class ZLinkSessionActorCoordinator {
|
|
|
379
390
|
throwIfAborted(signal);
|
|
380
391
|
const route = await this.routes.route(actorRef.actorId);
|
|
381
392
|
if (
|
|
382
|
-
route === undefined
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
393
|
+
route === undefined ||
|
|
394
|
+
!sameActorRef(route.actor.ref, actorRef) ||
|
|
395
|
+
!routingIdsEqual(route.sessionIdentity, sessionRid) ||
|
|
396
|
+
bindingGenerationOf(route.actor.ref) !== bindingGeneration
|
|
386
397
|
) {
|
|
387
398
|
return false;
|
|
388
399
|
}
|
|
@@ -394,26 +405,29 @@ export class ZLinkSessionActorCoordinator {
|
|
|
394
405
|
});
|
|
395
406
|
}
|
|
396
407
|
|
|
397
|
-
async authorityFence(actorId: string): Promise<
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
408
|
+
async authorityFence(actorId: string): Promise<
|
|
409
|
+
| {
|
|
410
|
+
readonly authorityOwnerGeneration: bigint;
|
|
411
|
+
readonly ownerLeaseGeneration: bigint;
|
|
412
|
+
}
|
|
413
|
+
| undefined
|
|
414
|
+
> {
|
|
401
415
|
return (await this.routes.route(actorId))?.authorityFence;
|
|
402
416
|
}
|
|
403
417
|
|
|
404
|
-
async sessionRouteFence(actorId: string): Promise<
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
418
|
+
async sessionRouteFence(actorId: string): Promise<
|
|
419
|
+
| {
|
|
420
|
+
readonly actor: ActorRef;
|
|
421
|
+
readonly sessionRid: ActorRef['nodeRid'];
|
|
422
|
+
readonly bindingGeneration: bigint;
|
|
423
|
+
}
|
|
424
|
+
| undefined
|
|
425
|
+
> {
|
|
409
426
|
const route = await this.routes.route(actorId);
|
|
410
427
|
const sessionRid = route?.sessionIdentity;
|
|
411
|
-
const actor = route?.actor.ref as
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|| sessionRid === undefined
|
|
415
|
-
|| actor?.bindingGeneration === undefined
|
|
416
|
-
) {
|
|
428
|
+
const actor = route?.actor.ref as
|
|
429
|
+
(ActorRef & { readonly bindingGeneration?: bigint }) | undefined;
|
|
430
|
+
if (route === undefined || sessionRid === undefined || actor?.bindingGeneration === undefined) {
|
|
417
431
|
return undefined;
|
|
418
432
|
}
|
|
419
433
|
return {
|
|
@@ -468,9 +482,8 @@ export class ZLinkSessionActorCoordinator {
|
|
|
468
482
|
private actorBindingRoutingId(context: DefaultZLinkSessionContext): ActorRef['nodeRid'] {
|
|
469
483
|
return context.stream instanceof ZLinkManagedStream
|
|
470
484
|
? context.stream.actorBindingRoutingId
|
|
471
|
-
: context.routingId as ActorRef['nodeRid'];
|
|
485
|
+
: (context.routingId as ActorRef['nodeRid']);
|
|
472
486
|
}
|
|
473
|
-
|
|
474
487
|
}
|
|
475
488
|
|
|
476
489
|
function withBindingGeneration(
|
|
@@ -480,9 +493,8 @@ function withBindingGeneration(
|
|
|
480
493
|
): ActorRef {
|
|
481
494
|
const input = actorRef as ActorRef & { readonly bindingGeneration?: bigint };
|
|
482
495
|
const previous = previousRef as (ActorRef & { readonly bindingGeneration?: bigint }) | undefined;
|
|
483
|
-
const bindingGeneration =
|
|
484
|
-
?? input.bindingGeneration
|
|
485
|
-
?? previous?.bindingGeneration;
|
|
496
|
+
const bindingGeneration =
|
|
497
|
+
nativeBindingGeneration ?? input.bindingGeneration ?? previous?.bindingGeneration;
|
|
486
498
|
if (bindingGeneration === undefined) {
|
|
487
499
|
return actorRef;
|
|
488
500
|
}
|
|
@@ -518,10 +530,12 @@ function preserveInternalActorRefField(
|
|
|
518
530
|
source: ActorRef,
|
|
519
531
|
field: 'ownershipGeneration' | 'ownerLeaseGeneration'
|
|
520
532
|
): void {
|
|
521
|
-
const value = (
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
533
|
+
const value = (
|
|
534
|
+
source as ActorRef & {
|
|
535
|
+
readonly ownershipGeneration?: bigint;
|
|
536
|
+
readonly ownerLeaseGeneration?: bigint;
|
|
537
|
+
}
|
|
538
|
+
)[field];
|
|
525
539
|
if (value === undefined) return;
|
|
526
540
|
Object.defineProperty(target, field, {
|
|
527
541
|
configurable: false,
|
|
@@ -540,10 +554,10 @@ function isActorRefLike(
|
|
|
540
554
|
value: ZLinkActor | ActorRef | CompatibleActorRef
|
|
541
555
|
): value is CompatibleActorRef {
|
|
542
556
|
return (
|
|
543
|
-
typeof value === 'object'
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
557
|
+
typeof value === 'object' &&
|
|
558
|
+
'nodeRid' in value &&
|
|
559
|
+
'actorId' in value &&
|
|
560
|
+
('objectGeneration' in value || 'generation' in value)
|
|
547
561
|
);
|
|
548
562
|
}
|
|
549
563
|
|
|
@@ -584,22 +598,24 @@ function createBindingToken(): string {
|
|
|
584
598
|
}
|
|
585
599
|
|
|
586
600
|
function sameActorRef(left: ActorRef, right: ActorRef): boolean {
|
|
587
|
-
return
|
|
588
|
-
|
|
589
|
-
|
|
601
|
+
return (
|
|
602
|
+
routingIdsEqual(left.nodeRid, right.nodeRid) &&
|
|
603
|
+
left.actorId === right.actorId &&
|
|
604
|
+
BigInt(left.objectGeneration) === BigInt(right.objectGeneration)
|
|
605
|
+
);
|
|
590
606
|
}
|
|
591
607
|
|
|
592
608
|
function requireSameIncarnation(current: ActorRef, updated: ActorRef): void {
|
|
593
609
|
if (
|
|
594
|
-
current.actorId === updated.actorId
|
|
595
|
-
|
|
610
|
+
current.actorId === updated.actorId &&
|
|
611
|
+
BigInt(current.objectGeneration) === BigInt(updated.objectGeneration)
|
|
596
612
|
) {
|
|
597
613
|
return;
|
|
598
614
|
}
|
|
599
615
|
throw createInternalFrameworkException(
|
|
600
616
|
ZLinkFrameworkInternalErrorKind.ActorLocationStale,
|
|
601
|
-
`Actor '${updated.actorId}' route update cannot replace object generation `
|
|
602
|
-
|
|
617
|
+
`Actor '${updated.actorId}' route update cannot replace object generation ` +
|
|
618
|
+
`${String(current.objectGeneration)} with ${String(updated.objectGeneration)}.`,
|
|
603
619
|
true
|
|
604
620
|
);
|
|
605
621
|
}
|
|
@@ -5,9 +5,7 @@ import type {
|
|
|
5
5
|
ZLinkSessionSendCall
|
|
6
6
|
} from '../../contracts';
|
|
7
7
|
import type { ZLinkSubmitResult } from '../messaging/submission-result';
|
|
8
|
-
import {
|
|
9
|
-
requireOneWayCompletion
|
|
10
|
-
} from '../messaging/submission-result';
|
|
8
|
+
import { requireOneWayCompletion } from '../messaging/submission-result';
|
|
11
9
|
import type { Message } from '../../contracts/Common/Message';
|
|
12
10
|
import { throwIfAborted } from '../abort';
|
|
13
11
|
import { ZLinkConfigurationException } from '../configuration';
|
|
@@ -160,11 +158,7 @@ export class DefaultZLinkSessionSendCall implements ZLinkSessionSendCall {
|
|
|
160
158
|
this.message
|
|
161
159
|
);
|
|
162
160
|
try {
|
|
163
|
-
const result = await this.context.stream.submitRaw(
|
|
164
|
-
message,
|
|
165
|
-
signal,
|
|
166
|
-
this.selectedTimeoutMs
|
|
167
|
-
);
|
|
161
|
+
const result = await this.context.stream.submitRaw(message, signal, this.selectedTimeoutMs);
|
|
168
162
|
requireOneWayCompletion(result, 'STREAM session send');
|
|
169
163
|
this.context.traceFrameWritten?.(ZLinkStreamMessageKind.Send, packetName, undefined);
|
|
170
164
|
} finally {
|