@zlink-systems/framework 0.25.0 → 0.27.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/Channels/IZLinkFanoutClient.d.ts +0 -6
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +5 -0
- package/dist/internal.js +16 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +28 -0
- package/dist/runtime/activation-admission.js +57 -0
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +42 -143
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +19 -17
- package/dist/runtime/actors/actor-handoff.d.ts +13 -7
- package/dist/runtime/actors/actor-handoff.js +36 -25
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +85 -123
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
- package/dist/runtime/actors/actor-remote-joiner.js +11 -17
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
- package/dist/runtime/actors/actor-request-deadline.js +31 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
- package/dist/runtime/actors/deferred-join-completion.js +21 -0
- package/dist/runtime/actors/index.d.ts +10 -8
- package/dist/runtime/actors/index.js +101 -73
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +7 -1
- package/dist/runtime/admission.js +11 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +8 -33
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
- package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -9
- package/dist/runtime/channels/channel-clients.js +68 -60
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.js +47 -29
- package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
- package/dist/runtime/channels/channel-outbound-operations.js +9 -18
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
- package/dist/runtime/channels/channel-runtime-manager.js +4 -12
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
- package/dist/runtime/channels/channel-socket-registry.js +296 -235
- package/dist/runtime/channels/channel-transports.d.ts +11 -20
- package/dist/runtime/channels/channel-transports.js +68 -47
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +133 -81
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.js +3 -2
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +22 -9
- package/dist/runtime/execution/index.js +107 -37
- package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
- package/dist/runtime/execution/serial-execution-queue.js +99 -26
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/listener-records.d.ts +11 -0
- package/dist/runtime/foundation/listener-records.js +20 -0
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
- package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
- package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
- package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
- package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
- package/dist/runtime/foundation/service-topology-registry.js +22 -61
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
- package/dist/runtime/host/actor-packet-relay.js +48 -91
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
- package/dist/runtime/host/actor-transfer-runtime.js +210 -256
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +19 -14
- package/dist/runtime/host/index.js +234 -175
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +11 -23
- package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
- package/dist/runtime/host/route-mesh-runtime.js +178 -257
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
- package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
- package/dist/runtime/host/spot-address-transport.d.ts +2 -3
- package/dist/runtime/host/spot-address-transport.js +34 -136
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
- package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
- package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
- package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +5 -10
- package/dist/runtime/locations/lifecycle.js +4 -33
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +303 -332
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +44 -30
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
- package/dist/runtime/locations/spot-location-claims.js +40 -23
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/submission-result.d.ts +3 -0
- package/dist/runtime/messaging/submission-result.js +48 -0
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
- package/dist/runtime/spots/index.d.ts +29 -29
- package/dist/runtime/spots/index.js +441 -313
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
- package/dist/runtime/spots/spot-activation-registry.js +27 -60
- package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
- package/dist/runtime/spots/spot-activation-state.js +4 -17
- package/dist/runtime/spots/spot-activation.d.ts +10 -9
- package/dist/runtime/spots/spot-activation.js +103 -81
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
- package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
- package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
- package/dist/runtime/spots/spot-actor-membership.js +44 -53
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-entry-activation.js +9 -21
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +6 -5
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
- package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +10 -37
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
- package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
- package/dist/runtime/spots/spot-serial-executor.js +9 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
- package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
- package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -19
- package/dist/runtime/streams/index.d.ts +15 -14
- package/dist/runtime/streams/index.js +38 -39
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +17 -8
- package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +1 -1
- package/dist/runtime/streams/session-calls.js +5 -4
- package/dist/runtime/streams/session-context.d.ts +6 -6
- package/dist/runtime/streams/session-context.js +22 -4
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/session-serial-executor.js +2 -2
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- package/src/internal.ts +15 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +72 -0
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +77 -204
- package/src/runtime/actors/actor-context.ts +45 -39
- package/src/runtime/actors/actor-handoff.ts +55 -45
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +174 -215
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +15 -36
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/actor-source-transfer.ts +5 -18
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +44 -0
- package/src/runtime/actors/index.ts +122 -88
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +13 -2
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +15 -42
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
- package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
- package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
- package/src/runtime/backend/raw-binding-port.ts +14 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +58 -29
- package/src/runtime/channels/channel-outbound-operations.ts +10 -31
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +8 -15
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +369 -262
- package/src/runtime/channels/channel-transports.ts +161 -115
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +175 -106
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +5 -2
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +116 -38
- package/src/runtime/execution/serial-execution-queue.ts +179 -34
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/listener-records.ts +21 -0
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
- package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
- package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
- package/src/runtime/foundation/service-topology-registry.ts +30 -79
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +57 -147
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +266 -418
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +408 -312
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +12 -44
- package/src/runtime/host/route-mesh-runtime.ts +236 -275
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
- package/src/runtime/host/spot-address-transport.ts +73 -195
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
- package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
- package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +16 -45
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +450 -478
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +90 -58
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +54 -26
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/submission-result.ts +57 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
- package/src/runtime/spots/index.ts +687 -437
- package/src/runtime/spots/spot-activation-registry.ts +42 -71
- package/src/runtime/spots/spot-activation-state.ts +4 -16
- package/src/runtime/spots/spot-activation.ts +167 -115
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
- package/src/runtime/spots/spot-actor-membership.ts +107 -75
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -33
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +29 -21
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
- package/src/runtime/spots/spot-outbound.ts +47 -68
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +10 -43
- package/src/runtime/spots/spot-serial-executor.ts +10 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +23 -37
- package/src/runtime/streams/index.ts +102 -88
- package/src/runtime/streams/managed-stream.ts +29 -10
- package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +6 -5
- package/src/runtime/streams/session-context.ts +54 -10
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/session-serial-executor.ts +2 -2
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
- package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -1,60 +1,53 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ZLinkFrameworkInternalErrorKind,
|
|
3
|
-
createInternalFrameworkException
|
|
4
|
-
} from '../framework-errors-internal';
|
|
1
|
+
import { RuntimeDisposal } from '../disposal';
|
|
5
2
|
import { randomUUID } from 'node:crypto';
|
|
6
|
-
import type { ZLinkLocationOptionOverrides } from '../../contracts/Locations/Options';
|
|
7
|
-
import type {
|
|
8
|
-
ActorRef,
|
|
9
|
-
RoutingId,
|
|
10
|
-
ZLinkActor,
|
|
11
|
-
ZLinkChannelClient,
|
|
12
|
-
ZLinkFanoutClient,
|
|
13
|
-
ZLinkMessage,
|
|
14
|
-
ZLinkMeshNodeDescriptor,
|
|
15
|
-
ZLinkMessageSerializer,
|
|
16
|
-
ZLinkSpotPublisherClient
|
|
17
|
-
} from '../../contracts';
|
|
18
|
-
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
19
|
-
import type { ZLinkRuntimeEventPublisher } from '../diagnostics';
|
|
20
|
-
import { ZLinkLocationWriteIntent, ZLinkLocationWriteStatus } from '../../contracts/Locations';
|
|
21
3
|
import {
|
|
22
|
-
|
|
4
|
+
type ActorRef,
|
|
5
|
+
type RoutingId,
|
|
6
|
+
type ZLinkActor,
|
|
7
|
+
type ZLinkChannelClient,
|
|
8
|
+
type ZLinkFanoutClient,
|
|
9
|
+
type ZLinkMeshNodeDescriptor,
|
|
10
|
+
type ZLinkMessage,
|
|
11
|
+
type ZLinkMessageSerializer,
|
|
12
|
+
type ZLinkSpotPublisherClient,
|
|
23
13
|
ZLinkFrameworkException,
|
|
14
|
+
ZLinkFrameworkRuntimeState,
|
|
24
15
|
ZLinkObjectRole
|
|
25
16
|
} from '../../contracts';
|
|
26
|
-
|
|
17
|
+
|
|
18
|
+
import type { Message } from '../../contracts/Common/Message';
|
|
19
|
+
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
20
|
+
import { DEFAULT_ACTIVATION_CONCURRENCY_LIMIT } from '../../contracts/Configuration/InternalDefaults';
|
|
21
|
+
import {
|
|
22
|
+
ZLINK_DEFAULT_PUBLIC_WEIGHT,
|
|
23
|
+
ZLINK_MAX_CAPACITY,
|
|
24
|
+
ZLINK_MAX_PUBLIC_WEIGHT,
|
|
25
|
+
isValidPublicWeight
|
|
26
|
+
} from '../../contracts/Configuration/RegistrationBuilderPolicy';
|
|
27
27
|
import {
|
|
28
28
|
ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
|
|
29
29
|
ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
|
|
30
30
|
ZLinkDispatchErrorSurface,
|
|
31
31
|
ZLinkDispatchMessageKind
|
|
32
32
|
} from '../../contracts/Dispatch/ZLinkDispatchOptions';
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
} from '../
|
|
39
|
-
import type {
|
|
40
|
-
import type { ZLinkMessageFollowOrigin } from '../foundation/service-runtime-contracts';
|
|
41
|
-
import {
|
|
42
|
-
ZLinkConfigurationException,
|
|
43
|
-
type ZLinkFrameworkRegistration,
|
|
44
|
-
type ZLinkSpotNodeOptions
|
|
45
|
-
} from '../configuration';
|
|
33
|
+
import { ZLinkLocationWriteIntent, ZLinkLocationWriteStatus } from '../../contracts/Locations';
|
|
34
|
+
import type { ZLinkLocationOptionOverrides } from '../../contracts/Locations/Options';
|
|
35
|
+
import type { ZLinkLocationOwnerToken } from '../../contracts/Locations/Writes';
|
|
36
|
+
import { createAbortError } from '../abort';
|
|
37
|
+
import type { ZLinkActivationConcurrency } from '../activation-admission';
|
|
38
|
+
import type { ZLinkRemoteBoundSessionTarget } from '../actors';
|
|
39
|
+
import type { ZLinkActorHandoffPacket } from '../actors/actor-handoff';
|
|
46
40
|
import type {
|
|
47
41
|
ZLinkBackendAdapterFactory,
|
|
48
42
|
ZLinkBackendContext,
|
|
49
43
|
ZLinkBackendMeshNode,
|
|
50
44
|
ZLinkBackendSpotNode
|
|
51
45
|
} from '../backend/contracts';
|
|
52
|
-
import type { ZLinkLocationOwnerToken } from '../../contracts/Locations/Writes';
|
|
53
|
-
import { ZLinkMeshDispatchPump } from '../backend/mesh-dispatch-pump';
|
|
54
|
-
import { requireZLinkInfrastructureExecutionArea } from '../execution';
|
|
55
|
-
import { runWithOutboundFlow } from '../diagnostics/flow-context';
|
|
56
46
|
import { ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
|
|
47
|
+
import { ZLinkMeshDispatchPump } from '../backend/mesh-dispatch-pump';
|
|
48
|
+
import { SubmitResult, isZLinkBackendResultError } from '../backend/runtime-values';
|
|
57
49
|
import type { ZLinkDispatchErrorReporter } from '../channels';
|
|
50
|
+
import { requireUniqueRouteMeshChannel, resolveChannelRoute } from '../channels/channel-clients';
|
|
58
51
|
import {
|
|
59
52
|
decodeChannelEnvelope,
|
|
60
53
|
decodeChannelPayload,
|
|
@@ -62,6 +55,31 @@ import {
|
|
|
62
55
|
encodeChannelPublishEnvelopeParts,
|
|
63
56
|
encodeChannelReplyParts
|
|
64
57
|
} from '../channels/channel-envelope';
|
|
58
|
+
import {
|
|
59
|
+
ZLinkConfigurationException,
|
|
60
|
+
type ZLinkFrameworkRegistration,
|
|
61
|
+
type ZLinkSpotNodeOptions
|
|
62
|
+
} from '../configuration';
|
|
63
|
+
import type { ZLinkRuntimeEventPublisher } from '../diagnostics';
|
|
64
|
+
import { runWithOutboundFlow } from '../diagnostics/flow-context';
|
|
65
|
+
import { requireZLinkInfrastructureExecutionArea } from '../execution';
|
|
66
|
+
import type { ZLinkListenerRecords } from '../foundation/listener-records';
|
|
67
|
+
import {
|
|
68
|
+
type ZLinkMessageFollowOrigin,
|
|
69
|
+
ReceiveKind,
|
|
70
|
+
type ReadyRecord,
|
|
71
|
+
type ReceiveRecord
|
|
72
|
+
} from '../foundation/service-runtime-contracts';
|
|
73
|
+
|
|
74
|
+
import type { ServiceMessageFollowRecord } from '../foundation/service-stateful-wire-codec';
|
|
75
|
+
import {
|
|
76
|
+
ZLinkFrameworkInternalErrorKind,
|
|
77
|
+
createInternalFrameworkException
|
|
78
|
+
} from '../framework-errors-internal';
|
|
79
|
+
import {
|
|
80
|
+
ApplicationJobQueue,
|
|
81
|
+
resolveApplicationJobQueueConfiguration
|
|
82
|
+
} from '../host/application-job-queue';
|
|
65
83
|
import {
|
|
66
84
|
ZLinkAutoConnectLoop,
|
|
67
85
|
ZLinkAutoConnectReconciler,
|
|
@@ -69,8 +87,12 @@ import {
|
|
|
69
87
|
type ZLinkLocationEventSink,
|
|
70
88
|
type ZLinkLocationRuntimeStores
|
|
71
89
|
} from '../locations';
|
|
72
|
-
import
|
|
73
|
-
|
|
90
|
+
import {
|
|
91
|
+
classifySubmitResult,
|
|
92
|
+
ZLinkSubmitStatus,
|
|
93
|
+
type ZLinkSubmitResult
|
|
94
|
+
} from '../messaging/submission-result';
|
|
95
|
+
import { routingIdsEqual, toBackendRoutingId } from '../routing-id';
|
|
74
96
|
import type { ZLinkDetachedTaskRunner } from './spot-actor-join-dispatch';
|
|
75
97
|
import { ZLinkEntrySpotActivation } from './spot-entry-activation';
|
|
76
98
|
import {
|
|
@@ -80,19 +102,13 @@ import {
|
|
|
80
102
|
} from './spot-node-autoconnect';
|
|
81
103
|
import type { ZLinkSpotRoutedTransport } from './spot-outbound';
|
|
82
104
|
import type { ZLinkSpotRouteResolver } from './spot-routing-internal';
|
|
83
|
-
import { routingIdsEqual, toBackendRoutingId } from '../routing-id';
|
|
84
105
|
import type {
|
|
85
106
|
ZLinkEntryActorRuntime,
|
|
86
|
-
ZLinkSpotActorTransferRuntime,
|
|
87
107
|
ZLinkSpotActorHandoffRuntime,
|
|
108
|
+
ZLinkSpotActorTransferRuntime,
|
|
88
109
|
ZLinkSpotBoundSessionRuntime
|
|
89
110
|
} from './spot-runtime-ports';
|
|
90
|
-
|
|
91
|
-
import type { ServiceMessageFollowRecord } from '../foundation/service-stateful-wire-codec';
|
|
92
|
-
import {
|
|
93
|
-
ApplicationJobQueue,
|
|
94
|
-
resolveApplicationJobQueueConfiguration
|
|
95
|
-
} from '../host/application-job-queue';
|
|
111
|
+
const DEFAULT_SPOT_NODE_SHUTDOWN_TIMEOUT_MS = 1000;
|
|
96
112
|
|
|
97
113
|
const ZLINK_SEND_DONT_WAIT = 1;
|
|
98
114
|
|
|
@@ -101,6 +117,8 @@ const ZLINK_SEND_DONT_WAIT = 1;
|
|
|
101
117
|
const EMPTY_SPOT_METADATA: ReadonlyMap<string, string> = new Map();
|
|
102
118
|
|
|
103
119
|
export interface ZLinkSpotNodeRuntimeManagerOptions {
|
|
120
|
+
readonly errorSink: import('../diagnostics/dispatch-error-port').ZLinkDispatchErrorSink;
|
|
121
|
+
readonly listenerRecords?: ZLinkListenerRecords;
|
|
104
122
|
readonly registration: ZLinkFrameworkRegistration;
|
|
105
123
|
readonly primaryMeshName?: string;
|
|
106
124
|
readonly backendAdapterFactory: ZLinkBackendAdapterFactory;
|
|
@@ -120,7 +138,7 @@ export interface ZLinkSpotNodeRuntimeManagerOptions {
|
|
|
120
138
|
readonly actorTransferRuntime?: ZLinkSpotActorTransferRuntime;
|
|
121
139
|
readonly boundSessionRuntime?: ZLinkSpotBoundSessionRuntime;
|
|
122
140
|
readonly actorHandoffRuntime?: ZLinkSpotActorHandoffRuntime;
|
|
123
|
-
readonly detachedTaskRunner
|
|
141
|
+
readonly detachedTaskRunner: ZLinkDetachedTaskRunner;
|
|
124
142
|
readonly applicationJobQueue?: ApplicationJobQueue;
|
|
125
143
|
readonly applicationJobReceiveFlowFailureSink?: (error: unknown) => void;
|
|
126
144
|
readonly peerAdmissionSealed?: (meshName: string) => boolean;
|
|
@@ -130,10 +148,8 @@ export interface ZLinkSpotNodeRuntimeManagerOptions {
|
|
|
130
148
|
record: ReceiveRecord
|
|
131
149
|
) => void | Promise<void>;
|
|
132
150
|
readonly messageFollowReceiver?: (record: ServiceMessageFollowRecord) => void;
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
readonly limit: number;
|
|
136
|
-
};
|
|
151
|
+
/** MeshNode §5.1 activation admission record; the descriptor projects it for placement. */
|
|
152
|
+
readonly activationConcurrency?: (meshName: string) => ZLinkActivationConcurrency;
|
|
137
153
|
}
|
|
138
154
|
|
|
139
155
|
export class ZLinkSpotNodeRuntimeManager {
|
|
@@ -146,7 +162,7 @@ export class ZLinkSpotNodeRuntimeManager {
|
|
|
146
162
|
string,
|
|
147
163
|
ReturnType<ZLinkBackendMeshNode['createPublisher']>
|
|
148
164
|
>();
|
|
149
|
-
private
|
|
165
|
+
private readonly disposal = new RuntimeDisposal();
|
|
150
166
|
private readonly autoConnectLoops: ZLinkAutoConnectLoop[] = [];
|
|
151
167
|
private readonly publishedMeshNodeDescriptors = new Map<string, ZLinkMeshNodeDescriptor>();
|
|
152
168
|
// Keep the revision source separate from the cached Store row. A new owner
|
|
@@ -163,15 +179,14 @@ export class ZLinkSpotNodeRuntimeManager {
|
|
|
163
179
|
private readonly applicationJobQueue: ApplicationJobQueue;
|
|
164
180
|
|
|
165
181
|
constructor(private readonly options: ZLinkSpotNodeRuntimeManagerOptions) {
|
|
182
|
+
if ((options.detachedTaskRunner as unknown) === undefined) {
|
|
183
|
+
throw new ZLinkConfigurationException('Spot node runtime requires a detached task runner.');
|
|
184
|
+
}
|
|
166
185
|
this.applicationJobQueue =
|
|
167
186
|
options.applicationJobQueue ??
|
|
168
187
|
new ApplicationJobQueue(resolveApplicationJobQueueConfiguration());
|
|
169
188
|
}
|
|
170
189
|
|
|
171
|
-
createReceived() {
|
|
172
|
-
return this.options.backendAdapterFactory.createReceived();
|
|
173
|
-
}
|
|
174
|
-
|
|
175
190
|
createTopicMessage() {
|
|
176
191
|
return this.options.backendAdapterFactory.createTopicMessage();
|
|
177
192
|
}
|
|
@@ -210,7 +225,8 @@ export class ZLinkSpotNodeRuntimeManager {
|
|
|
210
225
|
peerResolver: location.resolver,
|
|
211
226
|
executor: capability.executor,
|
|
212
227
|
events: location.events,
|
|
213
|
-
options: location.options
|
|
228
|
+
options: location.options,
|
|
229
|
+
errorSink: this.options.errorSink
|
|
214
230
|
});
|
|
215
231
|
const loop = new ZLinkAutoConnectLoop({
|
|
216
232
|
reconciler,
|
|
@@ -326,12 +342,13 @@ export class ZLinkSpotNodeRuntimeManager {
|
|
|
326
342
|
: Object.keys(spotNode.actorFactories ?? {}).length) > 0;
|
|
327
343
|
node.configureObjectPlacement({
|
|
328
344
|
role: spotNode.objectRole ?? (hasLegacyObjectFactories ? 'server' : 'none'),
|
|
329
|
-
placementWeight: spotNode.placementWeight ??
|
|
345
|
+
placementWeight: spotNode.placementWeight ?? ZLINK_DEFAULT_PUBLIC_WEIGHT,
|
|
330
346
|
activeCapacityLimit: aggregatePlacementCapacity(
|
|
331
347
|
spotNode.actorLimit ?? 0,
|
|
332
348
|
spotNode.spotLimit ?? 0
|
|
333
349
|
),
|
|
334
|
-
pendingCapacityLimit:
|
|
350
|
+
pendingCapacityLimit:
|
|
351
|
+
spotNode.activationConcurrencyLimit ?? DEFAULT_ACTIVATION_CONCURRENCY_LIMIT,
|
|
335
352
|
objectCapabilities: [
|
|
336
353
|
...stableTypes.map((type) => `object-type:${type}`),
|
|
337
354
|
...instanceSpotTypes.map((type) => `instance-spot-type:${type}`)
|
|
@@ -378,6 +395,10 @@ export class ZLinkSpotNodeRuntimeManager {
|
|
|
378
395
|
this.meshNodes.set(spotNodeName, node);
|
|
379
396
|
this.meshPumps.set(spotNodeName, pump);
|
|
380
397
|
this.meshCompletions.set(spotNodeName, completions);
|
|
398
|
+
const listenerEndpoint = node.status().localEndpoint;
|
|
399
|
+
if (listenerEndpoint.length > 0) {
|
|
400
|
+
this.options.listenerRecords?.record('routeMesh', spotNodeName, listenerEndpoint);
|
|
401
|
+
}
|
|
381
402
|
} catch (error) {
|
|
382
403
|
this.entryActivations.delete(spotNodeName);
|
|
383
404
|
this.publishers.get(spotNodeName)?.close();
|
|
@@ -488,22 +509,20 @@ export class ZLinkSpotNodeRuntimeManager {
|
|
|
488
509
|
};
|
|
489
510
|
})
|
|
490
511
|
},
|
|
491
|
-
activationConcurrency: {
|
|
492
|
-
active:
|
|
493
|
-
|
|
494
|
-
current?.activationConcurrency.active ??
|
|
495
|
-
0,
|
|
496
|
-
limit:
|
|
497
|
-
this.options.instanceActivationConcurrencyProvider?.(meshName).limit ??
|
|
498
|
-
registration.activationConcurrencyLimit ??
|
|
499
|
-
128
|
|
512
|
+
activationConcurrency: this.options.activationConcurrency?.(meshName) ?? {
|
|
513
|
+
active: 0,
|
|
514
|
+
limit: registration.activationConcurrencyLimit ?? DEFAULT_ACTIVATION_CONCURRENCY_LIMIT
|
|
500
515
|
},
|
|
501
516
|
channelWeights: Object.fromEntries(
|
|
502
517
|
this.serverChannels(meshName).map(([channelName, channel]) => [
|
|
503
518
|
channelName,
|
|
504
519
|
state === ZLinkFrameworkRuntimeState.Draining
|
|
505
520
|
? 0
|
|
506
|
-
: this.effectiveChannelWeight(
|
|
521
|
+
: this.effectiveChannelWeight(
|
|
522
|
+
meshName,
|
|
523
|
+
channelName,
|
|
524
|
+
channel.weight ?? ZLINK_DEFAULT_PUBLIC_WEIGHT
|
|
525
|
+
)
|
|
507
526
|
])
|
|
508
527
|
),
|
|
509
528
|
applicationVersion: this.options.registration.applicationVersion,
|
|
@@ -618,7 +637,11 @@ export class ZLinkSpotNodeRuntimeManager {
|
|
|
618
637
|
if (registration === undefined) {
|
|
619
638
|
throw new ZLinkConfigurationException(`Mesh '${meshName}' is not registered.`);
|
|
620
639
|
}
|
|
621
|
-
return
|
|
640
|
+
return (
|
|
641
|
+
this.runtimePlacementWeights.get(meshName) ??
|
|
642
|
+
registration.placementWeight ??
|
|
643
|
+
ZLINK_DEFAULT_PUBLIC_WEIGHT
|
|
644
|
+
);
|
|
622
645
|
}
|
|
623
646
|
|
|
624
647
|
channelWeight(channelName: string): number {
|
|
@@ -691,21 +714,21 @@ export class ZLinkSpotNodeRuntimeManager {
|
|
|
691
714
|
readonly meshName: string;
|
|
692
715
|
readonly configuredWeight: number;
|
|
693
716
|
} {
|
|
694
|
-
const
|
|
695
|
-
|
|
696
|
-
return channel === undefined ? [] : [{ meshName, configuredWeight: channel.weight ?? 100 }];
|
|
697
|
-
});
|
|
698
|
-
if (matches.length === 0) {
|
|
717
|
+
const route = resolveChannelRoute(this.options.registration, channelName);
|
|
718
|
+
if (route?.kind !== 'route-mesh') {
|
|
699
719
|
throw new ZLinkConfigurationException(
|
|
700
720
|
`RouteMesh channel '${channelName}' is not registered.`
|
|
701
721
|
);
|
|
702
722
|
}
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
723
|
+
const match = requireUniqueRouteMeshChannel(
|
|
724
|
+
route.matches,
|
|
725
|
+
`RouteMesh channel '${channelName}' is registered in more than one Mesh.`
|
|
726
|
+
);
|
|
727
|
+
return {
|
|
728
|
+
meshName: match.meshName,
|
|
729
|
+
configuredWeight:
|
|
730
|
+
match.mesh.meshChannels?.[channelName]?.weight ?? ZLINK_DEFAULT_PUBLIC_WEIGHT
|
|
731
|
+
};
|
|
709
732
|
}
|
|
710
733
|
|
|
711
734
|
private scheduleRuntimeWeightPublication(
|
|
@@ -722,14 +745,10 @@ export class ZLinkSpotNodeRuntimeManager {
|
|
|
722
745
|
await this.publishMeshNodeState(state, undefined, meshName);
|
|
723
746
|
});
|
|
724
747
|
this.runtimeWeightPublication = publish;
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
);
|
|
730
|
-
} else {
|
|
731
|
-
void publish.catch(() => undefined);
|
|
732
|
-
}
|
|
748
|
+
this.options.detachedTaskRunner.runDetached(
|
|
749
|
+
`RouteMesh '${meshName}' runtime weight publication`,
|
|
750
|
+
async () => await publish
|
|
751
|
+
);
|
|
733
752
|
}
|
|
734
753
|
|
|
735
754
|
get primaryMeshCompletions(): ZLinkMeshCompletionTable | undefined {
|
|
@@ -796,18 +815,17 @@ export class ZLinkSpotNodeRuntimeManager {
|
|
|
796
815
|
).filter(([, channel]) => channel.server === true);
|
|
797
816
|
}
|
|
798
817
|
|
|
799
|
-
|
|
800
|
-
this.
|
|
818
|
+
dispose(signal?: AbortSignal, deadline?: Date): Promise<void> {
|
|
819
|
+
return this.disposal.run(() => this.disposeCore(signal, deadline));
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
private async disposeCore(signal?: AbortSignal, deadline?: Date): Promise<void> {
|
|
801
823
|
const autoConnectLoops = [...this.autoConnectLoops];
|
|
802
824
|
const entryActivations = [...this.entryActivations.values()];
|
|
803
825
|
const meshPumps = [...this.meshPumps.values()];
|
|
804
826
|
const meshNodes = [...this.meshNodes.values()];
|
|
805
827
|
const meshCompletions = [...this.meshCompletions.values()];
|
|
806
|
-
this.entryActivations.clear();
|
|
807
|
-
this.autoConnectLoops.length = 0;
|
|
808
|
-
this.meshPumps.clear();
|
|
809
828
|
const publishers = [...this.publishers.values()];
|
|
810
|
-
this.publishers.clear();
|
|
811
829
|
const errors: unknown[] = [];
|
|
812
830
|
const settle = async (operations: readonly Promise<unknown>[]) => {
|
|
813
831
|
const results = await Promise.allSettled(operations);
|
|
@@ -823,18 +841,22 @@ export class ZLinkSpotNodeRuntimeManager {
|
|
|
823
841
|
await settle(meshPumps.reverse().map((pump) => pump.dispose()));
|
|
824
842
|
await settle(
|
|
825
843
|
meshNodes.reverse().map(async (node) => {
|
|
826
|
-
node.shutdown(
|
|
844
|
+
node.shutdown(DEFAULT_SPOT_NODE_SHUTDOWN_TIMEOUT_MS);
|
|
827
845
|
node.close();
|
|
828
846
|
})
|
|
829
847
|
);
|
|
830
848
|
for (const completions of meshCompletions) {
|
|
831
849
|
completions.dispose();
|
|
832
850
|
}
|
|
833
|
-
this.meshNodes.clear();
|
|
834
|
-
this.meshCompletions.clear();
|
|
835
851
|
await settle(autoConnectLoops.map((loop) => loop.finishTransportShutdown(signal)));
|
|
836
852
|
if (errors.length === 1) throw errors[0];
|
|
837
853
|
if (errors.length > 1) throw new AggregateError(errors, 'SPOT node runtime cleanup failed.');
|
|
854
|
+
this.entryActivations.clear();
|
|
855
|
+
this.autoConnectLoops.length = 0;
|
|
856
|
+
this.meshPumps.clear();
|
|
857
|
+
this.publishers.clear();
|
|
858
|
+
this.meshNodes.clear();
|
|
859
|
+
this.meshCompletions.clear();
|
|
838
860
|
}
|
|
839
861
|
|
|
840
862
|
private async dispatchMeshRecord(
|
|
@@ -975,7 +997,6 @@ export class ZLinkSpotNodeRuntimeManager {
|
|
|
975
997
|
entrySpotType: spotNode.entrySpotType,
|
|
976
998
|
nativeSpot: node.entrySpot() as never,
|
|
977
999
|
nativeNode: node as unknown as ZLinkBackendSpotNode,
|
|
978
|
-
createReceived: () => this.options.backendAdapterFactory.createReceived(),
|
|
979
1000
|
createTopicMessage: () => this.options.backendAdapterFactory.createTopicMessage(),
|
|
980
1001
|
nodeRid: String(node.status().routingId),
|
|
981
1002
|
spotNodeName,
|
|
@@ -985,8 +1006,6 @@ export class ZLinkSpotNodeRuntimeManager {
|
|
|
985
1006
|
spotPublisherClient: this.options.spotPublisherClient,
|
|
986
1007
|
routedTransport: this.options.routedTransport,
|
|
987
1008
|
spotRouterChannelIdForMesh: this.options.spotRouterChannelIdForMesh,
|
|
988
|
-
channelMeshNameForChannel: (channelName) =>
|
|
989
|
-
resolveChannelMeshName(this.options.registration, channelName),
|
|
990
1009
|
timerHandlers: spotNode.entrySpotTimerHandlers,
|
|
991
1010
|
packetHandlers: spotNode.entrySpotPacketHandlers,
|
|
992
1011
|
subscriptionHandlers: spotNode.entrySpotSubscriptionHandlers,
|
|
@@ -1089,6 +1108,16 @@ export class ZLinkSpotNodeRuntimeManager {
|
|
|
1089
1108
|
await activation.commitServiceActorJoin(actor, handoffBacklog);
|
|
1090
1109
|
}
|
|
1091
1110
|
|
|
1111
|
+
executeEntryActor<T>(meshName: string, actorId: string, operation: () => Promise<T>): Promise<T> {
|
|
1112
|
+
const activation = this.entryActivations.get(meshName);
|
|
1113
|
+
if (activation === undefined) {
|
|
1114
|
+
throw new ZLinkConfigurationException(
|
|
1115
|
+
`Entry Spot Actor '${actorId}' has no activation for MeshNode '${meshName}'.`
|
|
1116
|
+
);
|
|
1117
|
+
}
|
|
1118
|
+
return activation.executeActor(actorId, operation);
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1092
1121
|
publish(
|
|
1093
1122
|
meshName: string,
|
|
1094
1123
|
channelName: string,
|
|
@@ -1098,7 +1127,7 @@ export class ZLinkSpotNodeRuntimeManager {
|
|
|
1098
1127
|
signal?: AbortSignal,
|
|
1099
1128
|
metadata: ReadonlyMap<string, string> = EMPTY_SPOT_METADATA
|
|
1100
1129
|
): Promise<ZLinkSubmitResult> {
|
|
1101
|
-
if (this.
|
|
1130
|
+
if (this.disposal.started) {
|
|
1102
1131
|
return Promise.reject(runtimeShutdownError());
|
|
1103
1132
|
}
|
|
1104
1133
|
if (signal?.aborted === true) {
|
|
@@ -1165,7 +1194,7 @@ export class ZLinkSpotNodeRuntimeManager {
|
|
|
1165
1194
|
flags: number,
|
|
1166
1195
|
metadata: ReadonlyMap<string, string>
|
|
1167
1196
|
): ZLinkSubmitResult {
|
|
1168
|
-
if (this.
|
|
1197
|
+
if (this.disposal.started) {
|
|
1169
1198
|
throw runtimeShutdownError();
|
|
1170
1199
|
}
|
|
1171
1200
|
const publisher = this.publishers.get(meshName);
|
|
@@ -1214,39 +1243,13 @@ export function createFrameworkEntrySpotId(prefix: string): string {
|
|
|
1214
1243
|
return `${prefix}-entry-${randomUUID()}`;
|
|
1215
1244
|
}
|
|
1216
1245
|
|
|
1217
|
-
function resolveChannelMeshName(
|
|
1218
|
-
registration: ZLinkFrameworkRegistration,
|
|
1219
|
-
channelName: string
|
|
1220
|
-
): string | undefined {
|
|
1221
|
-
const matches = [...registration.spotNodes.entries()]
|
|
1222
|
-
.filter(([, node]) =>
|
|
1223
|
-
Object.prototype.hasOwnProperty.call(node.meshChannels ?? {}, channelName)
|
|
1224
|
-
)
|
|
1225
|
-
.map(([meshName]) => meshName);
|
|
1226
|
-
return matches.length === 1 ? matches[0] : undefined;
|
|
1227
|
-
}
|
|
1228
|
-
|
|
1229
1246
|
function mapPublishSubmitStatus(result: number): ZLinkSubmitStatus {
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
case SubmitResult.NotFound:
|
|
1237
|
-
// A publish with no matching subscriber is a successful zero-recipient
|
|
1238
|
-
// operation, not an operation-specific not-found failure.
|
|
1239
|
-
return ZLinkSubmitStatus.Submitted;
|
|
1240
|
-
case SubmitResult.NotConnected:
|
|
1241
|
-
return ZLinkSubmitStatus.RouteNotConnected;
|
|
1242
|
-
case SubmitResult.Terminated:
|
|
1243
|
-
case SubmitResult.InvalidHandle:
|
|
1244
|
-
return ZLinkSubmitStatus.Shutdown;
|
|
1245
|
-
default:
|
|
1246
|
-
throw new ZLinkConfigurationException(
|
|
1247
|
-
`Logical Multicast failed with submit result '${result}'.`
|
|
1248
|
-
);
|
|
1249
|
-
}
|
|
1247
|
+
// Source publication preserves its local admission status before commit.
|
|
1248
|
+
if (result === SubmitResult.NotAdmitted || result === SubmitResult.Backpressured)
|
|
1249
|
+
return ZLinkSubmitStatus.Backpressured;
|
|
1250
|
+
// A publish with no matching subscriber succeeds with zero recipients.
|
|
1251
|
+
if (result === SubmitResult.NotFound) return ZLinkSubmitStatus.Submitted;
|
|
1252
|
+
return classifySubmitResult(result, 'Logical Multicast').status;
|
|
1250
1253
|
}
|
|
1251
1254
|
|
|
1252
1255
|
function requireEntrySpotReply(result: number): void {
|
|
@@ -1258,8 +1261,10 @@ function requireEntrySpotReply(result: number): void {
|
|
|
1258
1261
|
}
|
|
1259
1262
|
|
|
1260
1263
|
function requirePublicRuntimeWeight(value: number, label: string): number {
|
|
1261
|
-
if (!
|
|
1262
|
-
throw new ZLinkConfigurationException(
|
|
1264
|
+
if (!isValidPublicWeight(value)) {
|
|
1265
|
+
throw new ZLinkConfigurationException(
|
|
1266
|
+
`${label} must be an integer in 0..${ZLINK_MAX_PUBLIC_WEIGHT}.`
|
|
1267
|
+
);
|
|
1263
1268
|
}
|
|
1264
1269
|
return value;
|
|
1265
1270
|
}
|
|
@@ -1351,7 +1356,7 @@ function objectCapability(
|
|
|
1351
1356
|
}
|
|
1352
1357
|
|
|
1353
1358
|
function aggregatePlacementCapacity(actorLimit: number, spotLimit: number): number {
|
|
1354
|
-
const unlimited =
|
|
1359
|
+
const unlimited = ZLINK_MAX_CAPACITY;
|
|
1355
1360
|
const actors = actorLimit === 0 ? unlimited : actorLimit;
|
|
1356
1361
|
const spots = spotLimit === 0 ? unlimited : spotLimit;
|
|
1357
1362
|
return Math.min(unlimited, actors + spots);
|
|
@@ -1,42 +1,40 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type RoutingId,
|
|
3
|
+
type ZLinkChannelClient,
|
|
4
|
+
type ZLinkChannelRequestCall,
|
|
5
|
+
type ZLinkMessageMetadata,
|
|
6
|
+
type ZLinkPublishCall,
|
|
7
|
+
type ZLinkRequestCall,
|
|
8
|
+
type ZLinkSendCall,
|
|
9
|
+
type ZLinkSpotOutbound,
|
|
10
|
+
type ZLinkSpotPublisherClient,
|
|
11
|
+
type ZLinkSpotRequestCall,
|
|
12
|
+
type ZLinkSpotSendCall,
|
|
13
|
+
ZLinkSpotKind
|
|
14
|
+
} from '../../contracts';
|
|
15
|
+
|
|
16
|
+
import {
|
|
17
|
+
ZLINK_MAX_MESH_NAME_BYTES,
|
|
18
|
+
ZLINK_MAX_STABLE_TYPE_BYTES
|
|
19
|
+
} from '../../contracts/Common/CoreTypes';
|
|
20
|
+
import type { ZLinkBackendSpot } from '../backend/contracts';
|
|
21
|
+
import { ZLinkConfigurationException } from '../configuration';
|
|
22
|
+
import { requireZLinkYieldTurn } from '../execution';
|
|
1
23
|
import {
|
|
2
24
|
ZLinkFrameworkInternalErrorKind,
|
|
3
|
-
createInternalFrameworkException
|
|
4
|
-
internalFrameworkErrorKind
|
|
25
|
+
createInternalFrameworkException
|
|
5
26
|
} from '../framework-errors-internal';
|
|
6
|
-
import {
|
|
7
|
-
import { ZLinkFrameworkException } from '../../contracts/Errors';
|
|
8
|
-
import type {
|
|
9
|
-
RoutingId,
|
|
10
|
-
ZLinkChannelClient,
|
|
11
|
-
ZLinkChannelRequestCall,
|
|
12
|
-
ZLinkPublishCall,
|
|
13
|
-
ZLinkRequestCall,
|
|
14
|
-
ZLinkSendCall,
|
|
15
|
-
ZLinkMessageMetadata,
|
|
16
|
-
ZLinkSpotOutbound,
|
|
17
|
-
ZLinkSpotRequestCall,
|
|
18
|
-
ZLinkSpotSendCall,
|
|
19
|
-
ZLinkSpotPublisherClient
|
|
20
|
-
} from '../../contracts';
|
|
27
|
+
import { resolveFrameworkPacketName } from '../messaging/packet-name';
|
|
21
28
|
import {
|
|
22
29
|
requireOneWayCompletion,
|
|
23
30
|
throwAlreadySubmitted,
|
|
24
31
|
type ZLinkSubmitResult
|
|
25
32
|
} from '../messaging/submission-result';
|
|
26
33
|
import { normalizeOpaqueRoutingId } from '../routing-id';
|
|
27
|
-
import { ZLinkConfigurationException } from '../configuration';
|
|
28
|
-
import type { ZLinkBackendSpot } from '../backend/contracts';
|
|
29
34
|
import { deliverOnSerial } from '../workers';
|
|
30
|
-
import {
|
|
31
|
-
import { resolveFrameworkPacketName } from '../messaging/packet-name';
|
|
35
|
+
import { resolveSpotHandle, type ResolvedSpotHandle, type SpotHandle } from './spot-handle';
|
|
32
36
|
import type { ZLinkSpotRouteTarget } from './spot-routing-internal';
|
|
33
37
|
import { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
|
|
34
|
-
import {
|
|
35
|
-
resolveSpotHandle,
|
|
36
|
-
refreshSpotHandle,
|
|
37
|
-
type SpotHandle,
|
|
38
|
-
type ResolvedSpotHandle
|
|
39
|
-
} from './spot-handle';
|
|
40
38
|
|
|
41
39
|
export interface DefaultZLinkSpotOutboundOptions {
|
|
42
40
|
readonly serial: ZLinkSpotSerialTurnExecutor;
|
|
@@ -228,6 +226,7 @@ export interface ZLinkSpotRoutedTransport {
|
|
|
228
226
|
}
|
|
229
227
|
|
|
230
228
|
export interface ZLinkSpotRoutedSendOptions {
|
|
229
|
+
readonly instanceSpot?: boolean;
|
|
231
230
|
readonly packetName?: string;
|
|
232
231
|
/** Internal end-to-end budget remaining for route admission. */
|
|
233
232
|
readonly timeoutMs?: number;
|
|
@@ -267,13 +266,21 @@ function createAddressedSpotSendCall(
|
|
|
267
266
|
selectOnce(options, 'instanceSpot');
|
|
268
267
|
options.instanceSpot = true;
|
|
269
268
|
if (instanceSpotType !== undefined) {
|
|
270
|
-
options.instanceSpotType = requireAddressValue(
|
|
269
|
+
options.instanceSpotType = requireAddressValue(
|
|
270
|
+
instanceSpotType,
|
|
271
|
+
'Instance Spot type',
|
|
272
|
+
ZLINK_MAX_STABLE_TYPE_BYTES
|
|
273
|
+
);
|
|
271
274
|
}
|
|
272
275
|
return this;
|
|
273
276
|
},
|
|
274
277
|
inMesh(meshName: string) {
|
|
275
278
|
selectOnce(options, 'inMesh');
|
|
276
|
-
options.initialMeshName = requireAddressValue(
|
|
279
|
+
options.initialMeshName = requireAddressValue(
|
|
280
|
+
meshName,
|
|
281
|
+
'Mesh name',
|
|
282
|
+
ZLINK_MAX_MESH_NAME_BYTES
|
|
283
|
+
);
|
|
277
284
|
return this;
|
|
278
285
|
},
|
|
279
286
|
async submit(signal?: AbortSignal): Promise<void> {
|
|
@@ -323,13 +330,21 @@ function createAddressedSpotRequestCall(
|
|
|
323
330
|
selectOnce(options, 'instanceSpot');
|
|
324
331
|
options.instanceSpot = true;
|
|
325
332
|
if (instanceSpotType !== undefined) {
|
|
326
|
-
options.instanceSpotType = requireAddressValue(
|
|
333
|
+
options.instanceSpotType = requireAddressValue(
|
|
334
|
+
instanceSpotType,
|
|
335
|
+
'Instance Spot type',
|
|
336
|
+
ZLINK_MAX_STABLE_TYPE_BYTES
|
|
337
|
+
);
|
|
327
338
|
}
|
|
328
339
|
return this;
|
|
329
340
|
},
|
|
330
341
|
inMesh(meshName: string) {
|
|
331
342
|
selectOnce(options, 'inMesh');
|
|
332
|
-
options.initialMeshName = requireAddressValue(
|
|
343
|
+
options.initialMeshName = requireAddressValue(
|
|
344
|
+
meshName,
|
|
345
|
+
'Mesh name',
|
|
346
|
+
ZLINK_MAX_MESH_NAME_BYTES
|
|
347
|
+
);
|
|
333
348
|
return this;
|
|
334
349
|
},
|
|
335
350
|
timeout(timeoutMs: number) {
|
|
@@ -680,29 +695,7 @@ export async function requestToSpotHandle<TReply = unknown>(
|
|
|
680
695
|
return transport.requestToSpot<TReply>(target, request, transportOptions);
|
|
681
696
|
};
|
|
682
697
|
|
|
683
|
-
|
|
684
|
-
try {
|
|
685
|
-
return await requestResolved(resolved);
|
|
686
|
-
} catch (error) {
|
|
687
|
-
if (!shouldRefreshAfterRouteDisconnect(resolved, error)) {
|
|
688
|
-
throw error;
|
|
689
|
-
}
|
|
690
|
-
let refreshed: ResolvedSpotHandle | undefined;
|
|
691
|
-
try {
|
|
692
|
-
refreshed = await refreshSpotHandle(spot, options.signal);
|
|
693
|
-
} catch {
|
|
694
|
-
throw error;
|
|
695
|
-
}
|
|
696
|
-
if (isShutdownTargetState(refreshed?.targetNodeState)) {
|
|
697
|
-
throw createInternalFrameworkException(
|
|
698
|
-
ZLinkFrameworkInternalErrorKind.RuntimeShutdown,
|
|
699
|
-
`Spot '${String(spot.spotId)}' target host is shutting down.`,
|
|
700
|
-
false,
|
|
701
|
-
error
|
|
702
|
-
);
|
|
703
|
-
}
|
|
704
|
-
throw error;
|
|
705
|
-
}
|
|
698
|
+
return requestResolved(await requireSpotRef(spot, options.signal));
|
|
706
699
|
}
|
|
707
700
|
|
|
708
701
|
async function requireSpotRef(
|
|
@@ -730,20 +723,6 @@ function spotRefToSpotRouteTarget(
|
|
|
730
723
|
};
|
|
731
724
|
}
|
|
732
725
|
|
|
733
|
-
function shouldRefreshAfterRouteDisconnect(target: ResolvedSpotHandle, error: unknown): boolean {
|
|
734
|
-
return (
|
|
735
|
-
target.targetNodeState === ZLinkFrameworkRuntimeState.Serving &&
|
|
736
|
-
error instanceof ZLinkFrameworkException &&
|
|
737
|
-
internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.RouteNotConnected
|
|
738
|
-
);
|
|
739
|
-
}
|
|
740
|
-
|
|
741
|
-
function isShutdownTargetState(state: ResolvedSpotHandle['targetNodeState']): boolean {
|
|
742
|
-
return (
|
|
743
|
-
state === ZLinkFrameworkRuntimeState.Draining || state === ZLinkFrameworkRuntimeState.Stopped
|
|
744
|
-
);
|
|
745
|
-
}
|
|
746
|
-
|
|
747
726
|
function normalizeSpotRefRoutingId(routingId: RoutingId): RoutingId {
|
|
748
727
|
return normalizeOpaqueRoutingId(routingId);
|
|
749
728
|
}
|