@zlink-systems/framework 0.20.0 → 0.22.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/Handlers/JsonContract.js +23 -11
- package/dist/contracts/Spots/SpotKind.js +16 -8
- 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 +24 -18
- package/dist/runtime/actors/actor-creation.js +4 -3
- package/dist/runtime/actors/actor-handoff.js +89 -92
- 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 +158 -124
- 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/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.js +116 -113
- 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 +10 -18
- 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 +43 -33
- 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.js +9 -7
- 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/index.js +38 -10
- package/dist/runtime/diagnostics/message-flow.js +47 -39
- 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 -23
- 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.js +136 -136
- 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-stateful-registry.js +24 -23
- package/dist/runtime/foundation/service-stateful-runtime.js +416 -438
- package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
- package/dist/runtime/foundation/service-topology-registry.js +96 -95
- 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 +244 -227
- 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/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 +208 -219
- 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.js +23 -20
- package/dist/runtime/spots/spot-actor-packet-drain.js +12 -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 +74 -85
- 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 +16 -14
- 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 +1 -2
- 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 +5 -5
- package/dist/runtime/spots/spot-timer.js +25 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +98 -107
- package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +18 -16
- package/dist/runtime/streams/bound-session-service.js +8 -9
- package/dist/runtime/streams/index.js +20 -19
- package/dist/runtime/streams/managed-stream.js +32 -30
- package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
- package/dist/runtime/streams/protocol.js +29 -18
- package/dist/runtime/streams/session-actor-coordinator.js +34 -37
- package/dist/runtime/streams/session-context.js +30 -28
- 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.js +11 -5
- package/dist/runtime/streams/stream-session-runtime.js +70 -66
- package/dist/runtime/workers/index.js +15 -4
- package/package.json +2 -2
- 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 +1 -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 +0 -1
- 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 +138 -130
- 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 +5 -4
- 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 +351 -320
- 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 +73 -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 +335 -383
- 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 +40 -42
- 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 +215 -197
- 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 +11 -8
- 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/flow-context.ts +12 -3
- 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 +95 -76
- 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 -51
- 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 +312 -385
- 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 +1 -4
- package/src/runtime/foundation/service-stateful-registry.ts +69 -59
- package/src/runtime/foundation/service-stateful-runtime.ts +1174 -1112
- package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
- package/src/runtime/foundation/service-topology-registry.ts +157 -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 +1 -1
- 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 +593 -563
- 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 +184 -153
- package/src/runtime/spots/spot-actor-packet-drain.ts +54 -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 +230 -221
- 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 +128 -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 +11 -17
- 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 +56 -46
- package/src/runtime/spots/spot-timer.ts +98 -91
- package/src/runtime/streams/actor-session-binding-registry.ts +277 -235
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +7 -4
- package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
- package/src/runtime/streams/bound-actor-relay-sender.ts +53 -51
- package/src/runtime/streams/bound-session-response-target.ts +29 -8
- package/src/runtime/streams/bound-session-service.ts +39 -39
- package/src/runtime/streams/index.ts +176 -100
- package/src/runtime/streams/managed-stream.ts +98 -87
- package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
- package/src/runtime/streams/protocol.ts +73 -43
- package/src/runtime/streams/session-actor-coordinator.ts +97 -89
- package/src/runtime/streams/session-calls.ts +2 -8
- package/src/runtime/streams/session-context.ts +66 -48
- 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 +55 -38
- package/src/runtime/streams/stream-session-runtime.ts +268 -210
- package/src/runtime/workers/index.ts +68 -29
|
@@ -12,9 +12,7 @@ import type {
|
|
|
12
12
|
} from '../../contracts';
|
|
13
13
|
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
14
14
|
import type { ZLinkSubmitResult } from '../messaging/submission-result';
|
|
15
|
-
import {
|
|
16
|
-
ZLinkMessage
|
|
17
|
-
} from '../../contracts';
|
|
15
|
+
import { ZLinkMessage } from '../../contracts';
|
|
18
16
|
import type { Message } from '../../contracts/Common/Message';
|
|
19
17
|
import {
|
|
20
18
|
buildAdvertisedEndpoint,
|
|
@@ -32,8 +30,7 @@ import type {
|
|
|
32
30
|
} from '../backend/contracts';
|
|
33
31
|
import type { ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
|
|
34
32
|
import type { StreamSessionService } from '../foundation/service-runtime-contracts';
|
|
35
|
-
import { registerServiceSessionBindingIngressPort } from
|
|
36
|
-
'../foundation/service-session-binding-ingress-port';
|
|
33
|
+
import { registerServiceSessionBindingIngressPort } from '../foundation/service-session-binding-ingress-port';
|
|
37
34
|
import {
|
|
38
35
|
messageToBytes,
|
|
39
36
|
ZLinkStreamCodec,
|
|
@@ -69,19 +66,10 @@ import {
|
|
|
69
66
|
DefaultZLinkBoundSessionResponseTarget,
|
|
70
67
|
type ZLinkBoundSessionResponseTarget
|
|
71
68
|
} from './bound-session-response-target';
|
|
72
|
-
import {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
} from './
|
|
76
|
-
import {
|
|
77
|
-
ZLinkSessionActorCoordinator
|
|
78
|
-
} from './session-actor-coordinator';
|
|
79
|
-
import {
|
|
80
|
-
ZLinkBoundActorRelaySender
|
|
81
|
-
} from './bound-actor-relay-sender';
|
|
82
|
-
import {
|
|
83
|
-
ZLinkManagedStream
|
|
84
|
-
} from './managed-stream';
|
|
69
|
+
import { ZLinkBoundSessionService, type ZLinkBoundSessionTransport } from './bound-session-service';
|
|
70
|
+
import { ZLinkSessionActorCoordinator } from './session-actor-coordinator';
|
|
71
|
+
import { ZLinkBoundActorRelaySender } from './bound-actor-relay-sender';
|
|
72
|
+
import { ZLinkManagedStream } from './managed-stream';
|
|
85
73
|
import { createStreamSessionInstance } from './session-provider';
|
|
86
74
|
import { DEFAULT_STREAM_NODE_MAX_MESSAGE_SIZE } from '../../contracts/Configuration/InternalDefaults';
|
|
87
75
|
import {
|
|
@@ -123,19 +111,28 @@ export interface ZLinkStreamBindingRuntimeOptions {
|
|
|
123
111
|
actorId: string,
|
|
124
112
|
signal?: AbortSignal
|
|
125
113
|
) => Promise<ZLinkActorSessionAuthorityFence | undefined>;
|
|
126
|
-
readonly nativeActorNodeProvider?: () =>
|
|
127
|
-
|
|
128
|
-
|
|
114
|
+
readonly nativeActorNodeProvider?: () =>
|
|
115
|
+
| {
|
|
116
|
+
status(): { readonly routingId: unknown };
|
|
117
|
+
}
|
|
118
|
+
| undefined;
|
|
129
119
|
readonly confirmRemoteActorSessionBinding?: (
|
|
130
120
|
actor: ActorRef,
|
|
131
121
|
sessionRid: ActorRef['nodeRid'],
|
|
132
122
|
signal?: AbortSignal,
|
|
133
123
|
options?: { readonly waitForAcknowledgement?: boolean }
|
|
134
124
|
) => Promise<void>;
|
|
135
|
-
readonly errorSink?: () =>
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
125
|
+
readonly errorSink?: () =>
|
|
126
|
+
| {
|
|
127
|
+
reportRuntimeTaskException(taskName: string, error: unknown): void;
|
|
128
|
+
}
|
|
129
|
+
| undefined;
|
|
130
|
+
readonly relay?: (
|
|
131
|
+
actor: ZLinkSessionActor,
|
|
132
|
+
header: ZLinkStreamFrameHeader,
|
|
133
|
+
payload: Message,
|
|
134
|
+
signal?: AbortSignal
|
|
135
|
+
) => Promise<boolean>;
|
|
139
136
|
readonly notifyDisconnected?: (actor: ZLinkSessionActor, signal?: AbortSignal) => Promise<void>;
|
|
140
137
|
readonly flowCreationEnabled?: () => boolean;
|
|
141
138
|
readonly metrics?: import('../diagnostics').ZLinkRuntimeMetrics;
|
|
@@ -155,11 +152,17 @@ export interface ZLinkStreamMessageFactory {
|
|
|
155
152
|
createBinaryMessage?(payload: Uint8Array): Message;
|
|
156
153
|
}
|
|
157
154
|
|
|
158
|
-
export interface ZLinkStreamSessionRuntimeOptions extends Omit<
|
|
155
|
+
export interface ZLinkStreamSessionRuntimeOptions extends Omit<
|
|
156
|
+
ZLinkStreamSessionRuntimeCoreOptions,
|
|
157
|
+
'bindingRuntime'
|
|
158
|
+
> {
|
|
159
159
|
readonly bindingRuntime?: ZLinkStreamBindingRuntime;
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
-
export interface ZLinkStreamSessionNodeRuntimeOptions extends Omit<
|
|
162
|
+
export interface ZLinkStreamSessionNodeRuntimeOptions extends Omit<
|
|
163
|
+
ZLinkStreamSessionNodeRuntimeCoreOptions,
|
|
164
|
+
'bindingRuntime'
|
|
165
|
+
> {
|
|
163
166
|
readonly bindingRuntime?: ZLinkStreamBindingRuntime;
|
|
164
167
|
}
|
|
165
168
|
|
|
@@ -195,8 +198,9 @@ export class ZLinkStreamRuntimeManager {
|
|
|
195
198
|
private readonly applicationJobQueue: ApplicationJobQueue;
|
|
196
199
|
|
|
197
200
|
constructor(private readonly options: ZLinkStreamRuntimeManagerOptions) {
|
|
198
|
-
this.applicationJobQueue =
|
|
199
|
-
??
|
|
201
|
+
this.applicationJobQueue =
|
|
202
|
+
options.applicationJobQueue ??
|
|
203
|
+
new ApplicationJobQueue(resolveApplicationJobQueueConfiguration());
|
|
200
204
|
}
|
|
201
205
|
|
|
202
206
|
start(): void {
|
|
@@ -237,22 +241,24 @@ export class ZLinkStreamRuntimeManager {
|
|
|
237
241
|
);
|
|
238
242
|
}
|
|
239
243
|
const readablePoller = streamAdapter.createReadablePoller(socket);
|
|
240
|
-
const nativeSessionRoutes = new Map<
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
+
const nativeSessionRoutes = new Map<
|
|
245
|
+
string,
|
|
246
|
+
{
|
|
247
|
+
readonly service: StreamSessionService;
|
|
248
|
+
readonly completions: ZLinkMeshCompletionTable;
|
|
249
|
+
}
|
|
250
|
+
>();
|
|
244
251
|
if (actorDispatchEnabled) {
|
|
245
252
|
for (const [meshName, mesh] of this.options.registration.spotNodes) {
|
|
246
253
|
const isPrimaryMesh = meshName === applicationMeshName;
|
|
247
|
-
if (
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
const
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
?? (isPrimaryMesh ? meshCompletions : undefined);
|
|
254
|
+
if (!isPrimaryMesh && mesh.objectRole !== 'client' && mesh.objectRole !== 'server')
|
|
255
|
+
continue;
|
|
256
|
+
const meshNode =
|
|
257
|
+
this.options.nativeMeshNodeForName?.(meshName) ??
|
|
258
|
+
(isPrimaryMesh ? nativeMeshNode : undefined);
|
|
259
|
+
const completions =
|
|
260
|
+
this.options.meshCompletionsForName?.(meshName) ??
|
|
261
|
+
(isPrimaryMesh ? meshCompletions : undefined);
|
|
256
262
|
const createService = meshNode?.createStreamSessionService;
|
|
257
263
|
if (typeof createService !== 'function' || completions === undefined) continue;
|
|
258
264
|
const service = createService.call(meshNode, socket.nativeInstance as never);
|
|
@@ -260,8 +266,7 @@ export class ZLinkStreamRuntimeManager {
|
|
|
260
266
|
registerServiceSessionBindingIngressPort(service, {
|
|
261
267
|
retainOutbound: (claim, delivery) =>
|
|
262
268
|
bindingOwner.admitRelocationOutbound(claim, delivery),
|
|
263
|
-
clearOutbound: (actorId, error) =>
|
|
264
|
-
bindingOwner.clearRelocation(actorId, error)
|
|
269
|
+
clearOutbound: (actorId, error) => bindingOwner.clearRelocation(actorId, error)
|
|
265
270
|
});
|
|
266
271
|
nativeSessionRoutes.set(meshName, {
|
|
267
272
|
service,
|
|
@@ -269,14 +274,16 @@ export class ZLinkStreamRuntimeManager {
|
|
|
269
274
|
});
|
|
270
275
|
}
|
|
271
276
|
}
|
|
272
|
-
const nativeSessionService =
|
|
273
|
-
|
|
274
|
-
|
|
277
|
+
const nativeSessionService =
|
|
278
|
+
applicationMeshName === undefined
|
|
279
|
+
? undefined
|
|
280
|
+
: nativeSessionRoutes.get(applicationMeshName)?.service;
|
|
275
281
|
const monitor = monitoringAdapter.openSocketMonitor(socket);
|
|
276
282
|
const sessionType = streamNode.session!;
|
|
277
|
-
const sessionHandlerTypes =
|
|
278
|
-
streamNode as unknown as Record<symbol, readonly Type[] | undefined>
|
|
279
|
-
|
|
283
|
+
const sessionHandlerTypes =
|
|
284
|
+
(streamNode as unknown as Record<symbol, readonly Type[] | undefined>)[
|
|
285
|
+
Symbol.for('@zlink-systems/framework:session-handler-types')
|
|
286
|
+
] ?? [];
|
|
280
287
|
const runtime = new ZLinkStreamSessionNodeRuntimeCore({
|
|
281
288
|
nodeName,
|
|
282
289
|
socket,
|
|
@@ -285,7 +292,7 @@ export class ZLinkStreamRuntimeManager {
|
|
|
285
292
|
applicationJobQueue: this.applicationJobQueue,
|
|
286
293
|
nativeSessionService,
|
|
287
294
|
meshCompletions,
|
|
288
|
-
nativeSessionRouteForMesh: meshName => nativeSessionRoutes.get(meshName),
|
|
295
|
+
nativeSessionRouteForMesh: (meshName) => nativeSessionRoutes.get(meshName),
|
|
289
296
|
monitor,
|
|
290
297
|
bindingRuntime: this.options.bindingRuntime,
|
|
291
298
|
acceptNewSession: () => this.options.acceptNewSession?.(applicationMeshName) !== false,
|
|
@@ -294,13 +301,14 @@ export class ZLinkStreamRuntimeManager {
|
|
|
294
301
|
providerResolver: this.options.providerResolver,
|
|
295
302
|
messageSerializers: this.options.registration.messageSerializers,
|
|
296
303
|
replacementCallbackTimeoutMs: this.options.registration.sessionReplacementCallbackTimeoutMs,
|
|
297
|
-
sessionFactory: (context) =>
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
+
sessionFactory: (context) =>
|
|
305
|
+
createStreamSessionInstance(
|
|
306
|
+
sessionType as Type<ZLinkSession> | Type<ZLinkSessionFactory>,
|
|
307
|
+
this.options.providerResolver,
|
|
308
|
+
context,
|
|
309
|
+
sessionHandlerTypes
|
|
310
|
+
)
|
|
311
|
+
});
|
|
304
312
|
runtime.start();
|
|
305
313
|
this.nodes.set(nodeName, {
|
|
306
314
|
meshName: applicationMeshName,
|
|
@@ -309,7 +317,7 @@ export class ZLinkStreamRuntimeManager {
|
|
|
309
317
|
socket,
|
|
310
318
|
monitor,
|
|
311
319
|
nativeSessionService,
|
|
312
|
-
nativeSessionServices: [...nativeSessionRoutes.values()].map(route => route.service)
|
|
320
|
+
nativeSessionServices: [...nativeSessionRoutes.values()].map((route) => route.service)
|
|
313
321
|
});
|
|
314
322
|
}
|
|
315
323
|
}
|
|
@@ -319,8 +327,9 @@ export class ZLinkStreamRuntimeManager {
|
|
|
319
327
|
this.nodes.clear();
|
|
320
328
|
for (const node of nodes.reverse()) {
|
|
321
329
|
await node.runtime.dispose();
|
|
322
|
-
const nativeServices =
|
|
323
|
-
|
|
330
|
+
const nativeServices =
|
|
331
|
+
node.nativeSessionServices ??
|
|
332
|
+
(node.nativeSessionService === undefined ? [] : [node.nativeSessionService]);
|
|
324
333
|
for (const service of nativeServices) {
|
|
325
334
|
service.shutdown(1000);
|
|
326
335
|
service.close();
|
|
@@ -331,17 +340,20 @@ export class ZLinkStreamRuntimeManager {
|
|
|
331
340
|
}
|
|
332
341
|
|
|
333
342
|
async notifyServerDrain(meshName: string): Promise<void> {
|
|
334
|
-
await Promise.all(
|
|
335
|
-
.
|
|
336
|
-
|
|
343
|
+
await Promise.all(
|
|
344
|
+
[...this.nodes.values()]
|
|
345
|
+
.filter((node) => node.meshName === meshName)
|
|
346
|
+
.map((node) => node.runtime.drainCloseSessions())
|
|
347
|
+
);
|
|
337
348
|
}
|
|
338
349
|
|
|
339
350
|
async notifyUnscopedServerDrain(): Promise<void> {
|
|
340
|
-
await Promise.all(
|
|
341
|
-
.
|
|
342
|
-
|
|
351
|
+
await Promise.all(
|
|
352
|
+
[...this.nodes.values()]
|
|
353
|
+
.filter((node) => node.meshName === undefined)
|
|
354
|
+
.map((node) => node.runtime.drainCloseSessions())
|
|
355
|
+
);
|
|
343
356
|
}
|
|
344
|
-
|
|
345
357
|
}
|
|
346
358
|
|
|
347
359
|
export class ZLinkStreamSessionRuntime extends ZLinkStreamSessionRuntimeCore {
|
|
@@ -353,9 +365,11 @@ export class ZLinkStreamSessionRuntime extends ZLinkStreamSessionRuntimeCore {
|
|
|
353
365
|
// Spec 27 §4: a default-constructed binding runtime must still honor the
|
|
354
366
|
// process diagnostics level, so wire its Off gate to the runtime's
|
|
355
367
|
// dispatch-error flow tracer.
|
|
356
|
-
const bindingRuntime =
|
|
357
|
-
|
|
358
|
-
|
|
368
|
+
const bindingRuntime =
|
|
369
|
+
options.bindingRuntime ??
|
|
370
|
+
new ZLinkStreamBindingRuntime({
|
|
371
|
+
flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
|
|
372
|
+
});
|
|
359
373
|
super(
|
|
360
374
|
{
|
|
361
375
|
...options,
|
|
@@ -364,7 +378,8 @@ export class ZLinkStreamSessionRuntime extends ZLinkStreamSessionRuntimeCore {
|
|
|
364
378
|
routingId,
|
|
365
379
|
removeSession === undefined
|
|
366
380
|
? undefined
|
|
367
|
-
: (sessionId, session) =>
|
|
381
|
+
: (sessionId, session) =>
|
|
382
|
+
removeSession(sessionId, session as unknown as ZLinkStreamSessionRuntime)
|
|
368
383
|
);
|
|
369
384
|
}
|
|
370
385
|
}
|
|
@@ -373,9 +388,11 @@ export class ZLinkStreamSessionNodeRuntime extends ZLinkStreamSessionNodeRuntime
|
|
|
373
388
|
constructor(options: ZLinkStreamSessionNodeRuntimeOptions) {
|
|
374
389
|
// Spec 27 §4: keep the default binding runtime's flow creation behind the
|
|
375
390
|
// process diagnostics Off gate (see ZLinkStreamSessionRuntime above).
|
|
376
|
-
const bindingRuntime =
|
|
377
|
-
|
|
378
|
-
|
|
391
|
+
const bindingRuntime =
|
|
392
|
+
options.bindingRuntime ??
|
|
393
|
+
new ZLinkStreamBindingRuntime({
|
|
394
|
+
flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
|
|
395
|
+
});
|
|
379
396
|
super({
|
|
380
397
|
...options,
|
|
381
398
|
bindingRuntime
|
|
@@ -384,7 +401,10 @@ export class ZLinkStreamSessionNodeRuntime extends ZLinkStreamSessionNodeRuntime
|
|
|
384
401
|
}
|
|
385
402
|
|
|
386
403
|
export class ZLinkStreamBindingRuntime {
|
|
387
|
-
private readonly routes: ZLinkActorSessionBindingRegistry<
|
|
404
|
+
private readonly routes: ZLinkActorSessionBindingRegistry<
|
|
405
|
+
DefaultZLinkSessionContext,
|
|
406
|
+
DefaultZLinkSessionActor
|
|
407
|
+
>;
|
|
388
408
|
private readonly frameMessages: ZLinkStreamFrameMessageFactory;
|
|
389
409
|
private readonly compressionCodec: ZLinkStreamCompressionCodec | undefined;
|
|
390
410
|
private readonly boundSessions: ZLinkBoundSessionService;
|
|
@@ -396,14 +416,17 @@ export class ZLinkStreamBindingRuntime {
|
|
|
396
416
|
...options,
|
|
397
417
|
actorBindTimeoutMs: options.actorBindTimeoutMs ?? DEFAULT_ACTOR_BIND_TIMEOUT_MS
|
|
398
418
|
};
|
|
399
|
-
this.routes = new ZLinkActorSessionBindingRegistry<
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
);
|
|
419
|
+
this.routes = new ZLinkActorSessionBindingRegistry<
|
|
420
|
+
DefaultZLinkSessionContext,
|
|
421
|
+
DefaultZLinkSessionActor
|
|
422
|
+
>(4096, 4096, runtimeOptions.sessionRelocationSealTimeoutMs ?? 3_000);
|
|
404
423
|
this.compressionCodec = resolveStreamCompressionCodec(runtimeOptions.streamCompression);
|
|
405
424
|
this.frameMessages = new ZLinkStreamFrameMessageFactory(runtimeOptions);
|
|
406
|
-
this.boundSessions = new ZLinkBoundSessionService(
|
|
425
|
+
this.boundSessions = new ZLinkBoundSessionService(
|
|
426
|
+
this.routes,
|
|
427
|
+
this.frameMessages,
|
|
428
|
+
runtimeOptions
|
|
429
|
+
);
|
|
407
430
|
const actorSessionLifecycle = new ZLinkActorSessionLifecycleCoordinator();
|
|
408
431
|
this.sessionActors = new ZLinkSessionActorCoordinator(
|
|
409
432
|
this.routes,
|
|
@@ -420,8 +443,7 @@ export class ZLinkStreamBindingRuntime {
|
|
|
420
443
|
registerActorSessionBindingRuntimeOwner(this, {
|
|
421
444
|
sealRelocation: (claim, expected, signal) =>
|
|
422
445
|
this.routes.sealRelocation(claim, expected, signal),
|
|
423
|
-
relocationSnapshot: (actorId, sealId) =>
|
|
424
|
-
this.routes.relocationSnapshot(actorId, sealId),
|
|
446
|
+
relocationSnapshot: (actorId, sealId) => this.routes.relocationSnapshot(actorId, sealId),
|
|
425
447
|
retainRelocationOutbound: (actorId, operation, sealId) =>
|
|
426
448
|
this.routes.retainRelocationOutbound(actorId, operation, sealId),
|
|
427
449
|
admitRelocationOutbound: (claim, operation) =>
|
|
@@ -431,7 +453,7 @@ export class ZLinkStreamBindingRuntime {
|
|
|
431
453
|
applyRelocation: (...args) => this.routes.applyRelocation(...args),
|
|
432
454
|
observeRelocationTerminal: (...args) => this.routes.observeRelocationTerminal(...args),
|
|
433
455
|
clearRelocation: (actorId, error) => this.routes.clearRelocation(actorId, error),
|
|
434
|
-
committedRoute: async actorId => {
|
|
456
|
+
committedRoute: async (actorId) => {
|
|
435
457
|
const route = await this.routes.route(actorId);
|
|
436
458
|
return route === undefined
|
|
437
459
|
? undefined
|
|
@@ -527,10 +549,13 @@ export class ZLinkStreamBindingRuntime {
|
|
|
527
549
|
);
|
|
528
550
|
}
|
|
529
551
|
|
|
530
|
-
async authorityFence(actorId: string): Promise<
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
552
|
+
async authorityFence(actorId: string): Promise<
|
|
553
|
+
| {
|
|
554
|
+
readonly authorityOwnerGeneration: bigint;
|
|
555
|
+
readonly ownerLeaseGeneration: bigint;
|
|
556
|
+
}
|
|
557
|
+
| undefined
|
|
558
|
+
> {
|
|
534
559
|
return await this.sessionActors.authorityFence(actorId);
|
|
535
560
|
}
|
|
536
561
|
|
|
@@ -546,7 +571,11 @@ export class ZLinkStreamBindingRuntime {
|
|
|
546
571
|
return await this.routes.validateSeal(actorId, sealId);
|
|
547
572
|
}
|
|
548
573
|
|
|
549
|
-
async unbind(
|
|
574
|
+
async unbind(
|
|
575
|
+
actorId: string,
|
|
576
|
+
context: DefaultZLinkSessionContext,
|
|
577
|
+
bindingToken: string
|
|
578
|
+
): Promise<void> {
|
|
550
579
|
await this.routes.unbind(actorId, context, bindingToken);
|
|
551
580
|
}
|
|
552
581
|
|
|
@@ -565,7 +594,13 @@ export class ZLinkStreamBindingRuntime {
|
|
|
565
594
|
metadata: ReadonlyMap<string, string>,
|
|
566
595
|
signal?: AbortSignal
|
|
567
596
|
): Promise<ZLinkSubmitResult> {
|
|
568
|
-
return await this.boundSessions.sendBoundSession(
|
|
597
|
+
return await this.boundSessions.sendBoundSession(
|
|
598
|
+
actorId,
|
|
599
|
+
message,
|
|
600
|
+
packetName,
|
|
601
|
+
metadata,
|
|
602
|
+
signal
|
|
603
|
+
);
|
|
569
604
|
}
|
|
570
605
|
|
|
571
606
|
async submitLocalBoundSession(
|
|
@@ -575,7 +610,13 @@ export class ZLinkStreamBindingRuntime {
|
|
|
575
610
|
metadata: ReadonlyMap<string, string>,
|
|
576
611
|
signal?: AbortSignal
|
|
577
612
|
): Promise<ZLinkSubmitResult> {
|
|
578
|
-
return await this.boundSessions.submitLocalBoundSession(
|
|
613
|
+
return await this.boundSessions.submitLocalBoundSession(
|
|
614
|
+
actorId,
|
|
615
|
+
message,
|
|
616
|
+
packetName,
|
|
617
|
+
metadata,
|
|
618
|
+
signal
|
|
619
|
+
);
|
|
579
620
|
}
|
|
580
621
|
|
|
581
622
|
async sendLocalBoundSession(
|
|
@@ -612,10 +653,15 @@ export class ZLinkStreamBindingRuntime {
|
|
|
612
653
|
error: unknown,
|
|
613
654
|
metadata: ReadonlyMap<string, string>
|
|
614
655
|
): Promise<boolean> {
|
|
615
|
-
return await this.boundSessions.sendLocalBoundSessionError(
|
|
656
|
+
return await this.boundSessions.sendLocalBoundSessionError(
|
|
657
|
+
actorId,
|
|
658
|
+
packetName,
|
|
659
|
+
requestSeq,
|
|
660
|
+
error,
|
|
661
|
+
metadata
|
|
662
|
+
);
|
|
616
663
|
}
|
|
617
664
|
|
|
618
|
-
|
|
619
665
|
async sendNativeBoundSession(
|
|
620
666
|
node: ZLinkBackendActorSessionNode,
|
|
621
667
|
actorRef: ActorRef,
|
|
@@ -624,7 +670,14 @@ export class ZLinkStreamBindingRuntime {
|
|
|
624
670
|
metadata: ReadonlyMap<string, string>,
|
|
625
671
|
signal?: AbortSignal
|
|
626
672
|
): Promise<ZLinkSubmitResult> {
|
|
627
|
-
return await this.boundSessions.sendNativeBoundSession(
|
|
673
|
+
return await this.boundSessions.sendNativeBoundSession(
|
|
674
|
+
node,
|
|
675
|
+
actorRef,
|
|
676
|
+
message,
|
|
677
|
+
packetName,
|
|
678
|
+
metadata,
|
|
679
|
+
signal
|
|
680
|
+
);
|
|
628
681
|
}
|
|
629
682
|
|
|
630
683
|
async sendNativeBoundSessionResponse(
|
|
@@ -658,7 +711,15 @@ export class ZLinkStreamBindingRuntime {
|
|
|
658
711
|
metadata: ReadonlyMap<string, string>,
|
|
659
712
|
signal?: AbortSignal
|
|
660
713
|
): Promise<void> {
|
|
661
|
-
await this.boundSessions.sendNativeBoundSessionError(
|
|
714
|
+
await this.boundSessions.sendNativeBoundSessionError(
|
|
715
|
+
node,
|
|
716
|
+
actorRef,
|
|
717
|
+
packetName,
|
|
718
|
+
requestSeq,
|
|
719
|
+
error,
|
|
720
|
+
metadata,
|
|
721
|
+
signal
|
|
722
|
+
);
|
|
662
723
|
}
|
|
663
724
|
|
|
664
725
|
async disconnectNativeBoundSession(
|
|
@@ -695,7 +756,9 @@ export class ZLinkStreamBindingRuntime {
|
|
|
695
756
|
}
|
|
696
757
|
|
|
697
758
|
decompressPayload(payload: Message): Message {
|
|
698
|
-
return simpleMessage(
|
|
759
|
+
return simpleMessage(
|
|
760
|
+
decompressStreamPayload(messageToBytes(payload), this.compressionCodec)
|
|
761
|
+
) as Message;
|
|
699
762
|
}
|
|
700
763
|
|
|
701
764
|
createJsonFrameMessage(
|
|
@@ -707,7 +770,15 @@ export class ZLinkStreamBindingRuntime {
|
|
|
707
770
|
payload: unknown,
|
|
708
771
|
correlationId?: string
|
|
709
772
|
): Message {
|
|
710
|
-
return this.frameMessages.createJsonFrameMessage(
|
|
773
|
+
return this.frameMessages.createJsonFrameMessage(
|
|
774
|
+
kind,
|
|
775
|
+
packetName,
|
|
776
|
+
metadata,
|
|
777
|
+
compressed,
|
|
778
|
+
requestSeq,
|
|
779
|
+
payload,
|
|
780
|
+
correlationId
|
|
781
|
+
);
|
|
711
782
|
}
|
|
712
783
|
|
|
713
784
|
createJsonReplyFrameMessage(
|
|
@@ -717,7 +788,12 @@ export class ZLinkStreamBindingRuntime {
|
|
|
717
788
|
compressed: boolean,
|
|
718
789
|
payload: unknown
|
|
719
790
|
): Message {
|
|
720
|
-
return this.frameMessages.createJsonReplyFrameMessage(
|
|
791
|
+
return this.frameMessages.createJsonReplyFrameMessage(
|
|
792
|
+
requestHeader,
|
|
793
|
+
kind,
|
|
794
|
+
metadata,
|
|
795
|
+
compressed,
|
|
796
|
+
payload
|
|
797
|
+
);
|
|
721
798
|
}
|
|
722
|
-
|
|
723
799
|
}
|