@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
|
@@ -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,31 +241,33 @@ 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);
|
|
259
265
|
const bindingOwner = actorSessionBindingRuntimeOwner(this.options.bindingRuntime);
|
|
260
266
|
registerServiceSessionBindingIngressPort(service, {
|
|
267
|
+
actorSlot: (actorId, sessionRid) => bindingOwner.actorSlot(actorId, sessionRid),
|
|
261
268
|
retainOutbound: (claim, delivery) =>
|
|
262
269
|
bindingOwner.admitRelocationOutbound(claim, delivery),
|
|
263
|
-
clearOutbound: (actorId, error) =>
|
|
264
|
-
bindingOwner.clearRelocation(actorId, error)
|
|
270
|
+
clearOutbound: (actorId, error) => bindingOwner.clearRelocation(actorId, error)
|
|
265
271
|
});
|
|
266
272
|
nativeSessionRoutes.set(meshName, {
|
|
267
273
|
service,
|
|
@@ -269,14 +275,16 @@ export class ZLinkStreamRuntimeManager {
|
|
|
269
275
|
});
|
|
270
276
|
}
|
|
271
277
|
}
|
|
272
|
-
const nativeSessionService =
|
|
273
|
-
|
|
274
|
-
|
|
278
|
+
const nativeSessionService =
|
|
279
|
+
applicationMeshName === undefined
|
|
280
|
+
? undefined
|
|
281
|
+
: nativeSessionRoutes.get(applicationMeshName)?.service;
|
|
275
282
|
const monitor = monitoringAdapter.openSocketMonitor(socket);
|
|
276
283
|
const sessionType = streamNode.session!;
|
|
277
|
-
const sessionHandlerTypes =
|
|
278
|
-
streamNode as unknown as Record<symbol, readonly Type[] | undefined>
|
|
279
|
-
|
|
284
|
+
const sessionHandlerTypes =
|
|
285
|
+
(streamNode as unknown as Record<symbol, readonly Type[] | undefined>)[
|
|
286
|
+
Symbol.for('@zlink-systems/framework:session-handler-types')
|
|
287
|
+
] ?? [];
|
|
280
288
|
const runtime = new ZLinkStreamSessionNodeRuntimeCore({
|
|
281
289
|
nodeName,
|
|
282
290
|
socket,
|
|
@@ -285,7 +293,7 @@ export class ZLinkStreamRuntimeManager {
|
|
|
285
293
|
applicationJobQueue: this.applicationJobQueue,
|
|
286
294
|
nativeSessionService,
|
|
287
295
|
meshCompletions,
|
|
288
|
-
nativeSessionRouteForMesh: meshName => nativeSessionRoutes.get(meshName),
|
|
296
|
+
nativeSessionRouteForMesh: (meshName) => nativeSessionRoutes.get(meshName),
|
|
289
297
|
monitor,
|
|
290
298
|
bindingRuntime: this.options.bindingRuntime,
|
|
291
299
|
acceptNewSession: () => this.options.acceptNewSession?.(applicationMeshName) !== false,
|
|
@@ -294,13 +302,14 @@ export class ZLinkStreamRuntimeManager {
|
|
|
294
302
|
providerResolver: this.options.providerResolver,
|
|
295
303
|
messageSerializers: this.options.registration.messageSerializers,
|
|
296
304
|
replacementCallbackTimeoutMs: this.options.registration.sessionReplacementCallbackTimeoutMs,
|
|
297
|
-
sessionFactory: (context) =>
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
305
|
+
sessionFactory: (context) =>
|
|
306
|
+
createStreamSessionInstance(
|
|
307
|
+
sessionType as Type<ZLinkSession> | Type<ZLinkSessionFactory>,
|
|
308
|
+
this.options.providerResolver,
|
|
309
|
+
context,
|
|
310
|
+
sessionHandlerTypes
|
|
311
|
+
)
|
|
312
|
+
});
|
|
304
313
|
runtime.start();
|
|
305
314
|
this.nodes.set(nodeName, {
|
|
306
315
|
meshName: applicationMeshName,
|
|
@@ -309,7 +318,7 @@ export class ZLinkStreamRuntimeManager {
|
|
|
309
318
|
socket,
|
|
310
319
|
monitor,
|
|
311
320
|
nativeSessionService,
|
|
312
|
-
nativeSessionServices: [...nativeSessionRoutes.values()].map(route => route.service)
|
|
321
|
+
nativeSessionServices: [...nativeSessionRoutes.values()].map((route) => route.service)
|
|
313
322
|
});
|
|
314
323
|
}
|
|
315
324
|
}
|
|
@@ -319,8 +328,9 @@ export class ZLinkStreamRuntimeManager {
|
|
|
319
328
|
this.nodes.clear();
|
|
320
329
|
for (const node of nodes.reverse()) {
|
|
321
330
|
await node.runtime.dispose();
|
|
322
|
-
const nativeServices =
|
|
323
|
-
|
|
331
|
+
const nativeServices =
|
|
332
|
+
node.nativeSessionServices ??
|
|
333
|
+
(node.nativeSessionService === undefined ? [] : [node.nativeSessionService]);
|
|
324
334
|
for (const service of nativeServices) {
|
|
325
335
|
service.shutdown(1000);
|
|
326
336
|
service.close();
|
|
@@ -331,17 +341,20 @@ export class ZLinkStreamRuntimeManager {
|
|
|
331
341
|
}
|
|
332
342
|
|
|
333
343
|
async notifyServerDrain(meshName: string): Promise<void> {
|
|
334
|
-
await Promise.all(
|
|
335
|
-
.
|
|
336
|
-
|
|
344
|
+
await Promise.all(
|
|
345
|
+
[...this.nodes.values()]
|
|
346
|
+
.filter((node) => node.meshName === meshName)
|
|
347
|
+
.map((node) => node.runtime.drainCloseSessions())
|
|
348
|
+
);
|
|
337
349
|
}
|
|
338
350
|
|
|
339
351
|
async notifyUnscopedServerDrain(): Promise<void> {
|
|
340
|
-
await Promise.all(
|
|
341
|
-
.
|
|
342
|
-
|
|
352
|
+
await Promise.all(
|
|
353
|
+
[...this.nodes.values()]
|
|
354
|
+
.filter((node) => node.meshName === undefined)
|
|
355
|
+
.map((node) => node.runtime.drainCloseSessions())
|
|
356
|
+
);
|
|
343
357
|
}
|
|
344
|
-
|
|
345
358
|
}
|
|
346
359
|
|
|
347
360
|
export class ZLinkStreamSessionRuntime extends ZLinkStreamSessionRuntimeCore {
|
|
@@ -353,9 +366,11 @@ export class ZLinkStreamSessionRuntime extends ZLinkStreamSessionRuntimeCore {
|
|
|
353
366
|
// Spec 27 §4: a default-constructed binding runtime must still honor the
|
|
354
367
|
// process diagnostics level, so wire its Off gate to the runtime's
|
|
355
368
|
// dispatch-error flow tracer.
|
|
356
|
-
const bindingRuntime =
|
|
357
|
-
|
|
358
|
-
|
|
369
|
+
const bindingRuntime =
|
|
370
|
+
options.bindingRuntime ??
|
|
371
|
+
new ZLinkStreamBindingRuntime({
|
|
372
|
+
flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
|
|
373
|
+
});
|
|
359
374
|
super(
|
|
360
375
|
{
|
|
361
376
|
...options,
|
|
@@ -364,7 +379,8 @@ export class ZLinkStreamSessionRuntime extends ZLinkStreamSessionRuntimeCore {
|
|
|
364
379
|
routingId,
|
|
365
380
|
removeSession === undefined
|
|
366
381
|
? undefined
|
|
367
|
-
: (sessionId, session) =>
|
|
382
|
+
: (sessionId, session) =>
|
|
383
|
+
removeSession(sessionId, session as unknown as ZLinkStreamSessionRuntime)
|
|
368
384
|
);
|
|
369
385
|
}
|
|
370
386
|
}
|
|
@@ -373,9 +389,11 @@ export class ZLinkStreamSessionNodeRuntime extends ZLinkStreamSessionNodeRuntime
|
|
|
373
389
|
constructor(options: ZLinkStreamSessionNodeRuntimeOptions) {
|
|
374
390
|
// Spec 27 §4: keep the default binding runtime's flow creation behind the
|
|
375
391
|
// process diagnostics Off gate (see ZLinkStreamSessionRuntime above).
|
|
376
|
-
const bindingRuntime =
|
|
377
|
-
|
|
378
|
-
|
|
392
|
+
const bindingRuntime =
|
|
393
|
+
options.bindingRuntime ??
|
|
394
|
+
new ZLinkStreamBindingRuntime({
|
|
395
|
+
flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
|
|
396
|
+
});
|
|
379
397
|
super({
|
|
380
398
|
...options,
|
|
381
399
|
bindingRuntime
|
|
@@ -384,7 +402,10 @@ export class ZLinkStreamSessionNodeRuntime extends ZLinkStreamSessionNodeRuntime
|
|
|
384
402
|
}
|
|
385
403
|
|
|
386
404
|
export class ZLinkStreamBindingRuntime {
|
|
387
|
-
private readonly routes: ZLinkActorSessionBindingRegistry<
|
|
405
|
+
private readonly routes: ZLinkActorSessionBindingRegistry<
|
|
406
|
+
DefaultZLinkSessionContext,
|
|
407
|
+
DefaultZLinkSessionActor
|
|
408
|
+
>;
|
|
388
409
|
private readonly frameMessages: ZLinkStreamFrameMessageFactory;
|
|
389
410
|
private readonly compressionCodec: ZLinkStreamCompressionCodec | undefined;
|
|
390
411
|
private readonly boundSessions: ZLinkBoundSessionService;
|
|
@@ -396,14 +417,17 @@ export class ZLinkStreamBindingRuntime {
|
|
|
396
417
|
...options,
|
|
397
418
|
actorBindTimeoutMs: options.actorBindTimeoutMs ?? DEFAULT_ACTOR_BIND_TIMEOUT_MS
|
|
398
419
|
};
|
|
399
|
-
this.routes = new ZLinkActorSessionBindingRegistry<
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
);
|
|
420
|
+
this.routes = new ZLinkActorSessionBindingRegistry<
|
|
421
|
+
DefaultZLinkSessionContext,
|
|
422
|
+
DefaultZLinkSessionActor
|
|
423
|
+
>(4096, 4096, runtimeOptions.sessionRelocationSealTimeoutMs ?? 3_000, runtimeOptions.errorSink);
|
|
404
424
|
this.compressionCodec = resolveStreamCompressionCodec(runtimeOptions.streamCompression);
|
|
405
425
|
this.frameMessages = new ZLinkStreamFrameMessageFactory(runtimeOptions);
|
|
406
|
-
this.boundSessions = new ZLinkBoundSessionService(
|
|
426
|
+
this.boundSessions = new ZLinkBoundSessionService(
|
|
427
|
+
this.routes,
|
|
428
|
+
this.frameMessages,
|
|
429
|
+
runtimeOptions
|
|
430
|
+
);
|
|
407
431
|
const actorSessionLifecycle = new ZLinkActorSessionLifecycleCoordinator();
|
|
408
432
|
this.sessionActors = new ZLinkSessionActorCoordinator(
|
|
409
433
|
this.routes,
|
|
@@ -418,10 +442,15 @@ export class ZLinkStreamBindingRuntime {
|
|
|
418
442
|
actorSessionLifecycle
|
|
419
443
|
);
|
|
420
444
|
registerActorSessionBindingRuntimeOwner(this, {
|
|
445
|
+
actorSlot: async (actorId, sessionRid) => {
|
|
446
|
+
const route = await this.routes.route(actorId);
|
|
447
|
+
return route !== undefined && route.sessionIdentity === sessionRid
|
|
448
|
+
? route.actorSlot
|
|
449
|
+
: undefined;
|
|
450
|
+
},
|
|
421
451
|
sealRelocation: (claim, expected, signal) =>
|
|
422
452
|
this.routes.sealRelocation(claim, expected, signal),
|
|
423
|
-
relocationSnapshot: (actorId, sealId) =>
|
|
424
|
-
this.routes.relocationSnapshot(actorId, sealId),
|
|
453
|
+
relocationSnapshot: (actorId, sealId) => this.routes.relocationSnapshot(actorId, sealId),
|
|
425
454
|
retainRelocationOutbound: (actorId, operation, sealId) =>
|
|
426
455
|
this.routes.retainRelocationOutbound(actorId, operation, sealId),
|
|
427
456
|
admitRelocationOutbound: (claim, operation) =>
|
|
@@ -431,7 +460,7 @@ export class ZLinkStreamBindingRuntime {
|
|
|
431
460
|
applyRelocation: (...args) => this.routes.applyRelocation(...args),
|
|
432
461
|
observeRelocationTerminal: (...args) => this.routes.observeRelocationTerminal(...args),
|
|
433
462
|
clearRelocation: (actorId, error) => this.routes.clearRelocation(actorId, error),
|
|
434
|
-
committedRoute: async actorId => {
|
|
463
|
+
committedRoute: async (actorId) => {
|
|
435
464
|
const route = await this.routes.route(actorId);
|
|
436
465
|
return route === undefined
|
|
437
466
|
? undefined
|
|
@@ -527,10 +556,13 @@ export class ZLinkStreamBindingRuntime {
|
|
|
527
556
|
);
|
|
528
557
|
}
|
|
529
558
|
|
|
530
|
-
async authorityFence(actorId: string): Promise<
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
559
|
+
async authorityFence(actorId: string): Promise<
|
|
560
|
+
| {
|
|
561
|
+
readonly authorityOwnerGeneration: bigint;
|
|
562
|
+
readonly ownerLeaseGeneration: bigint;
|
|
563
|
+
}
|
|
564
|
+
| undefined
|
|
565
|
+
> {
|
|
534
566
|
return await this.sessionActors.authorityFence(actorId);
|
|
535
567
|
}
|
|
536
568
|
|
|
@@ -546,7 +578,11 @@ export class ZLinkStreamBindingRuntime {
|
|
|
546
578
|
return await this.routes.validateSeal(actorId, sealId);
|
|
547
579
|
}
|
|
548
580
|
|
|
549
|
-
async unbind(
|
|
581
|
+
async unbind(
|
|
582
|
+
actorId: string,
|
|
583
|
+
context: DefaultZLinkSessionContext,
|
|
584
|
+
bindingToken: string
|
|
585
|
+
): Promise<void> {
|
|
550
586
|
await this.routes.unbind(actorId, context, bindingToken);
|
|
551
587
|
}
|
|
552
588
|
|
|
@@ -565,7 +601,13 @@ export class ZLinkStreamBindingRuntime {
|
|
|
565
601
|
metadata: ReadonlyMap<string, string>,
|
|
566
602
|
signal?: AbortSignal
|
|
567
603
|
): Promise<ZLinkSubmitResult> {
|
|
568
|
-
return await this.boundSessions.sendBoundSession(
|
|
604
|
+
return await this.boundSessions.sendBoundSession(
|
|
605
|
+
actorId,
|
|
606
|
+
message,
|
|
607
|
+
packetName,
|
|
608
|
+
metadata,
|
|
609
|
+
signal
|
|
610
|
+
);
|
|
569
611
|
}
|
|
570
612
|
|
|
571
613
|
async submitLocalBoundSession(
|
|
@@ -575,7 +617,13 @@ export class ZLinkStreamBindingRuntime {
|
|
|
575
617
|
metadata: ReadonlyMap<string, string>,
|
|
576
618
|
signal?: AbortSignal
|
|
577
619
|
): Promise<ZLinkSubmitResult> {
|
|
578
|
-
return await this.boundSessions.submitLocalBoundSession(
|
|
620
|
+
return await this.boundSessions.submitLocalBoundSession(
|
|
621
|
+
actorId,
|
|
622
|
+
message,
|
|
623
|
+
packetName,
|
|
624
|
+
metadata,
|
|
625
|
+
signal
|
|
626
|
+
);
|
|
579
627
|
}
|
|
580
628
|
|
|
581
629
|
async sendLocalBoundSession(
|
|
@@ -612,10 +660,15 @@ export class ZLinkStreamBindingRuntime {
|
|
|
612
660
|
error: unknown,
|
|
613
661
|
metadata: ReadonlyMap<string, string>
|
|
614
662
|
): Promise<boolean> {
|
|
615
|
-
return await this.boundSessions.sendLocalBoundSessionError(
|
|
663
|
+
return await this.boundSessions.sendLocalBoundSessionError(
|
|
664
|
+
actorId,
|
|
665
|
+
packetName,
|
|
666
|
+
requestSeq,
|
|
667
|
+
error,
|
|
668
|
+
metadata
|
|
669
|
+
);
|
|
616
670
|
}
|
|
617
671
|
|
|
618
|
-
|
|
619
672
|
async sendNativeBoundSession(
|
|
620
673
|
node: ZLinkBackendActorSessionNode,
|
|
621
674
|
actorRef: ActorRef,
|
|
@@ -624,7 +677,14 @@ export class ZLinkStreamBindingRuntime {
|
|
|
624
677
|
metadata: ReadonlyMap<string, string>,
|
|
625
678
|
signal?: AbortSignal
|
|
626
679
|
): Promise<ZLinkSubmitResult> {
|
|
627
|
-
return await this.boundSessions.sendNativeBoundSession(
|
|
680
|
+
return await this.boundSessions.sendNativeBoundSession(
|
|
681
|
+
node,
|
|
682
|
+
actorRef,
|
|
683
|
+
message,
|
|
684
|
+
packetName,
|
|
685
|
+
metadata,
|
|
686
|
+
signal
|
|
687
|
+
);
|
|
628
688
|
}
|
|
629
689
|
|
|
630
690
|
async sendNativeBoundSessionResponse(
|
|
@@ -658,7 +718,15 @@ export class ZLinkStreamBindingRuntime {
|
|
|
658
718
|
metadata: ReadonlyMap<string, string>,
|
|
659
719
|
signal?: AbortSignal
|
|
660
720
|
): Promise<void> {
|
|
661
|
-
await this.boundSessions.sendNativeBoundSessionError(
|
|
721
|
+
await this.boundSessions.sendNativeBoundSessionError(
|
|
722
|
+
node,
|
|
723
|
+
actorRef,
|
|
724
|
+
packetName,
|
|
725
|
+
requestSeq,
|
|
726
|
+
error,
|
|
727
|
+
metadata,
|
|
728
|
+
signal
|
|
729
|
+
);
|
|
662
730
|
}
|
|
663
731
|
|
|
664
732
|
async disconnectNativeBoundSession(
|
|
@@ -695,7 +763,9 @@ export class ZLinkStreamBindingRuntime {
|
|
|
695
763
|
}
|
|
696
764
|
|
|
697
765
|
decompressPayload(payload: Message): Message {
|
|
698
|
-
return simpleMessage(
|
|
766
|
+
return simpleMessage(
|
|
767
|
+
decompressStreamPayload(messageToBytes(payload), this.compressionCodec)
|
|
768
|
+
) as Message;
|
|
699
769
|
}
|
|
700
770
|
|
|
701
771
|
createJsonFrameMessage(
|
|
@@ -707,7 +777,15 @@ export class ZLinkStreamBindingRuntime {
|
|
|
707
777
|
payload: unknown,
|
|
708
778
|
correlationId?: string
|
|
709
779
|
): Message {
|
|
710
|
-
return this.frameMessages.createJsonFrameMessage(
|
|
780
|
+
return this.frameMessages.createJsonFrameMessage(
|
|
781
|
+
kind,
|
|
782
|
+
packetName,
|
|
783
|
+
metadata,
|
|
784
|
+
compressed,
|
|
785
|
+
requestSeq,
|
|
786
|
+
payload,
|
|
787
|
+
correlationId
|
|
788
|
+
);
|
|
711
789
|
}
|
|
712
790
|
|
|
713
791
|
createJsonReplyFrameMessage(
|
|
@@ -717,7 +795,12 @@ export class ZLinkStreamBindingRuntime {
|
|
|
717
795
|
compressed: boolean,
|
|
718
796
|
payload: unknown
|
|
719
797
|
): Message {
|
|
720
|
-
return this.frameMessages.createJsonReplyFrameMessage(
|
|
798
|
+
return this.frameMessages.createJsonReplyFrameMessage(
|
|
799
|
+
requestHeader,
|
|
800
|
+
kind,
|
|
801
|
+
metadata,
|
|
802
|
+
compressed,
|
|
803
|
+
payload
|
|
804
|
+
);
|
|
721
805
|
}
|
|
722
|
-
|
|
723
806
|
}
|