@zlink-systems/framework 0.26.0 → 0.28.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/Actors/ZLinkActorClient.d.ts +1 -1
- package/dist/contracts/Channels/Calls.d.ts +1 -1
- 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/Builders.d.ts +0 -1
- package/dist/contracts/Configuration/Configs.d.ts +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 -5
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -14
- 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/Spots/Contracts.d.ts +2 -2
- package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
- package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
- package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
- package/dist/internal.d.ts +4 -0
- package/dist/internal.js +15 -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 +1 -2
- package/dist/runtime/activation-admission.js +2 -6
- 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 +49 -153
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +13 -11
- package/dist/runtime/actors/actor-handoff.d.ts +4 -4
- package/dist/runtime/actors/actor-handoff.js +8 -8
- 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 +83 -105
- 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 +1 -1
- package/dist/runtime/actors/actor-remote-joiner.js +5 -9
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +1 -0
- package/dist/runtime/actors/actor-request-deadline.js +6 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
- 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/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
- package/dist/runtime/actors/deferred-join-completion.js +1 -0
- package/dist/runtime/actors/index.d.ts +9 -7
- package/dist/runtime/actors/index.js +87 -69
- 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 +2 -0
- package/dist/runtime/admission.js +7 -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 +7 -27
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
- 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-support.d.ts +3 -1
- package/dist/runtime/backend/node/node-backend-adapter-support.js +51 -10
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +1 -2
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.js +41 -34
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +1 -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 -8
- package/dist/runtime/channels/channel-clients.js +73 -59
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.d.ts +1 -1
- package/dist/runtime/channels/channel-envelope.js +51 -39
- package/dist/runtime/channels/channel-outbound-operations.d.ts +5 -2
- package/dist/runtime/channels/channel-outbound-operations.js +25 -42
- 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 +4 -4
- package/dist/runtime/channels/channel-runtime-manager.js +13 -10
- package/dist/runtime/channels/channel-socket-options.js +3 -12
- package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
- package/dist/runtime/channels/channel-socket-registry.js +240 -177
- package/dist/runtime/channels/channel-transports.d.ts +21 -31
- package/dist/runtime/channels/channel-transports.js +80 -62
- 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 +130 -72
- package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/local-spot-route-transport.js +1 -3
- package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
- package/dist/runtime/channels/source-spot-router.d.ts +1 -1
- package/dist/runtime/channels/source-spot-router.js +2 -4
- 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.d.ts +1 -1
- package/dist/runtime/channels/spot-node-route-transport.js +5 -5
- package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
- package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
- package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
- 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 +12 -9
- package/dist/runtime/execution/index.js +58 -14
- package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
- package/dist/runtime/execution/serial-execution-queue.js +54 -15
- 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/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 +8 -5
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +79 -94
- 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.js +22 -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 +0 -6
- 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-object-owner.js +3 -2
- 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 -12
- 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 +26 -25
- package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
- package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
- package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
- package/dist/runtime/foundation/service-topology-registry.js +17 -32
- 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 +11 -8
- package/dist/runtime/host/actor-packet-relay.js +54 -99
- 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 +16 -18
- package/dist/runtime/host/actor-transfer-runtime.js +143 -176
- 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 +14 -13
- package/dist/runtime/host/index.js +190 -171
- 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 +15 -28
- package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
- package/dist/runtime/host/route-mesh-runtime.js +171 -252
- 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 +21 -30
- package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
- package/dist/runtime/host/spot-address-transport.d.ts +3 -12
- package/dist/runtime/host/spot-address-transport.js +78 -220
- 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 -10
- package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
- package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
- 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 +72 -22
- 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 +4 -9
- package/dist/runtime/locations/lifecycle.js +2 -31
- 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 +309 -336
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +37 -28
- 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 +6 -0
- package/dist/runtime/locations/spot-location-claims.js +42 -1
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/request-deadline.d.ts +3 -0
- package/dist/runtime/messaging/request-deadline.js +39 -0
- package/dist/runtime/messaging/submission-result.d.ts +4 -0
- package/dist/runtime/messaging/submission-result.js +56 -1
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
- package/dist/runtime/spots/index.d.ts +14 -20
- package/dist/runtime/spots/index.js +302 -176
- package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
- package/dist/runtime/spots/spot-activation-registry.js +14 -50
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +2 -2
- package/dist/runtime/spots/spot-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-activation.js +49 -32
- 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 +4 -52
- package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
- package/dist/runtime/spots/spot-actor-membership.js +22 -45
- 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 +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +9 -20
- 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 +5 -4
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
- package/dist/runtime/spots/spot-outbound.d.ts +7 -8
- package/dist/runtime/spots/spot-outbound.js +21 -23
- 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 -3
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
- 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 +2 -16
- package/dist/runtime/spots/spot-serial-executor.js +2 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
- package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +8 -4
- package/dist/runtime/streams/bound-actor-relay-sender.js +65 -41
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -2
- package/dist/runtime/streams/index.d.ts +16 -17
- package/dist/runtime/streams/index.js +22 -23
- package/dist/runtime/streams/managed-stream.d.ts +5 -2
- package/dist/runtime/streams/managed-stream.js +20 -13
- package/dist/runtime/streams/native-fallback-bound-session.js +14 -19
- 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 +6 -8
- package/dist/runtime/streams/session-calls.js +6 -22
- package/dist/runtime/streams/session-context.d.ts +10 -10
- package/dist/runtime/streams/session-context.js +25 -10
- package/dist/runtime/streams/session-requests.js +2 -1
- 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/Actors/ZLinkActorClient.ts +1 -1
- package/src/contracts/Channels/Calls.ts +1 -1
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/Builders.ts +0 -1
- package/src/contracts/Configuration/Configs.ts +0 -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 -71
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -5
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -17
- 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/Spots/Contracts.ts +2 -2
- package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
- package/src/contracts/Streams/IZLinkSession.ts +2 -3
- package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
- package/src/internal.ts +14 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +2 -8
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +85 -218
- package/src/runtime/actors/actor-context.ts +39 -33
- package/src/runtime/actors/actor-handoff.ts +24 -22
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +172 -174
- 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 +9 -11
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +4 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +10 -6
- package/src/runtime/actors/index.ts +100 -79
- 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 +8 -1
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +14 -37
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-support.ts +67 -10
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
- package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +44 -49
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +4 -3
- package/src/runtime/backend/raw-binding-port.ts +1 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +139 -102
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +74 -57
- package/src/runtime/channels/channel-outbound-operations.ts +40 -55
- 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 +12 -30
- package/src/runtime/channels/channel-socket-options.ts +8 -15
- package/src/runtime/channels/channel-socket-registry.ts +291 -196
- package/src/runtime/channels/channel-transports.ts +168 -145
- 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 +172 -91
- package/src/runtime/channels/local-spot-route-transport.ts +1 -5
- package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
- package/src/runtime/channels/source-spot-router.ts +2 -9
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +7 -9
- package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
- 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 +60 -20
- package/src/runtime/execution/serial-execution-queue.ts +131 -18
- 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/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +127 -125
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +31 -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 +0 -10
- 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-object-owner.ts +5 -2
- 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 -17
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
- package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
- package/src/runtime/foundation/service-topology-registry.ts +23 -32
- 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 +63 -160
- 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 +180 -260
- 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 +327 -320
- 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 +16 -57
- package/src/runtime/host/route-mesh-runtime.ts +228 -271
- 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 +699 -561
- package/src/runtime/host/spot-address-transport.ts +175 -356
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
- package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
- 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 +100 -25
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +13 -43
- 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 +457 -482
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +75 -49
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +58 -1
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/request-deadline.ts +58 -0
- package/src/runtime/messaging/submission-result.ts +72 -2
- package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
- package/src/runtime/spots/index.ts +433 -229
- package/src/runtime/spots/spot-activation-registry.ts +30 -69
- package/src/runtime/spots/spot-activation-state.ts +2 -2
- package/src/runtime/spots/spot-activation.ts +67 -37
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
- package/src/runtime/spots/spot-actor-membership.ts +40 -72
- 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 -30
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +21 -17
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
- package/src/runtime/spots/spot-outbound.ts +59 -47
- 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 -26
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +5 -27
- package/src/runtime/spots/spot-serial-executor.ts +2 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +98 -66
- package/src/runtime/streams/bound-session-service.ts +22 -2
- package/src/runtime/streams/index.ts +78 -68
- package/src/runtime/streams/managed-stream.ts +32 -23
- package/src/runtime/streams/native-fallback-bound-session.ts +14 -28
- 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 +11 -36
- package/src/runtime/streams/session-context.ts +60 -25
- package/src/runtime/streams/session-requests.ts +2 -1
- 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/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/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -20,6 +20,7 @@ import { ZLinkFrameworkException } from '../../contracts';
|
|
|
20
20
|
import {
|
|
21
21
|
decodeServiceInstanceAuthorityPayload,
|
|
22
22
|
decodeServiceReadySpotAuthority,
|
|
23
|
+
decodeServiceClosingSpotAuthority,
|
|
23
24
|
encodeServiceInstanceAuthorityPayload
|
|
24
25
|
} from '../foundation/service-authority-payload-codec';
|
|
25
26
|
import type {
|
|
@@ -36,7 +37,6 @@ import type {
|
|
|
36
37
|
} from '../foundation/service-stateful-wire-codec';
|
|
37
38
|
import { routingIdsEqual } from '../routing-id';
|
|
38
39
|
import { encodeAuthorityKey } from '../locations/authority-key-codec';
|
|
39
|
-
import { crc32c } from '../foundation/service-relocation-runtime';
|
|
40
40
|
import { putNewRelocationBlob, relocationBlobReference } from '../locations/relocation-blob';
|
|
41
41
|
|
|
42
42
|
import {
|
|
@@ -80,7 +80,8 @@ export class ZLinkInstanceActivationAuthority implements ServiceAsyncInstanceAct
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
async reserve(
|
|
83
|
-
activation: Omit<ServiceInstanceActivationRecoveryEnvelope, 'targetMeshName'
|
|
83
|
+
activation: Omit<ServiceInstanceActivationRecoveryEnvelope, 'targetMeshName'>,
|
|
84
|
+
signal?: AbortSignal
|
|
84
85
|
): Promise<ServiceInstanceAuthorityReserve> {
|
|
85
86
|
const target = activation.target;
|
|
86
87
|
const owner = this.requireOwner();
|
|
@@ -99,15 +100,15 @@ export class ZLinkInstanceActivationAuthority implements ServiceAsyncInstanceAct
|
|
|
99
100
|
const stored = await putNewRelocationBlob(
|
|
100
101
|
relocationStore,
|
|
101
102
|
requestBytes,
|
|
102
|
-
CREATION_REQUEST_RETENTION_MS
|
|
103
|
+
CREATION_REQUEST_RETENTION_MS,
|
|
104
|
+
signal
|
|
103
105
|
);
|
|
104
|
-
const storedRead = await relocationStore.read(stored.reference);
|
|
106
|
+
const storedRead = await relocationStore.read(stored.reference, signal);
|
|
105
107
|
if (
|
|
106
108
|
stored.reference.value.length === 0 ||
|
|
107
109
|
stored.expiresAt.getTime() <= stored.storeNow.getTime() ||
|
|
108
110
|
storedRead.kind !== 'found' ||
|
|
109
|
-
|
|
110
|
-
!Buffer.from(storedRead.bytes).equals(requestBytes)
|
|
111
|
+
Buffer.compare(storedRead.bytes, requestBytes) !== 0
|
|
111
112
|
) {
|
|
112
113
|
await this.deleteOrphan(stored.reference);
|
|
113
114
|
throw new Error('Relocation Store returned an invalid creation request receipt.');
|
|
@@ -115,50 +116,44 @@ export class ZLinkInstanceActivationAuthority implements ServiceAsyncInstanceAct
|
|
|
115
116
|
let reserved: Awaited<ReturnType<ZLinkObjectCreationStore['reserve']>>;
|
|
116
117
|
try {
|
|
117
118
|
for (;;) {
|
|
118
|
-
reserved = await this.options.store.reserve(
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
requestContentReference: stored.reference.value,
|
|
123
|
-
requestSha256: requestHash,
|
|
124
|
-
requestEncodedSize: BigInt(requestBytes.byteLength)
|
|
125
|
-
},
|
|
126
|
-
target: {
|
|
127
|
-
meshName: this.options.meshName,
|
|
128
|
-
nodeRid: target.targetNodeRid,
|
|
129
|
-
nodeLifecycleGeneration: target.targetNodeGeneration,
|
|
130
|
-
owner
|
|
131
|
-
},
|
|
132
|
-
creatingPayload: encodeServiceInstanceAuthorityPayload({
|
|
133
|
-
state: 'coldActivating',
|
|
134
|
-
stableType: target.stableType,
|
|
135
|
-
spotId: target.targetSpotId,
|
|
136
|
-
ownerId: owner.ownerId,
|
|
137
|
-
ownerLeaseGeneration: owner.leaseGeneration,
|
|
138
|
-
ownerMeshName: this.options.meshName,
|
|
139
|
-
ownerNodeRid: target.targetNodeRid,
|
|
140
|
-
ownerNodeGeneration: target.targetNodeGeneration
|
|
141
|
-
}),
|
|
142
|
-
capacity: {
|
|
143
|
-
actors: 0,
|
|
144
|
-
spots: 1,
|
|
145
|
-
spotType: {
|
|
146
|
-
objectKind: 'instance_spot',
|
|
119
|
+
reserved = await this.options.store.reserve(
|
|
120
|
+
{
|
|
121
|
+
key: { kind: 'instance_spot', globalId: target.targetSpotId },
|
|
122
|
+
intent: {
|
|
147
123
|
stableType: target.stableType,
|
|
148
|
-
|
|
124
|
+
requestContentReference: stored.reference.value,
|
|
125
|
+
requestSha256: requestHash,
|
|
126
|
+
requestEncodedSize: BigInt(requestBytes.byteLength)
|
|
127
|
+
},
|
|
128
|
+
target: {
|
|
129
|
+
meshName: this.options.meshName,
|
|
130
|
+
nodeRid: target.targetNodeRid,
|
|
131
|
+
nodeLifecycleGeneration: target.targetNodeGeneration,
|
|
132
|
+
owner
|
|
133
|
+
},
|
|
134
|
+
creatingPayload: encodeServiceInstanceAuthorityPayload({
|
|
135
|
+
state: 'coldActivating',
|
|
136
|
+
stableType: target.stableType,
|
|
137
|
+
spotId: target.targetSpotId,
|
|
138
|
+
ownerId: owner.ownerId,
|
|
139
|
+
ownerLeaseGeneration: owner.leaseGeneration,
|
|
140
|
+
ownerMeshName: this.options.meshName,
|
|
141
|
+
ownerNodeRid: target.targetNodeRid,
|
|
142
|
+
ownerNodeGeneration: target.targetNodeGeneration
|
|
143
|
+
}),
|
|
144
|
+
capacity: {
|
|
145
|
+
actors: 0,
|
|
146
|
+
spots: 1,
|
|
147
|
+
spotType: {
|
|
148
|
+
objectKind: 'instance_spot',
|
|
149
|
+
stableType: target.stableType,
|
|
150
|
+
count: 1
|
|
151
|
+
}
|
|
149
152
|
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
reserved.current.kind === 'snapshot'
|
|
155
|
-
? decodeServiceInstanceAuthorityPayload(reserved.current.payload)?.state
|
|
156
|
-
: undefined;
|
|
157
|
-
if (existingState === 'closing') {
|
|
158
|
-
await this.awaitClosingRelease(target, activation.deadlineUnixMs);
|
|
159
|
-
continue;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
153
|
+
},
|
|
154
|
+
undefined,
|
|
155
|
+
activation.deadlineUnixMs
|
|
156
|
+
);
|
|
162
157
|
if (reserved.kind !== 'alreadyExists') break;
|
|
163
158
|
this.options.metrics?.recordInstanceSpotClaimConflict(
|
|
164
159
|
this.options.meshName,
|
|
@@ -266,40 +261,45 @@ export class ZLinkInstanceActivationAuthority implements ServiceAsyncInstanceAct
|
|
|
266
261
|
async commit(
|
|
267
262
|
target: ServiceInstanceActivationTarget,
|
|
268
263
|
reservation: ServiceInstanceActivationReservation,
|
|
269
|
-
spot: ServiceSpotState
|
|
264
|
+
spot: ServiceSpotState,
|
|
265
|
+
deadlineUnixMs?: bigint
|
|
270
266
|
): Promise<{ readonly kind: 'committed' | 'lost'; readonly route: ServiceInstanceRouteFence }> {
|
|
271
267
|
const pending = this.requirePending(reservation);
|
|
272
268
|
requireCommitIdentity(target, reservation, pending.creating, spot, this.options.meshName);
|
|
273
269
|
let result;
|
|
274
270
|
try {
|
|
275
|
-
result = await this.options.store.commit(
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
271
|
+
result = await this.options.store.commit(
|
|
272
|
+
{
|
|
273
|
+
key: { kind: 'instance_spot', globalId: target.targetSpotId },
|
|
274
|
+
reservationId: pending.reservationId,
|
|
275
|
+
expectedStoreVersion: pending.creating.storeVersion.value,
|
|
276
|
+
target: {
|
|
277
|
+
meshName: this.options.meshName,
|
|
278
|
+
nodeRid: target.targetNodeRid,
|
|
279
|
+
nodeLifecycleGeneration: target.targetNodeGeneration,
|
|
280
|
+
owner: pending.owner
|
|
281
|
+
},
|
|
282
|
+
readyPayload: encodeServiceInstanceAuthorityPayload({
|
|
283
|
+
state: 'ready',
|
|
284
|
+
stableType: spot.stableType,
|
|
285
|
+
spotId: spot.ref.spotId,
|
|
286
|
+
ownerId: pending.owner.ownerId,
|
|
287
|
+
ownerLeaseGeneration: pending.owner.leaseGeneration,
|
|
288
|
+
ownerMeshName: this.options.meshName,
|
|
289
|
+
ownerNodeRid: target.targetNodeRid,
|
|
290
|
+
ownerNodeGeneration: target.targetNodeGeneration,
|
|
291
|
+
activationRecovery: {
|
|
292
|
+
reference: pending.requestReference.value,
|
|
293
|
+
sha256: pending.requestSha256,
|
|
294
|
+
encodedSize: pending.requestEncodedSize,
|
|
295
|
+
inboxSequence: 1n,
|
|
296
|
+
replayCursor: 0n
|
|
297
|
+
}
|
|
298
|
+
})
|
|
284
299
|
},
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
spotId: spot.ref.spotId,
|
|
289
|
-
ownerId: pending.owner.ownerId,
|
|
290
|
-
ownerLeaseGeneration: pending.owner.leaseGeneration,
|
|
291
|
-
ownerMeshName: this.options.meshName,
|
|
292
|
-
ownerNodeRid: target.targetNodeRid,
|
|
293
|
-
ownerNodeGeneration: target.targetNodeGeneration,
|
|
294
|
-
activationRecovery: {
|
|
295
|
-
reference: pending.requestReference.value,
|
|
296
|
-
sha256: pending.requestSha256,
|
|
297
|
-
encodedSize: pending.requestEncodedSize,
|
|
298
|
-
inboxSequence: 1n,
|
|
299
|
-
replayCursor: 0n
|
|
300
|
-
}
|
|
301
|
-
})
|
|
302
|
-
});
|
|
300
|
+
undefined,
|
|
301
|
+
deadlineUnixMs
|
|
302
|
+
);
|
|
303
303
|
} catch (error) {
|
|
304
304
|
if (error instanceof ZLinkFrameworkException) throw error;
|
|
305
305
|
throw createInternalFrameworkException(
|
|
@@ -483,32 +483,6 @@ export class ZLinkInstanceActivationAuthority implements ServiceAsyncInstanceAct
|
|
|
483
483
|
);
|
|
484
484
|
}
|
|
485
485
|
|
|
486
|
-
private async awaitClosingRelease(
|
|
487
|
-
target: ServiceInstanceActivationTarget,
|
|
488
|
-
deadlineUnixMs: bigint
|
|
489
|
-
): Promise<void> {
|
|
490
|
-
const key = authorityKey(target.targetSpotId);
|
|
491
|
-
const deadlineMs = performance.now() + Number(deadlineUnixMs - BigInt(Date.now()));
|
|
492
|
-
while (performance.now() <= deadlineMs) {
|
|
493
|
-
const current = await this.options.store.readAuthority(key);
|
|
494
|
-
if (current.kind !== 'snapshot') return;
|
|
495
|
-
const decoded = decodeServiceInstanceAuthorityPayload(current.payload);
|
|
496
|
-
if (
|
|
497
|
-
current.allocation.objectKind !== 'instance_spot' ||
|
|
498
|
-
current.allocation.stableType !== target.stableType ||
|
|
499
|
-
decoded?.kind !== 'instance_spot' ||
|
|
500
|
-
decoded.spotId !== target.targetSpotId
|
|
501
|
-
) {
|
|
502
|
-
throw new Error('Instance authority changed to a different Spot while closing.');
|
|
503
|
-
}
|
|
504
|
-
if (decoded.state !== 'closing') return;
|
|
505
|
-
await waitForActivationJoin(deadlineMs);
|
|
506
|
-
}
|
|
507
|
-
throw new Error(
|
|
508
|
-
`Instance Spot '${target.targetSpotId}' close did not release authority before deadline.`
|
|
509
|
-
);
|
|
510
|
-
}
|
|
511
|
-
|
|
512
486
|
private requirePending(reservation: ServiceInstanceActivationReservation): PendingReservation {
|
|
513
487
|
const pending = this.pending.get(reservation.token);
|
|
514
488
|
if (pending === undefined || pending.creating.objectGeneration !== reservation.attempt) {
|
|
@@ -522,12 +496,13 @@ function readyRead(
|
|
|
522
496
|
snapshot: ZLinkAuthoritySnapshot,
|
|
523
497
|
target: ServiceInstanceActivationTarget
|
|
524
498
|
): ServiceInstanceAuthorityRead {
|
|
525
|
-
const decoded =
|
|
499
|
+
const decoded =
|
|
500
|
+
decodeServiceReadySpotAuthority(snapshot.payload) ??
|
|
501
|
+
decodeServiceClosingSpotAuthority(snapshot.payload);
|
|
526
502
|
const creating = decodeServiceInstanceAuthorityPayload(snapshot.payload);
|
|
527
503
|
if (
|
|
528
504
|
creating?.state === 'coldActivating' &&
|
|
529
505
|
snapshot.allocation.objectKind === 'instance_spot' &&
|
|
530
|
-
snapshot.allocation.state === 'reserved' &&
|
|
531
506
|
creating.stableType === target.stableType &&
|
|
532
507
|
creating.spotId === target.targetSpotId &&
|
|
533
508
|
creating.ownerId === snapshot.ownerId &&
|
|
@@ -541,7 +516,8 @@ function readyRead(
|
|
|
541
516
|
return {
|
|
542
517
|
kind: 'creating',
|
|
543
518
|
objectGeneration: snapshot.objectGeneration,
|
|
544
|
-
authorityOwnerGeneration: snapshot.authorityOwnerGeneration
|
|
519
|
+
authorityOwnerGeneration: snapshot.authorityOwnerGeneration,
|
|
520
|
+
authority: snapshot
|
|
545
521
|
};
|
|
546
522
|
}
|
|
547
523
|
if (
|
|
@@ -560,14 +536,16 @@ function readyRead(
|
|
|
560
536
|
) {
|
|
561
537
|
return { kind: 'missing' };
|
|
562
538
|
}
|
|
563
|
-
return { kind: 'ready', route: routeFromSnapshot(snapshot) };
|
|
539
|
+
return { kind: 'ready', route: routeFromSnapshot(snapshot), authority: snapshot };
|
|
564
540
|
}
|
|
565
541
|
|
|
566
542
|
function readyExisting(
|
|
567
543
|
snapshot: ZLinkAuthoritySnapshot,
|
|
568
544
|
target: ServiceInstanceActivationTarget
|
|
569
545
|
): Extract<ServiceInstanceAuthorityRead, { readonly kind: 'ready' }> {
|
|
570
|
-
const decoded =
|
|
546
|
+
const decoded =
|
|
547
|
+
decodeServiceReadySpotAuthority(snapshot.payload) ??
|
|
548
|
+
decodeServiceClosingSpotAuthority(snapshot.payload);
|
|
571
549
|
if (
|
|
572
550
|
decoded?.kind !== 'instance_spot' ||
|
|
573
551
|
decoded.stableType !== target.stableType ||
|
|
@@ -582,7 +560,7 @@ function readyExisting(
|
|
|
582
560
|
) {
|
|
583
561
|
throw new Error('Existing Instance authority is not a matching Ready allocation.');
|
|
584
562
|
}
|
|
585
|
-
return { kind: 'ready', route: routeFromSnapshot(snapshot) };
|
|
563
|
+
return { kind: 'ready', route: routeFromSnapshot(snapshot), authority: snapshot };
|
|
586
564
|
}
|
|
587
565
|
|
|
588
566
|
async function waitForActivationJoin(deadlineMs: number): Promise<void> {
|
|
@@ -619,7 +597,9 @@ function requireCommitIdentity(
|
|
|
619
597
|
}
|
|
620
598
|
|
|
621
599
|
function routeFromSnapshot(snapshot: ZLinkAuthoritySnapshot): ServiceInstanceRouteFence {
|
|
622
|
-
const decoded =
|
|
600
|
+
const decoded =
|
|
601
|
+
decodeServiceReadySpotAuthority(snapshot.payload) ??
|
|
602
|
+
decodeServiceClosingSpotAuthority(snapshot.payload);
|
|
623
603
|
if (decoded?.kind !== 'instance_spot') {
|
|
624
604
|
throw new Error('Instance authority is not Ready.');
|
|
625
605
|
}
|
|
@@ -203,13 +203,15 @@ export class ZLinkLocationRuntimeOwner {
|
|
|
203
203
|
async startForRuntime(
|
|
204
204
|
primaryMeshName: string | undefined,
|
|
205
205
|
spotNodeRuntime: ZLinkSpotNodeRuntimeManager,
|
|
206
|
-
channelRuntime: ZLinkChannelRuntimeManager
|
|
206
|
+
channelRuntime: ZLinkChannelRuntimeManager,
|
|
207
|
+
signal: AbortSignal,
|
|
208
|
+
shutdownSignal: () => AbortSignal
|
|
207
209
|
): Promise<ZLinkLocationRuntime | undefined> {
|
|
208
210
|
const runtime = this.ensureRuntime(primaryMeshName);
|
|
209
211
|
if (runtime === undefined) {
|
|
210
212
|
return undefined;
|
|
211
213
|
}
|
|
212
|
-
await runtime.start(this.ownerNodeRid(spotNodeRuntime));
|
|
214
|
+
await runtime.start(this.ownerNodeRid(spotNodeRuntime), signal, shutdownSignal);
|
|
213
215
|
const stores = this.currentStores;
|
|
214
216
|
if (stores === undefined) {
|
|
215
217
|
return runtime;
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
2
|
-
import type { RoutingId
|
|
2
|
+
import type { RoutingId } from '../../contracts';
|
|
3
3
|
import type { Message } from '../../contracts/Common/Message';
|
|
4
4
|
import type { ZLinkBackendActorRef } from '../backend';
|
|
5
5
|
import type { DefaultZLinkActorManager } from '../actors';
|
|
6
|
-
import {
|
|
7
|
-
mergeRemoteBoundSessionTarget,
|
|
8
|
-
preferredRemoteBoundSessionTarget
|
|
9
|
-
} from '../actors/actor-runtime-state';
|
|
10
6
|
import { decodeRemoteActorJoinPayload } from '../actors/actor-remote-wire';
|
|
11
7
|
import type { DefaultZLinkSpotManager } from '../spots';
|
|
12
8
|
import type { ZLinkAuthorityStore } from '../locations/internal-store-contracts';
|
|
@@ -15,7 +11,7 @@ import {
|
|
|
15
11
|
ZLinkFrameworkInternalErrorKind,
|
|
16
12
|
createInternalFrameworkException
|
|
17
13
|
} from '../framework-errors-internal';
|
|
18
|
-
import {
|
|
14
|
+
import { routingIdWireHex, routingIdsEqual } from '../routing-id';
|
|
19
15
|
|
|
20
16
|
export interface ZLinkCanonicalActorJoinAuthorityFence {
|
|
21
17
|
readonly actorId: string;
|
|
@@ -35,10 +31,7 @@ export interface ZLinkRemoteActorJoinReceiverOptions {
|
|
|
35
31
|
export class ZLinkRemoteActorJoinReceiver {
|
|
36
32
|
constructor(private readonly options: ZLinkRemoteActorJoinReceiverOptions) {}
|
|
37
33
|
|
|
38
|
-
async receive(
|
|
39
|
-
payload: unknown,
|
|
40
|
-
routeContext: ZLinkRouteMessageContext
|
|
41
|
-
): Promise<{
|
|
34
|
+
async receive(payload: unknown): Promise<{
|
|
42
35
|
readonly accepted: boolean;
|
|
43
36
|
readonly actorNodeRid: string;
|
|
44
37
|
readonly actorNodeRidHex?: string;
|
|
@@ -77,26 +70,6 @@ export class ZLinkRemoteActorJoinReceiver {
|
|
|
77
70
|
generation: BigInt(join.actorGeneration)
|
|
78
71
|
};
|
|
79
72
|
state.setNativeActorRef(actorRef as unknown as ZLinkBackendActorRef);
|
|
80
|
-
const refreshedTarget = mergeRemoteBoundSessionTarget(
|
|
81
|
-
{
|
|
82
|
-
routerChannelId:
|
|
83
|
-
join.boundSessionRouterChannelId ??
|
|
84
|
-
join.routerChannelId ??
|
|
85
|
-
routeContext.channelName ??
|
|
86
|
-
'',
|
|
87
|
-
targetNodeRid:
|
|
88
|
-
join.boundSessionTargetNodeRid ?? normalizeRoutingId(routeContext.sourceNodeRid),
|
|
89
|
-
spotId:
|
|
90
|
-
join.boundSessionSpotId ??
|
|
91
|
-
join.sourceSpotId ??
|
|
92
|
-
normalizeRoutingId(routeContext.sourceNodeRid)
|
|
93
|
-
},
|
|
94
|
-
preferredRemoteBoundSessionTarget(
|
|
95
|
-
state.remoteBoundSessionTarget,
|
|
96
|
-
state.boundSessionTransferTarget
|
|
97
|
-
)
|
|
98
|
-
);
|
|
99
|
-
state.setRemoteBoundSessionTarget(refreshedTarget);
|
|
100
73
|
const request = RuntimeMessage.from(Buffer.from(join.request, 'base64'));
|
|
101
74
|
try {
|
|
102
75
|
const response = await this.requireSpotManager().admitActorJoin(
|
|
@@ -105,7 +78,6 @@ export class ZLinkRemoteActorJoinReceiver {
|
|
|
105
78
|
request,
|
|
106
79
|
(spot) => {
|
|
107
80
|
state.setJoinedSpot(join.spotId as RoutingId, spot);
|
|
108
|
-
return () => state.clearJoinedSpot();
|
|
109
81
|
},
|
|
110
82
|
undefined,
|
|
111
83
|
undefined,
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
type ActorRef,
|
|
3
|
+
type RoutingId,
|
|
4
|
+
type ZLinkSessionActor,
|
|
5
|
+
ZLinkSpotKind
|
|
6
|
+
} from '../../contracts';
|
|
7
|
+
|
|
3
8
|
import type { DefaultZLinkActorManager, ZLinkRemoteActorPacketTarget } from '../actors';
|
|
4
|
-
import type { ZLinkStreamActorLookupPort } from '../streams/stream-binding-runtime-ports';
|
|
5
9
|
import { decodeRemoteActorPacketTarget } from '../actors/actor-packet-relay-wire';
|
|
6
|
-
import { normalizeRoutingId as normalizeRuntimeRoutingId } from '../routing-id';
|
|
7
|
-
import type { MeshRouterResolver } from './mesh-router-resolver';
|
|
8
10
|
import { routingIdsEqual } from '../routing-id';
|
|
11
|
+
import type { ZLinkStreamActorLookupPort } from '../streams/stream-binding-runtime-ports';
|
|
12
|
+
import type { MeshRouterResolver } from './mesh-router-resolver';
|
|
9
13
|
|
|
10
14
|
export interface ZLinkRemoteActorPacketTargetStoreOptions {
|
|
11
15
|
readonly actorManager: () => DefaultZLinkActorManager | undefined;
|
|
@@ -100,10 +104,7 @@ export class ZLinkRemoteActorPacketTargetStore {
|
|
|
100
104
|
);
|
|
101
105
|
}
|
|
102
106
|
|
|
103
|
-
targetForState(
|
|
104
|
-
actorId: string,
|
|
105
|
-
routerChannelIdHint?: string
|
|
106
|
-
): ZLinkRemoteActorPacketTarget | undefined {
|
|
107
|
+
targetForState(actorId: string): ZLinkRemoteActorPacketTarget | undefined {
|
|
107
108
|
const state = this.options.actorManager()?.getState(actorId);
|
|
108
109
|
if (
|
|
109
110
|
state?.remoteActorPacketTarget !== undefined &&
|
|
@@ -112,51 +113,12 @@ export class ZLinkRemoteActorPacketTargetStore {
|
|
|
112
113
|
) {
|
|
113
114
|
return state.remoteActorPacketTarget;
|
|
114
115
|
}
|
|
115
|
-
|
|
116
|
-
if (spotId !== undefined && state?.remoteActorPacketTarget !== undefined) {
|
|
117
|
-
// The cached packet target refers to a different Spot than the
|
|
118
|
-
// actor's current membership (the actor just moved Entry -> User).
|
|
119
|
-
// Combining the stale target's node with the new Spot id fabricates
|
|
120
|
-
// a route with no complete Ready authority fence, and the next
|
|
121
|
-
// direct request then fails the fence check instead of resolving
|
|
122
|
-
// the current owner route (spec 12 §direct payload uses the
|
|
123
|
-
// Location Store's current owner route; spec 32:87 — an unavailable
|
|
124
|
-
// route is Unavailable, not a fabricated hit). Publish no hint so
|
|
125
|
-
// the source clears its cache and re-resolves completely.
|
|
126
|
-
return undefined;
|
|
127
|
-
}
|
|
128
|
-
const actorRef = state?.nativeActorRef as ActorRef | undefined;
|
|
129
|
-
const targetNodeRid =
|
|
130
|
-
(actorRef?.nodeRid as RoutingId | undefined) ?? this.options.primaryNodeRid();
|
|
131
|
-
const routerChannelId =
|
|
132
|
-
routerChannelIdHint ??
|
|
133
|
-
this.options.meshRouters.defaultSpotRouterChannelId() ??
|
|
134
|
-
this.options.meshRouters.defaultRouterChannelId();
|
|
135
|
-
const localNodeRid = this.options.primaryNodeRid();
|
|
136
|
-
if (
|
|
137
|
-
spotId === undefined &&
|
|
138
|
-
targetNodeRid !== undefined &&
|
|
139
|
-
localNodeRid !== undefined &&
|
|
140
|
-
routingIdsEqual(targetNodeRid, localNodeRid)
|
|
141
|
-
) {
|
|
142
|
-
return undefined;
|
|
143
|
-
}
|
|
144
|
-
if (spotId === undefined || targetNodeRid === undefined || routerChannelId === undefined) {
|
|
145
|
-
return undefined;
|
|
146
|
-
}
|
|
147
|
-
return {
|
|
148
|
-
routerChannelId,
|
|
149
|
-
targetNodeRid: normalizeRuntimeRoutingId(targetNodeRid),
|
|
150
|
-
spotId: validateSpotId(spotId),
|
|
151
|
-
spotKind: ZLinkSpotKind.User,
|
|
152
|
-
...(state?.spotGeneration === undefined ? {} : { targetSpotGeneration: state.spotGeneration })
|
|
153
|
-
};
|
|
116
|
+
return undefined;
|
|
154
117
|
}
|
|
155
118
|
|
|
156
119
|
targetForActorRef(actorRef: ActorRef): ZLinkRemoteActorPacketTarget | undefined {
|
|
157
120
|
const targetNodeRid = actorRef.nodeRid as RoutingId;
|
|
158
|
-
|
|
159
|
-
if (localNodeRid !== undefined && routingIdsEqual(localNodeRid, targetNodeRid)) {
|
|
121
|
+
if (this.isLocalActorRef(actorRef)) {
|
|
160
122
|
return undefined;
|
|
161
123
|
}
|
|
162
124
|
const meshName = actorRef.meshName;
|
|
@@ -176,6 +138,11 @@ export class ZLinkRemoteActorPacketTargetStore {
|
|
|
176
138
|
};
|
|
177
139
|
}
|
|
178
140
|
|
|
141
|
+
isLocalActorRef(actorRef: ActorRef): boolean {
|
|
142
|
+
const localNodeRid = this.options.primaryNodeRid();
|
|
143
|
+
return localNodeRid !== undefined && routingIdsEqual(localNodeRid, actorRef.nodeRid);
|
|
144
|
+
}
|
|
145
|
+
|
|
179
146
|
tenureKeyForActor(actor: ZLinkSessionActor): string {
|
|
180
147
|
return sessionActorPacketTargetTenureKey(actor);
|
|
181
148
|
}
|
|
@@ -236,11 +203,3 @@ function sessionActorPacketTargetTenureKeyForRef(actorId: string, actorRef: Acto
|
|
|
236
203
|
ref.ownerLeaseGeneration?.toString() ?? ''
|
|
237
204
|
].join(':');
|
|
238
205
|
}
|
|
239
|
-
|
|
240
|
-
function validateSpotId(value: string): SpotId {
|
|
241
|
-
const byteLength = Buffer.byteLength(value, 'utf8');
|
|
242
|
-
if (byteLength < 1 || byteLength > 255) {
|
|
243
|
-
throw new TypeError('SpotId must contain between 1 and 255 UTF-8 bytes.');
|
|
244
|
-
}
|
|
245
|
-
return value;
|
|
246
|
-
}
|
|
@@ -54,10 +54,7 @@ export interface ZLinkRemoteBoundSessionRelayOptions {
|
|
|
54
54
|
readonly destroyedActorRefs: ReadonlyMap<string, ActorRef>;
|
|
55
55
|
readonly boundSessionFactory: (actorId: string) => DefaultZLinkBoundSession;
|
|
56
56
|
readonly updateRemoteActorPacketTarget: (actorId: string, value: unknown) => Promise<void>;
|
|
57
|
-
readonly actorPacketTargetForState: (
|
|
58
|
-
actorId: string,
|
|
59
|
-
routerChannelIdHint?: string
|
|
60
|
-
) => ZLinkRemoteActorPacketTarget | undefined;
|
|
57
|
+
readonly actorPacketTargetForState: (actorId: string) => ZLinkRemoteActorPacketTarget | undefined;
|
|
61
58
|
readonly reportOwnershipRefreshError?: (actorId: string, error: unknown) => void;
|
|
62
59
|
}
|
|
63
60
|
|
|
@@ -197,17 +194,6 @@ export class ZLinkRemoteBoundSessionRelay {
|
|
|
197
194
|
async receiveRemoteBoundSessionSend(payload: unknown): Promise<{ readonly ok: boolean }> {
|
|
198
195
|
const send = decodeRemoteBoundSessionSendPayload(payload);
|
|
199
196
|
await this.options.updateRemoteActorPacketTarget(send.actorId, send.actorPacketTarget);
|
|
200
|
-
const owner = actorSessionBindingRuntimeOwnerIfRegistered(this.options.streamBindingRuntime());
|
|
201
|
-
const retained = await owner?.retainRelocationOutbound(
|
|
202
|
-
send.actorId,
|
|
203
|
-
{
|
|
204
|
-
deliver: () => this.deliverRemoteBoundSessionSend(send),
|
|
205
|
-
fail: (error) => this.options.reportOwnershipRefreshError?.(send.actorId, error)
|
|
206
|
-
},
|
|
207
|
-
send.relocationSealId
|
|
208
|
-
);
|
|
209
|
-
if (retained === 'retained') return { ok: true };
|
|
210
|
-
if (retained === 'rejected') return { ok: false };
|
|
211
197
|
return { ok: await this.deliverRemoteBoundSessionSend(send) };
|
|
212
198
|
}
|
|
213
199
|
|
|
@@ -349,7 +335,7 @@ export class ZLinkRemoteBoundSessionRelay {
|
|
|
349
335
|
await owner.clearRelocation(actorId, error);
|
|
350
336
|
void this.options
|
|
351
337
|
.streamBindingRuntime()
|
|
352
|
-
.
|
|
338
|
+
.closeSessionBinding(actorId, value.session)
|
|
353
339
|
.catch((disconnectError) =>
|
|
354
340
|
this.options.reportOwnershipRefreshError?.(actorId, disconnectError)
|
|
355
341
|
);
|
|
@@ -389,7 +375,7 @@ export class ZLinkRemoteBoundSessionRelay {
|
|
|
389
375
|
await owner.clearRelocation(actorId, error);
|
|
390
376
|
void this.options
|
|
391
377
|
.streamBindingRuntime()
|
|
392
|
-
.
|
|
378
|
+
.closeSessionBinding(actorId, value.session)
|
|
393
379
|
.catch((disconnectError) =>
|
|
394
380
|
this.options.reportOwnershipRefreshError?.(actorId, disconnectError)
|
|
395
381
|
);
|
|
@@ -425,15 +411,6 @@ export class ZLinkRemoteBoundSessionRelay {
|
|
|
425
411
|
}
|
|
426
412
|
const state = this.activeServiceWireRelocations.get(key);
|
|
427
413
|
if (state === undefined) {
|
|
428
|
-
await actorSessionBindingRuntimeOwner(
|
|
429
|
-
this.options.streamBindingRuntime()
|
|
430
|
-
).discardRelocationOutbound(
|
|
431
|
-
value.actor.actorId,
|
|
432
|
-
key,
|
|
433
|
-
new ZLinkRemoteBoundSessionFenceError(
|
|
434
|
-
`Actor '${value.actor.actorId}' command 44 did not match an active command 42.`
|
|
435
|
-
)
|
|
436
|
-
);
|
|
437
414
|
this.warnLateSessionRouteUpdate(value);
|
|
438
415
|
return;
|
|
439
416
|
}
|
|
@@ -500,7 +477,7 @@ export class ZLinkRemoteBoundSessionRelay {
|
|
|
500
477
|
);
|
|
501
478
|
await this.options
|
|
502
479
|
.streamBindingRuntime()
|
|
503
|
-
.
|
|
480
|
+
.closeSessionBinding(state.actorId, value.session)
|
|
504
481
|
.catch((disconnectError) =>
|
|
505
482
|
this.options.reportOwnershipRefreshError?.(state.actorId, disconnectError)
|
|
506
483
|
);
|
|
@@ -592,13 +569,6 @@ export class ZLinkRemoteBoundSessionRelay {
|
|
|
592
569
|
}
|
|
593
570
|
}
|
|
594
571
|
|
|
595
|
-
rememberRemoteBoundSessionTarget(
|
|
596
|
-
actorId: string,
|
|
597
|
-
target: ZLinkRemoteBoundSessionTarget | undefined
|
|
598
|
-
): void {
|
|
599
|
-
this.options.actorManager()?.getState(actorId)?.setRemoteBoundSessionTarget(target);
|
|
600
|
-
}
|
|
601
|
-
|
|
602
572
|
resolveRemoteBoundSessionTarget(
|
|
603
573
|
sourceNodeRid: RoutingId,
|
|
604
574
|
sourceSessionRid: RoutingId
|
|
@@ -618,11 +588,8 @@ export class ZLinkRemoteBoundSessionRelay {
|
|
|
618
588
|
};
|
|
619
589
|
}
|
|
620
590
|
|
|
621
|
-
actorPacketTargetForState(
|
|
622
|
-
actorId
|
|
623
|
-
routerChannelIdHint?: string
|
|
624
|
-
): ZLinkRemoteActorPacketTarget | undefined {
|
|
625
|
-
return this.options.actorPacketTargetForState(actorId, routerChannelIdHint);
|
|
591
|
+
actorPacketTargetForState(actorId: string): ZLinkRemoteActorPacketTarget | undefined {
|
|
592
|
+
return this.options.actorPacketTargetForState(actorId);
|
|
626
593
|
}
|
|
627
594
|
|
|
628
595
|
clearOwnership(actorId: string): void {
|
|
@@ -675,8 +642,7 @@ export class ZLinkRemoteBoundSessionRelay {
|
|
|
675
642
|
packetName,
|
|
676
643
|
requestSeq,
|
|
677
644
|
response,
|
|
678
|
-
replyOptions
|
|
679
|
-
signal
|
|
645
|
+
replyOptions
|
|
680
646
|
);
|
|
681
647
|
return;
|
|
682
648
|
}
|
|
@@ -731,8 +697,7 @@ export class ZLinkRemoteBoundSessionRelay {
|
|
|
731
697
|
packetName,
|
|
732
698
|
requestSeq,
|
|
733
699
|
error,
|
|
734
|
-
metadata
|
|
735
|
-
signal
|
|
700
|
+
metadata
|
|
736
701
|
);
|
|
737
702
|
return;
|
|
738
703
|
}
|
|
@@ -764,11 +729,10 @@ export class ZLinkRemoteBoundSessionRelay {
|
|
|
764
729
|
packetName: string,
|
|
765
730
|
requestSeq: bigint,
|
|
766
731
|
message: unknown,
|
|
767
|
-
replyOptions: ZLinkActorResponseOptions
|
|
768
|
-
signal?: AbortSignal
|
|
732
|
+
replyOptions: ZLinkActorResponseOptions
|
|
769
733
|
): Promise<void> {
|
|
770
734
|
const actorPacketTarget = encodeRemoteActorPacketTarget(
|
|
771
|
-
this.options.actorPacketTargetForState(actorId
|
|
735
|
+
this.options.actorPacketTargetForState(actorId)
|
|
772
736
|
);
|
|
773
737
|
await this.sendRemoteBoundSessionControl(
|
|
774
738
|
target,
|
|
@@ -780,8 +744,7 @@ export class ZLinkRemoteBoundSessionRelay {
|
|
|
780
744
|
metadata: replyOptions.metadata,
|
|
781
745
|
compressPayload: replyOptions.compressPayload,
|
|
782
746
|
actorPacketTarget
|
|
783
|
-
})
|
|
784
|
-
signal
|
|
747
|
+
})
|
|
785
748
|
);
|
|
786
749
|
}
|
|
787
750
|
|
|
@@ -791,8 +754,7 @@ export class ZLinkRemoteBoundSessionRelay {
|
|
|
791
754
|
packetName: string,
|
|
792
755
|
requestSeq: bigint,
|
|
793
756
|
error: unknown,
|
|
794
|
-
metadata: ReadonlyMap<string, string
|
|
795
|
-
signal?: AbortSignal
|
|
757
|
+
metadata: ReadonlyMap<string, string>
|
|
796
758
|
): Promise<void> {
|
|
797
759
|
await this.sendRemoteBoundSessionControl(
|
|
798
760
|
target,
|
|
@@ -803,17 +765,15 @@ export class ZLinkRemoteBoundSessionRelay {
|
|
|
803
765
|
error,
|
|
804
766
|
metadata,
|
|
805
767
|
actorPacketTarget: encodeRemoteActorPacketTarget(
|
|
806
|
-
this.options.actorPacketTargetForState(actorId
|
|
768
|
+
this.options.actorPacketTargetForState(actorId)
|
|
807
769
|
)
|
|
808
|
-
})
|
|
809
|
-
signal
|
|
770
|
+
})
|
|
810
771
|
);
|
|
811
772
|
}
|
|
812
773
|
|
|
813
774
|
private async sendRemoteBoundSessionControl(
|
|
814
775
|
target: ZLinkRemoteBoundSessionTarget,
|
|
815
|
-
payload: Record<string, unknown
|
|
816
|
-
signal?: AbortSignal
|
|
776
|
+
payload: Record<string, unknown>
|
|
817
777
|
): Promise<void> {
|
|
818
778
|
const packetName = payload.packetName;
|
|
819
779
|
if (typeof packetName !== 'string') {
|
|
@@ -829,8 +789,7 @@ export class ZLinkRemoteBoundSessionRelay {
|
|
|
829
789
|
target.routerChannelId,
|
|
830
790
|
String(target.targetNodeRid),
|
|
831
791
|
packetName,
|
|
832
|
-
payload
|
|
833
|
-
signal
|
|
792
|
+
payload
|
|
834
793
|
);
|
|
835
794
|
if (result.status !== ZLinkSubmitStatus.Submitted) {
|
|
836
795
|
throw new Error(
|