@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
|
@@ -6,35 +6,35 @@ import type {
|
|
|
6
6
|
ZLinkSpot,
|
|
7
7
|
ZLinkSpotActorJoinResult
|
|
8
8
|
} from '../../contracts';
|
|
9
|
+
import type { Message } from '../../contracts/Common/Message';
|
|
9
10
|
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
10
|
-
import {
|
|
11
|
-
import type {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
import type { ZLinkRemoteBoundSessionTarget } from '../actors';
|
|
12
|
+
import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult } from '../actors/actor-handoff';
|
|
13
|
+
import type { ZLinkApplicationWorkClaim } from '../admission';
|
|
14
|
+
import {
|
|
15
|
+
type ZLinkBackendActorRecvInfo,
|
|
16
|
+
type ZLinkBackendActorRef,
|
|
17
|
+
type ZLinkBackendSpot,
|
|
18
|
+
type ZLinkBackendTopicMessage,
|
|
19
|
+
ZLinkBackendSpotDispatchEvent
|
|
17
20
|
} from '../backend/contracts';
|
|
18
|
-
|
|
21
|
+
|
|
19
22
|
import type { RequestResult } from '../backend/runtime-values';
|
|
20
|
-
type RuntimeMessage = Message;
|
|
21
|
-
import type { ZLinkRemoteBoundSessionTarget } from '../actors';
|
|
22
23
|
import type { ZLinkDispatchErrorReporter } from '../channels';
|
|
23
24
|
import { ZLinkSpotActorLifecycleDrain } from './spot-actor-lifecycle-drain';
|
|
25
|
+
import type { ZLinkActorPacketDelivery } from './spot-actor-packet-dispatch';
|
|
24
26
|
import { ZLinkSpotActorPacketDrain, type ZLinkActorDispatchPart } from './spot-actor-packet-drain';
|
|
25
|
-
import { ZLINK_RECV_DONT_WAIT } from './spot-native-flags';
|
|
26
|
-
import { ZLinkSpotNativeActorJoinAdmission } from './spot-native-actor-join-admission';
|
|
27
|
-
import { ZLinkSpotRoutedFrameDispatch } from './spot-routed-frame-dispatch';
|
|
28
|
-
import { ZLinkSpotSubscriptionDispatch } from './spot-subscription-dispatch';
|
|
29
27
|
import type { ZLinkSpotHandlerRegistration } from './spot-handler-registry';
|
|
30
|
-
import
|
|
31
|
-
import type { ZLinkApplicationWorkClaim } from '../admission';
|
|
32
|
-
import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult } from '../actors/actor-handoff';
|
|
33
|
-
import type { ZLinkActorPacketDelivery } from './spot-actor-packet-dispatch';
|
|
28
|
+
import { ZLinkSpotRoutedFrameDispatch } from './spot-routed-frame-dispatch';
|
|
34
29
|
import type {
|
|
35
30
|
ZLinkSpotActorTransferRuntime,
|
|
36
31
|
ZLinkSpotBoundSessionRuntime
|
|
37
32
|
} from './spot-runtime-ports';
|
|
33
|
+
import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
|
|
34
|
+
import { ZLinkSpotSubscriptionDispatch } from './spot-subscription-dispatch';
|
|
35
|
+
const ACTOR_JOIN_POLL_INTERVAL_MS = 5;
|
|
36
|
+
|
|
37
|
+
type RuntimeMessage = Message;
|
|
38
38
|
|
|
39
39
|
const ZLINK_SPOT_DISPATCH_SUBJECT_SPOT = 1;
|
|
40
40
|
const ZLINK_SPOT_DISPATCH_SUBJECT_CHANNEL_DEALER = 3;
|
|
@@ -63,11 +63,11 @@ interface ZLinkSpotActorAdmissionRuntime {
|
|
|
63
63
|
readonly kind: 'enabled';
|
|
64
64
|
readonly runtime: ZLinkSpotActorTransferRuntime;
|
|
65
65
|
};
|
|
66
|
-
readonly commitNativeActor?: (actor: ZLinkActor) => Promise<void>;
|
|
67
66
|
readonly commitActorDeparture?: (actorId: string) => void;
|
|
68
67
|
readonly commitTransferredActor?: (
|
|
69
68
|
actor: ZLinkActor,
|
|
70
|
-
backlog: readonly ZLinkActorHandoffPacket[]
|
|
69
|
+
backlog: readonly ZLinkActorHandoffPacket[],
|
|
70
|
+
sealedSession: ZLinkRemoteBoundSessionTarget | undefined
|
|
71
71
|
) => Promise<readonly ZLinkActorHandoffResult[]>;
|
|
72
72
|
}
|
|
73
73
|
|
|
@@ -76,8 +76,7 @@ interface ZLinkSpotActorPacketRuntime {
|
|
|
76
76
|
readonly bindRemoteSession?: (
|
|
77
77
|
actor: ZLinkBackendActorRef,
|
|
78
78
|
sourceNodeRid: RoutingId,
|
|
79
|
-
sourceSessionRid: RoutingId
|
|
80
|
-
declaredTarget?: ZLinkRemoteBoundSessionTarget
|
|
79
|
+
sourceSessionRid: RoutingId
|
|
81
80
|
) => void;
|
|
82
81
|
readonly replyNoBind?: (
|
|
83
82
|
info: ZLinkBackendActorRecvInfo,
|
|
@@ -92,7 +91,6 @@ export interface ZLinkDetachedTaskRunner {
|
|
|
92
91
|
|
|
93
92
|
interface ZLinkSpotActorJoinDispatchOptions {
|
|
94
93
|
readonly nativeSpot: ZLinkBackendSpot;
|
|
95
|
-
readonly createReceived: () => ZLinkBackendReceived;
|
|
96
94
|
readonly createTopicMessage: () => ZLinkBackendTopicMessage;
|
|
97
95
|
readonly serial: ZLinkSpotSerialTurnExecutor;
|
|
98
96
|
readonly actors: ZLinkSpotActorAdmissionRuntime;
|
|
@@ -106,13 +104,10 @@ interface ZLinkSpotActorJoinDispatchOptions {
|
|
|
106
104
|
}
|
|
107
105
|
|
|
108
106
|
export class ZLinkSpotActorJoinDispatch {
|
|
109
|
-
private draining = false;
|
|
110
|
-
private redrainRequested = false;
|
|
111
107
|
private readonly nativeSpotId: string;
|
|
112
108
|
private readonly subscriptions: ZLinkSpotSubscriptionDispatch;
|
|
113
109
|
private readonly actorLifecycleDrain: ZLinkSpotActorLifecycleDrain;
|
|
114
110
|
private readonly actorPacketDrain: ZLinkSpotActorPacketDrain;
|
|
115
|
-
private readonly nativeActorJoinAdmission: ZLinkSpotNativeActorJoinAdmission;
|
|
116
111
|
private readonly routedFrames: ZLinkSpotRoutedFrameDispatch;
|
|
117
112
|
private readonly nativeSpot: ZLinkBackendSpot;
|
|
118
113
|
|
|
@@ -137,19 +132,7 @@ export class ZLinkSpotActorJoinDispatch {
|
|
|
137
132
|
waitIdle: waitSpotDispatchIdle,
|
|
138
133
|
flowEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
|
|
139
134
|
});
|
|
140
|
-
this.nativeActorJoinAdmission = new ZLinkSpotNativeActorJoinAdmission({
|
|
141
|
-
nativeSpot: options.nativeSpot,
|
|
142
|
-
serial: options.serial,
|
|
143
|
-
resolveActor: actors.resolveActor,
|
|
144
|
-
getTarget: actors.getTarget,
|
|
145
|
-
defaultAccept: actors.defaultAccept,
|
|
146
|
-
commitAcceptedActor: actors.commitNativeActor,
|
|
147
|
-
messageSerializers: options.messageSerializers,
|
|
148
|
-
dispatchErrors: options.dispatchErrors
|
|
149
|
-
});
|
|
150
135
|
this.routedFrames = new ZLinkSpotRoutedFrameDispatch({
|
|
151
|
-
nativeSpot: options.nativeSpot,
|
|
152
|
-
createReceived: options.createReceived,
|
|
153
136
|
nativeSpotId: this.nativeSpotId,
|
|
154
137
|
serial: options.serial,
|
|
155
138
|
resolveActor: actors.resolveActor,
|
|
@@ -161,7 +144,7 @@ export class ZLinkSpotActorJoinDispatch {
|
|
|
161
144
|
bindRemoteSession:
|
|
162
145
|
options.packets?.bindRemoteSession === undefined
|
|
163
146
|
? undefined
|
|
164
|
-
: (actor, sourceNodeRid, sourceSessionRid
|
|
147
|
+
: (actor, sourceNodeRid, sourceSessionRid) =>
|
|
165
148
|
options.packets!.bindRemoteSession!(
|
|
166
149
|
{
|
|
167
150
|
actorId: actor.actorId,
|
|
@@ -169,8 +152,7 @@ export class ZLinkSpotActorJoinDispatch {
|
|
|
169
152
|
nodeRid: actor.nodeRid
|
|
170
153
|
},
|
|
171
154
|
sourceNodeRid,
|
|
172
|
-
sourceSessionRid
|
|
173
|
-
declaredTarget
|
|
155
|
+
sourceSessionRid
|
|
174
156
|
),
|
|
175
157
|
routedBoundSessionReceiver: options.boundSessionRuntime?.receiveRoutedBoundSession.bind(
|
|
176
158
|
options.boundSessionRuntime
|
|
@@ -189,8 +171,7 @@ export class ZLinkSpotActorJoinDispatch {
|
|
|
189
171
|
messageSerializers: options.messageSerializers,
|
|
190
172
|
providerResolver: options.providerResolver,
|
|
191
173
|
dispatchErrors: options.dispatchErrors,
|
|
192
|
-
claimApplicationWork: options.claimApplicationWork
|
|
193
|
-
waitIdle: waitSpotDispatchIdle
|
|
174
|
+
claimApplicationWork: options.claimApplicationWork
|
|
194
175
|
});
|
|
195
176
|
this.subscriptions = new ZLinkSpotSubscriptionDispatch({
|
|
196
177
|
nativeSpot: options.nativeSpot,
|
|
@@ -226,10 +207,6 @@ export class ZLinkSpotActorJoinDispatch {
|
|
|
226
207
|
return;
|
|
227
208
|
}
|
|
228
209
|
this.nativeSpot.setDispatchHandler((info) => {
|
|
229
|
-
if (info.event === ZLinkBackendSpotDispatchEvent.ActorJoinReadable) {
|
|
230
|
-
this.runDetached('spot actor join drain', () => this.drain());
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
210
|
if (info.event === ZLinkBackendSpotDispatchEvent.SubscribeReadable) {
|
|
234
211
|
this.runDetached('spot subscription drain', () => this.subscriptions.drain());
|
|
235
212
|
return;
|
|
@@ -281,39 +258,8 @@ export class ZLinkSpotActorJoinDispatch {
|
|
|
281
258
|
}
|
|
282
259
|
void callback().catch(() => undefined);
|
|
283
260
|
}
|
|
284
|
-
|
|
285
|
-
private async drain(): Promise<void> {
|
|
286
|
-
if (this.draining) {
|
|
287
|
-
this.redrainRequested = true;
|
|
288
|
-
return;
|
|
289
|
-
}
|
|
290
|
-
this.draining = true;
|
|
291
|
-
try {
|
|
292
|
-
do {
|
|
293
|
-
this.redrainRequested = false;
|
|
294
|
-
await this.drainAvailableActorJoins();
|
|
295
|
-
} while (this.redrainWasRequested());
|
|
296
|
-
} finally {
|
|
297
|
-
this.draining = false;
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
private redrainWasRequested(): boolean {
|
|
302
|
-
return this.redrainRequested;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
private async drainAvailableActorJoins(): Promise<void> {
|
|
306
|
-
for (;;) {
|
|
307
|
-
const request = this.nativeSpot.recvActorJoin(ZLINK_RECV_DONT_WAIT);
|
|
308
|
-
if (request === null) {
|
|
309
|
-
await waitSpotDispatchIdle();
|
|
310
|
-
return;
|
|
311
|
-
}
|
|
312
|
-
await this.nativeActorJoinAdmission.admit(request);
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
261
|
}
|
|
316
262
|
|
|
317
263
|
function waitSpotDispatchIdle(): Promise<void> {
|
|
318
|
-
return new Promise((resolve) => setTimeout(resolve,
|
|
264
|
+
return new Promise((resolve) => setTimeout(resolve, ACTOR_JOIN_POLL_INTERVAL_MS));
|
|
319
265
|
}
|
|
@@ -53,25 +53,27 @@ export class ZLinkSpotActorLifecycleDrain {
|
|
|
53
53
|
continue;
|
|
54
54
|
}
|
|
55
55
|
if (actorRef === null || actorRef === undefined) continue;
|
|
56
|
-
await this.options.serial.
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
await this.options.serial.executeLifecycleOperation(() =>
|
|
57
|
+
this.options.serial.execute(() => {
|
|
58
|
+
const actor = this.options.resolveActor(actorId);
|
|
59
|
+
if (actor === undefined) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
const target = this.options.getTarget();
|
|
63
|
+
if (event.kind === ZLINK_SPOT_ACTOR_LIFECYCLE_JOINED) {
|
|
64
|
+
return target.onJoinedActor?.(actor);
|
|
65
|
+
}
|
|
66
|
+
if (event.kind === ZLINK_SPOT_ACTOR_LIFECYCLE_LEFT) {
|
|
67
|
+
return Promise.resolve(target.onLeaveActor?.(actor)).then(() => {
|
|
68
|
+
this.options.commitActorDeparture?.(actorId);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (event.kind === ZLINK_SPOT_ACTOR_LIFECYCLE_DISCONNECTED) {
|
|
72
|
+
return target.onDisconnectActor?.(actor);
|
|
73
|
+
}
|
|
59
74
|
return undefined;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
if (event.kind === ZLINK_SPOT_ACTOR_LIFECYCLE_JOINED) {
|
|
63
|
-
return target.onJoinedActor?.(actor);
|
|
64
|
-
}
|
|
65
|
-
if (event.kind === ZLINK_SPOT_ACTOR_LIFECYCLE_LEFT) {
|
|
66
|
-
return Promise.resolve(target.onLeaveActor?.(actor)).then(() => {
|
|
67
|
-
this.options.commitActorDeparture?.(actorId);
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
if (event.kind === ZLINK_SPOT_ACTOR_LIFECYCLE_DISCONNECTED) {
|
|
71
|
-
return target.onDisconnectActor?.(actor);
|
|
72
|
-
}
|
|
73
|
-
return undefined;
|
|
74
|
-
});
|
|
75
|
+
})
|
|
76
|
+
);
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
79
|
}
|
|
@@ -1,23 +1,31 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
|
|
2
|
+
import {
|
|
3
|
+
type RoutingId,
|
|
4
|
+
type ZLinkActor,
|
|
5
|
+
type ZLinkMessageSerializer,
|
|
6
|
+
type ZLinkSpot,
|
|
7
|
+
type ZLinkSpotActorJoinResult,
|
|
8
|
+
ZLinkEncodedPayload,
|
|
9
|
+
ZLinkMessage
|
|
7
10
|
} from '../../contracts';
|
|
11
|
+
|
|
12
|
+
import type { Message } from '../../contracts/Common/Message';
|
|
8
13
|
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
9
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
ZLinkDispatchErrorSurface,
|
|
16
|
+
ZLinkDispatchMessageKind,
|
|
17
|
+
ZLinkRuntimeDispatchErrorAction,
|
|
18
|
+
ZLinkRuntimeDispatchErrorReason
|
|
19
|
+
} from '../../contracts/Dispatch/ZLinkDispatchOptions';
|
|
10
20
|
import { throwIfAborted } from '../abort';
|
|
11
|
-
import
|
|
21
|
+
import { ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME, ZLinkSpotActorDispatcher } from '../actors';
|
|
12
22
|
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
13
|
-
import { ZLinkConfigurationException } from '../configuration';
|
|
14
23
|
import { ZLinkDispatchErrorReporter } from '../channels';
|
|
15
|
-
import {
|
|
24
|
+
import { ZLinkConfigurationException } from '../configuration';
|
|
16
25
|
import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
|
|
17
|
-
import { routingIdsEqual } from '../routing-id';
|
|
18
26
|
import type { ZLinkSpotActivation } from './spot-activation-state';
|
|
19
|
-
import type { ZLinkSpotActorTransferRuntime } from './spot-runtime-ports';
|
|
20
27
|
import type { ZLinkSpotRouteResolver } from './spot-routing-internal';
|
|
28
|
+
import type { ZLinkSpotActorTransferRuntime } from './spot-runtime-ports';
|
|
21
29
|
|
|
22
30
|
export interface ZLinkSpotActorMembershipOptions {
|
|
23
31
|
readonly resolveActivation: (
|
|
@@ -39,8 +47,6 @@ export interface ZLinkSpotActorMembershipOptions {
|
|
|
39
47
|
readonly actorTransferRuntime?: ZLinkSpotActorTransferRuntime;
|
|
40
48
|
}
|
|
41
49
|
|
|
42
|
-
export type ZLinkActorJoinRollback = () => Promise<void> | void;
|
|
43
|
-
|
|
44
50
|
export class ZLinkSpotActorMembership {
|
|
45
51
|
constructor(private readonly options: ZLinkSpotActorMembershipOptions) {}
|
|
46
52
|
|
|
@@ -48,43 +54,58 @@ export class ZLinkSpotActorMembership {
|
|
|
48
54
|
spotId: RoutingId,
|
|
49
55
|
actor: ZLinkActor,
|
|
50
56
|
request: Message,
|
|
51
|
-
commit: (
|
|
52
|
-
spot: ZLinkSpot
|
|
53
|
-
) => Promise<ZLinkActorJoinRollback | void> | ZLinkActorJoinRollback | void,
|
|
57
|
+
commit: (spot: ZLinkSpot) => Promise<void> | void,
|
|
54
58
|
signal?: AbortSignal,
|
|
55
59
|
leaveSource?: () => Promise<void>,
|
|
56
|
-
contentType =
|
|
60
|
+
contentType: string = ZlinkStreamContentType.Json
|
|
57
61
|
): Promise<ZLinkSpotActorJoinResult> {
|
|
58
62
|
throwIfAborted(signal);
|
|
59
63
|
const activation = this.requireActivation(spotId);
|
|
64
|
+
return await this.runLifecycleOperation(activation, async () => {
|
|
65
|
+
return await this.admitActorJoinCore(
|
|
66
|
+
activation,
|
|
67
|
+
actor,
|
|
68
|
+
request,
|
|
69
|
+
commit,
|
|
70
|
+
signal,
|
|
71
|
+
leaveSource,
|
|
72
|
+
contentType
|
|
73
|
+
);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
private async admitActorJoinCore(
|
|
78
|
+
activation: ZLinkSpotActivation,
|
|
79
|
+
actor: ZLinkActor,
|
|
80
|
+
request: Message,
|
|
81
|
+
commit: (spot: ZLinkSpot) => Promise<void> | void,
|
|
82
|
+
signal: AbortSignal | undefined,
|
|
83
|
+
leaveSource: (() => Promise<void>) | undefined,
|
|
84
|
+
contentType: string
|
|
85
|
+
): Promise<ZLinkSpotActorJoinResult> {
|
|
60
86
|
const dispatcher = this.createActorDispatcher(activation);
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
response = await dispatcher.evaluateActorJoin(actor, request, contentType);
|
|
69
|
-
if (response.accepted) {
|
|
87
|
+
const response = await dispatcher.evaluateActorJoin(actor, request, contentType);
|
|
88
|
+
if (response.accepted) {
|
|
89
|
+
await commit(activation.spot);
|
|
90
|
+
activation.commitActorJoin(actor);
|
|
91
|
+
try {
|
|
92
|
+
await dispatcher.notifyJoinActor(actor);
|
|
93
|
+
} finally {
|
|
70
94
|
if (leaveSource === undefined) {
|
|
71
|
-
|
|
95
|
+
void this.options.entrySpotCallbacks?.onLeaveActor(actor, signal).catch((error) => {
|
|
96
|
+
this.options.dispatchErrors?.report({
|
|
97
|
+
surface: ZLinkDispatchErrorSurface.SpotActor,
|
|
98
|
+
messageKind: ZLinkDispatchMessageKind.ActorSend,
|
|
99
|
+
reason: ZLinkRuntimeDispatchErrorReason.HandlerException,
|
|
100
|
+
action: ZLinkRuntimeDispatchErrorAction.Drop,
|
|
101
|
+
actorId: actor.context.actorId,
|
|
102
|
+
error
|
|
103
|
+
});
|
|
104
|
+
});
|
|
72
105
|
} else {
|
|
73
106
|
await leaveSource();
|
|
74
107
|
}
|
|
75
|
-
await dispatcher.commitActorJoin(actor, async () => {
|
|
76
|
-
const rollback = await commit(activation.spot);
|
|
77
|
-
if (rollback !== undefined) transaction.rollbackExternal = rollback;
|
|
78
|
-
transaction.rollbackMembership = activation.commitActorJoin(actor);
|
|
79
|
-
transaction.committed = true;
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
} catch (error) {
|
|
83
|
-
if (transaction.committed) {
|
|
84
|
-
transaction.rollbackMembership?.();
|
|
85
|
-
await transaction.rollbackExternal?.();
|
|
86
108
|
}
|
|
87
|
-
throw error;
|
|
88
109
|
}
|
|
89
110
|
return {
|
|
90
111
|
accepted: response.accepted,
|
|
@@ -103,6 +124,17 @@ export class ZLinkSpotActorMembership {
|
|
|
103
124
|
): Promise<void> {
|
|
104
125
|
throwIfAborted(signal);
|
|
105
126
|
const activation = this.requireActivation(spotId, meshName);
|
|
127
|
+
await this.runLifecycleOperation(activation, () =>
|
|
128
|
+
this.leaveActorCore(activation, actor, signal, meshName)
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
private async leaveActorCore(
|
|
133
|
+
activation: ZLinkSpotActivation,
|
|
134
|
+
actor: ZLinkActor,
|
|
135
|
+
signal?: AbortSignal,
|
|
136
|
+
meshName?: string
|
|
137
|
+
): Promise<void> {
|
|
106
138
|
const localEntryNodeRid =
|
|
107
139
|
(meshName === undefined ? undefined : this.options.nodeRidProvider?.(meshName)) ??
|
|
108
140
|
this.options.entryNodeRidProvider?.() ??
|
|
@@ -123,24 +155,6 @@ export class ZLinkSpotActorMembership {
|
|
|
123
155
|
'Spot actor leave requires an Entry Spot node routing id.'
|
|
124
156
|
);
|
|
125
157
|
}
|
|
126
|
-
const remoteEntry =
|
|
127
|
-
localEntryNodeRid !== undefined && !routingIdsEqual(entryNodeRid, localEntryNodeRid);
|
|
128
|
-
if (!remoteEntry) {
|
|
129
|
-
const leaveSource = async () => {
|
|
130
|
-
activation.beginActorTransfer(actor.context.actorId);
|
|
131
|
-
await activation.spot.onLeaveActor(actor);
|
|
132
|
-
activation.commitActorDeparture(actor.context.actorId);
|
|
133
|
-
this.options.actorTransferRuntime?.clearRoutedActor(actor);
|
|
134
|
-
};
|
|
135
|
-
// A Spot actor handler already owns this activation's serial turn.
|
|
136
|
-
// Complete its lifecycle transition inside that turn instead of trying
|
|
137
|
-
// to acquire a second turn for the same owner.
|
|
138
|
-
if (activation.serial.isCurrentTurn) {
|
|
139
|
-
await leaveSource();
|
|
140
|
-
} else {
|
|
141
|
-
await activation.serial.execute(leaveSource);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
158
|
const request = RuntimeMessage.from(Buffer.alloc(0));
|
|
145
159
|
try {
|
|
146
160
|
const context = actor.context as typeof actor.context & {
|
|
@@ -177,11 +191,13 @@ export class ZLinkSpotActorMembership {
|
|
|
177
191
|
): Promise<void> {
|
|
178
192
|
throwIfAborted(signal);
|
|
179
193
|
const activation = this.requireActivation(spotId);
|
|
180
|
-
await
|
|
181
|
-
activation.
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
194
|
+
await this.runLifecycleOperation(activation, () =>
|
|
195
|
+
activation.serial.execute(async () => {
|
|
196
|
+
activation.beginActorTransfer(actor.context.actorId);
|
|
197
|
+
await activation.spot.onLeaveActor(actor);
|
|
198
|
+
activation.commitActorDeparture(actor.context.actorId);
|
|
199
|
+
})
|
|
200
|
+
);
|
|
185
201
|
}
|
|
186
202
|
|
|
187
203
|
async prepareActorLeaveForTransfer(
|
|
@@ -191,12 +207,16 @@ export class ZLinkSpotActorMembership {
|
|
|
191
207
|
): Promise<void> {
|
|
192
208
|
throwIfAborted(signal);
|
|
193
209
|
const activation = this.requireActivation(spotId);
|
|
194
|
-
await
|
|
210
|
+
await this.runLifecycleOperation(activation, () =>
|
|
211
|
+
activation.serial.execute(() => activation.spot.onLeaveActor(actor))
|
|
212
|
+
);
|
|
195
213
|
}
|
|
196
214
|
|
|
197
215
|
async commitActorLeaveAfterTransfer(spotId: RoutingId, actorId: string): Promise<void> {
|
|
198
216
|
const activation = this.requireActivation(spotId);
|
|
199
|
-
await
|
|
217
|
+
await this.runLifecycleOperation(activation, () =>
|
|
218
|
+
activation.serial.execute(() => activation.commitActorDeparture(actorId))
|
|
219
|
+
);
|
|
200
220
|
}
|
|
201
221
|
|
|
202
222
|
async restoreActorAfterFailedTransfer(
|
|
@@ -206,24 +226,26 @@ export class ZLinkSpotActorMembership {
|
|
|
206
226
|
): Promise<void> {
|
|
207
227
|
throwIfAborted(signal);
|
|
208
228
|
const activation = this.requireActivation(spotId);
|
|
209
|
-
await
|
|
210
|
-
activation.
|
|
211
|
-
|
|
212
|
-
|
|
229
|
+
await this.runLifecycleOperation(activation, () =>
|
|
230
|
+
activation.serial.execute(async () => {
|
|
231
|
+
activation.cancelActorTransfer(actor.context.actorId);
|
|
232
|
+
await activation.spot.onJoinedActor(actor);
|
|
233
|
+
})
|
|
234
|
+
);
|
|
213
235
|
}
|
|
214
236
|
|
|
215
237
|
async beginActorTransfer(spotId: RoutingId, actorId: string): Promise<void> {
|
|
216
238
|
const activation = this.requireActivation(spotId);
|
|
217
|
-
await
|
|
218
|
-
activation.beginActorTransfer(actorId)
|
|
219
|
-
|
|
239
|
+
await this.runLifecycleOperation(activation, () =>
|
|
240
|
+
activation.serial.execute(() => activation.beginActorTransfer(actorId))
|
|
241
|
+
);
|
|
220
242
|
}
|
|
221
243
|
|
|
222
244
|
async cancelActorTransfer(spotId: RoutingId, actorId: string): Promise<void> {
|
|
223
245
|
const activation = this.requireActivation(spotId);
|
|
224
|
-
await
|
|
225
|
-
activation.cancelActorTransfer(actorId)
|
|
226
|
-
|
|
246
|
+
await this.runLifecycleOperation(activation, () =>
|
|
247
|
+
activation.serial.execute(() => activation.cancelActorTransfer(actorId))
|
|
248
|
+
);
|
|
227
249
|
}
|
|
228
250
|
|
|
229
251
|
async notifyJoinedActorDisconnected(
|
|
@@ -252,6 +274,16 @@ export class ZLinkSpotActorMembership {
|
|
|
252
274
|
return activation;
|
|
253
275
|
}
|
|
254
276
|
|
|
277
|
+
private async runLifecycleOperation<T>(
|
|
278
|
+
activation: ZLinkSpotActivation,
|
|
279
|
+
operation: () => Promise<T> | T
|
|
280
|
+
): Promise<T> {
|
|
281
|
+
const pending = activation.serial.executeLifecycleOperation(operation);
|
|
282
|
+
return activation.serial.isCurrentTurn
|
|
283
|
+
? await activation.serial.currentTurn!.yieldFrameworkPromise(pending)
|
|
284
|
+
: await pending;
|
|
285
|
+
}
|
|
286
|
+
|
|
255
287
|
private createActorDispatcher(activation: ZLinkSpotActivation): ZLinkSpotActorDispatcher {
|
|
256
288
|
return new ZLinkSpotActorDispatcher({
|
|
257
289
|
registry: activation.actorHandlers,
|
|
@@ -24,7 +24,6 @@ import { createInboundFlow, currentFlowContext, runWithFlow } from '../diagnosti
|
|
|
24
24
|
import { streamSessionIdFromRoutingId } from '../streams/managed-stream';
|
|
25
25
|
import type { ZLinkRemoteBoundSessionTarget } from '../actors';
|
|
26
26
|
import {
|
|
27
|
-
actorMessageFollowContext,
|
|
28
27
|
ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET,
|
|
29
28
|
ZLinkSpotActorDispatcher,
|
|
30
29
|
ZLinkSpotActorHandlerRegistryRuntime
|
|
@@ -104,10 +103,6 @@ interface ZLinkSpotActorPacketDispatchOptions {
|
|
|
104
103
|
| Promise<{ readonly handled: boolean; readonly response?: unknown } | undefined>
|
|
105
104
|
| { readonly handled: boolean; readonly response?: unknown }
|
|
106
105
|
| undefined;
|
|
107
|
-
readonly onRemoteBoundSessionTarget?: (
|
|
108
|
-
actorId: string,
|
|
109
|
-
target: ZLinkRemoteBoundSessionTarget | undefined
|
|
110
|
-
) => void;
|
|
111
106
|
readonly onDisconnectActor: (actor: ZLinkActor) => Promise<void>;
|
|
112
107
|
readonly actorResponseSender?: (
|
|
113
108
|
actor: ZLinkActor,
|
|
@@ -210,16 +205,6 @@ export class ZLinkSpotActorPacketDispatch {
|
|
|
210
205
|
) {
|
|
211
206
|
return undefined;
|
|
212
207
|
}
|
|
213
|
-
if (
|
|
214
|
-
remoteBoundSessionTarget !== undefined &&
|
|
215
|
-
actorMessageFollowContext(fallbackActorRef) === undefined
|
|
216
|
-
) {
|
|
217
|
-
// A replayed handoff/Message Follow packet keeps its captured Session
|
|
218
|
-
// route solely for that packet's response. It cannot republish the
|
|
219
|
-
// predecessor route over a binding already confirmed by a later Actor
|
|
220
|
-
// owner turn.
|
|
221
|
-
this.options.onRemoteBoundSessionTarget?.(actorId, remoteBoundSessionTarget);
|
|
222
|
-
}
|
|
223
208
|
const routed = await this.options.routeBeforeLocal?.(delivery);
|
|
224
209
|
if (routed?.handled === true) {
|
|
225
210
|
return routed.response;
|
|
@@ -239,7 +224,6 @@ export class ZLinkSpotActorPacketDispatch {
|
|
|
239
224
|
);
|
|
240
225
|
}
|
|
241
226
|
if (header.name === ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET) {
|
|
242
|
-
this.options.onRemoteBoundSessionTarget?.(actorId, undefined);
|
|
243
227
|
await this.options.onDisconnectActor(actor);
|
|
244
228
|
return undefined;
|
|
245
229
|
}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
import { ZLinkFrameworkException, type ActorRef, type RoutingId } from '../../contracts';
|
|
6
6
|
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
7
7
|
import type { ZLinkBackendReceived as BackendReceived } from '../backend/runtime-values';
|
|
8
|
-
import type { ZLinkRemoteActorPacketTarget
|
|
8
|
+
import type { ZLinkRemoteActorPacketTarget } from '../actors';
|
|
9
9
|
import { decodeStreamHeader, messageToBytes, ZLinkStreamMessageKind } from '../streams/protocol';
|
|
10
10
|
import {
|
|
11
11
|
decodeRemoteActorSessionBinding,
|
|
@@ -25,8 +25,7 @@ interface ZLinkSpotActorPacketRelayDispatchOptions {
|
|
|
25
25
|
readonly bindRemoteSession?: (
|
|
26
26
|
actor: ActorRef,
|
|
27
27
|
sourceNodeRid: RoutingId,
|
|
28
|
-
sourceSessionRid: RoutingId
|
|
29
|
-
declaredTarget?: ZLinkRemoteBoundSessionTarget
|
|
28
|
+
sourceSessionRid: RoutingId
|
|
30
29
|
) => void;
|
|
31
30
|
readonly flowEnabled?: () => boolean;
|
|
32
31
|
}
|
|
@@ -81,18 +80,7 @@ export class ZLinkSpotActorPacketRelayDispatch {
|
|
|
81
80
|
'Remote actor session binding source did not match the declared session node.'
|
|
82
81
|
);
|
|
83
82
|
}
|
|
84
|
-
this.options.bindRemoteSession(
|
|
85
|
-
actorRef,
|
|
86
|
-
declaredSourceNodeRid,
|
|
87
|
-
binding.sessionRid,
|
|
88
|
-
remoteBoundSessionTarget === undefined
|
|
89
|
-
? undefined
|
|
90
|
-
: {
|
|
91
|
-
...remoteBoundSessionTarget,
|
|
92
|
-
sessionNodeRid: declaredSourceNodeRid,
|
|
93
|
-
sessionRid: binding.sessionRid
|
|
94
|
-
}
|
|
95
|
-
);
|
|
83
|
+
this.options.bindRemoteSession(actorRef, declaredSourceNodeRid, binding.sessionRid);
|
|
96
84
|
if (hasReplyToken(received.replyToken)) {
|
|
97
85
|
submitSpotRouteBridgeReply(received, actorPacketRelay.envelope, {
|
|
98
86
|
ok: true,
|
|
@@ -26,7 +26,7 @@ import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
|
|
|
26
26
|
|
|
27
27
|
interface ZLinkEntrySpotContextOptions {
|
|
28
28
|
readonly spotId: SpotId;
|
|
29
|
-
readonly objectGeneration:
|
|
29
|
+
readonly objectGeneration: bigint;
|
|
30
30
|
readonly nodeRid: RoutingId;
|
|
31
31
|
readonly handlers: ZLinkSpotHandlerRegistry;
|
|
32
32
|
readonly outbound: ZLinkSpotOutbound;
|
|
@@ -47,7 +47,7 @@ interface ZLinkEntrySpotContextOptions {
|
|
|
47
47
|
interface ZLinkSpotContextOptions {
|
|
48
48
|
readonly meshName: string;
|
|
49
49
|
readonly spotId: SpotId;
|
|
50
|
-
readonly objectGeneration:
|
|
50
|
+
readonly objectGeneration: bigint;
|
|
51
51
|
readonly handlers: ZLinkSpotHandlerRegistry;
|
|
52
52
|
readonly outbound: ZLinkSpotOutbound;
|
|
53
53
|
readonly timers: ZLinkSpotTimerRegistry;
|
|
@@ -263,7 +263,7 @@ function withImmutableSpotIdentity<
|
|
|
263
263
|
T extends {
|
|
264
264
|
readonly meshName: string;
|
|
265
265
|
readonly spotId: SpotId;
|
|
266
|
-
readonly objectGeneration:
|
|
266
|
+
readonly objectGeneration: bigint;
|
|
267
267
|
readonly nodeRid: RoutingId;
|
|
268
268
|
}
|
|
269
269
|
>(context: T): T {
|