@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
|
@@ -5,6 +5,7 @@ exports.actorJoinIdentity = actorJoinIdentity;
|
|
|
5
5
|
exports.createActorJoinRequest = createActorJoinRequest;
|
|
6
6
|
exports.createActorMembership = createActorMembership;
|
|
7
7
|
const configuration_1 = require("../configuration");
|
|
8
|
+
const diagnostic_text_1 = require("../diagnostics/diagnostic-text");
|
|
8
9
|
exports.ZLINK_ACTOR_LIFECYCLE_SNAPSHOT = Symbol('zlink.actor.lifecycle-snapshot');
|
|
9
10
|
/**
|
|
10
11
|
* Identity an admission callback observes. Join admission decides on the Actor's
|
|
@@ -37,7 +38,7 @@ function lifecycleSource(actor) {
|
|
|
37
38
|
: undefined;
|
|
38
39
|
// A caller can hand in a value that carries no Framework context at all, so the
|
|
39
40
|
// failure path reports the configuration error instead of dereferencing it.
|
|
40
|
-
const actorId = context?.actorId
|
|
41
|
+
const actorId = (0, diagnostic_text_1.diagnosticTextOrAbsent)(context?.actorId);
|
|
41
42
|
const snapshot = context?.[exports.ZLINK_ACTOR_LIFECYCLE_SNAPSHOT];
|
|
42
43
|
const source = snapshot === undefined ? undefined : snapshot.call(context);
|
|
43
44
|
if (source === undefined) {
|
|
@@ -1,26 +1,31 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { ZLinkActorJoinRuntimeResult } from './actor-runtime-contracts';
|
|
1
|
+
import { type RoutingId, type ZLinkActor, type ZLinkActorJoinOperationId, type ZLinkMessageSerializer, type ZLinkSpot, type ZLinkSpotActorJoinResult } from '../../contracts';
|
|
3
2
|
import type { Message } from '../../contracts/Common/Message';
|
|
4
3
|
import type { ZLinkBackendActorRef, ZLinkBackendMeshNode } from '../backend/contracts';
|
|
5
4
|
import { type ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
|
|
5
|
+
import type { ZLinkLocationLifecycle } from '../locations';
|
|
6
6
|
import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
|
|
7
|
+
import type { ZLinkActorJoinRelocation } from './actor-join-relocation';
|
|
8
|
+
import type { ZLinkActorJoinRuntimeResult } from './actor-runtime-contracts';
|
|
7
9
|
import { ZLinkActorRuntimeState } from './actor-runtime-state';
|
|
8
10
|
import type { ZLinkPostCommitActorBinder } from './post-commit-actor-binder';
|
|
9
|
-
import type { ZLinkPostCommitActorLocation } from './post-commit-actor-location';
|
|
10
|
-
import type { ZLinkActorJoinRelocation } from './actor-join-relocation';
|
|
11
11
|
export interface ZLinkLocalNativeActorJoinOptions {
|
|
12
|
-
readonly
|
|
12
|
+
readonly locationLifecycle?: ZLinkLocationLifecycle;
|
|
13
|
+
readonly localSpotJoin?: (spotId: RoutingId, actor: ZLinkActor, request: Message, commit: (spot: ZLinkSpot) => Promise<void>, signal?: AbortSignal, leaveSource?: () => Promise<void>, contentType?: string) => Promise<ZLinkSpotActorJoinResult>;
|
|
14
|
+
readonly localEntryJoin?: (actor: ZLinkActor, signal?: AbortSignal) => Promise<void>;
|
|
15
|
+
readonly localSourceLeave?: (actor: ZLinkActor, spotId: RoutingId | undefined, signal?: AbortSignal) => Promise<void>;
|
|
16
|
+
readonly reportSourceLeaveError: (error: unknown) => void;
|
|
13
17
|
readonly postCommitBinder?: ZLinkPostCommitActorBinder;
|
|
14
18
|
readonly completionTableProvider: () => ZLinkMeshCompletionTable | undefined;
|
|
15
19
|
readonly actorJoinRelocation?: ZLinkActorJoinRelocation;
|
|
16
20
|
readonly messageSerializers?: ReadonlyMap<string, ZLinkMessageSerializer>;
|
|
17
21
|
}
|
|
18
|
-
/**
|
|
22
|
+
/** Selects local membership commits or remote Actor relocation. */
|
|
19
23
|
export declare class ZLinkLocalNativeActorJoin {
|
|
20
24
|
private readonly options;
|
|
21
25
|
constructor(options: ZLinkLocalNativeActorJoinOptions);
|
|
22
26
|
joinSpot(node: ZLinkBackendMeshNode, actor: ZLinkActor, state: ZLinkActorRuntimeState, actorRef: ZLinkBackendActorRef, spotId: RoutingId, spotRouteTarget: ZLinkSpotRouteTarget | undefined, request: Message, timeoutMs: number | undefined, signal: AbortSignal | undefined, completionOperationId?: ZLinkActorJoinOperationId): Promise<ZLinkActorJoinRuntimeResult<Message>>;
|
|
23
27
|
joinEntrySpot(node: ZLinkBackendMeshNode, actor: ZLinkActor, state: ZLinkActorRuntimeState, actorRef: ZLinkBackendActorRef, nodeRid: RoutingId, spotRouteTarget: ZLinkSpotRouteTarget | undefined, request: Message, timeoutMs: number | undefined, signal: AbortSignal | undefined, completionOperationId?: ZLinkActorJoinOperationId): Promise<ZLinkActorJoinRuntimeResult<Message>>;
|
|
28
|
+
private joinLocal;
|
|
24
29
|
private waitForJoinCompletion;
|
|
25
30
|
private relocateRemoteActorJoin;
|
|
26
31
|
private requireCompletions;
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkLocalNativeActorJoin = void 0;
|
|
4
|
-
const
|
|
4
|
+
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
5
5
|
const node_crypto_1 = require("node:crypto");
|
|
6
|
-
const runtime_values_1 = require("../backend/runtime-values");
|
|
7
6
|
const contracts_1 = require("../../contracts");
|
|
8
|
-
const mesh_completion_table_1 = require("../backend/mesh-completion-table");
|
|
9
7
|
const abort_1 = require("../abort");
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const routing_id_2 = require("../routing-id");
|
|
8
|
+
const mesh_completion_table_1 = require("../backend/mesh-completion-table");
|
|
9
|
+
const runtime_values_1 = require("../backend/runtime-values");
|
|
13
10
|
const operation_identity_1 = require("../foundation/operation-identity");
|
|
11
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
14
12
|
const payload_codec_1 = require("../messaging/payload-codec");
|
|
13
|
+
const routing_id_1 = require("../routing-id");
|
|
14
|
+
const actor_remote_wire_1 = require("./actor-remote-wire");
|
|
15
|
+
const actor_runtime_state_1 = require("./actor-runtime-state");
|
|
16
|
+
const LOCAL_JOIN_RESOLUTION_TIMEOUT_MS = 5_000;
|
|
17
|
+
const LOCAL_JOIN_POLL_INTERVAL_MS = 10;
|
|
15
18
|
const ZLINK_FRAMEWORK_ACTOR_JOIN_PACKET_NAME = 'ZLinkFrameworkActorJoinRequest';
|
|
16
|
-
/**
|
|
19
|
+
/** Selects local membership commits or remote Actor relocation. */
|
|
17
20
|
class ZLinkLocalNativeActorJoin {
|
|
18
21
|
options;
|
|
19
22
|
constructor(options) {
|
|
@@ -22,119 +25,93 @@ class ZLinkLocalNativeActorJoin {
|
|
|
22
25
|
async joinSpot(node, actor, state, actorRef, spotId, spotRouteTarget, request, timeoutMs, signal, completionOperationId) {
|
|
23
26
|
if (signal?.aborted === true)
|
|
24
27
|
throw (0, abort_1.createAbortError)();
|
|
25
|
-
const completions = this.requireCompletions();
|
|
26
28
|
const target = requireUserSpotRoute(spotRouteTarget, spotId);
|
|
27
|
-
const
|
|
28
|
-
const remote = !(0, routing_id_2.routingIdsEqual)((0, actor_runtime_state_1.toFrameworkRoutingId)(node.status().routingId), target.targetNodeRid);
|
|
29
|
+
const remote = !(0, routing_id_1.routingIdsEqual)((0, actor_runtime_state_1.toFrameworkRoutingId)(node.status().routingId), target.targetNodeRid);
|
|
29
30
|
if (remote) {
|
|
30
31
|
return await this.relocateRemoteActorJoin(node, actor, state, actorRef, target, request, timeoutMs, signal, completionOperationId, false);
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
-
const control = completion.kindData;
|
|
34
|
-
if (control?.kind !== 'actorJoinCompletion' || control.actor === null) {
|
|
35
|
-
(0, mesh_completion_table_1.closeMeshCompletion)(completion);
|
|
36
|
-
const message = `Actor join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`;
|
|
37
|
-
// Classify the (terminal, fine) pair instead of collapsing every non-OK
|
|
38
|
-
// or malformed join completion to NotFound (spec 32-framework-error-model:
|
|
39
|
-
// 83-118). An OK terminal that carries no join control is a protocol
|
|
40
|
-
// violation, not a missing route.
|
|
41
|
-
throw completion.terminalResult !== 0 || completion.failureErrno !== 0
|
|
42
|
-
? (0, framework_errors_internal_1.wireReplyFailureException)(completion.terminalResult, completion.failureErrno, message)
|
|
43
|
-
: (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestProtocolError, message);
|
|
44
|
-
}
|
|
45
|
-
if (control.joinResult !== 0) {
|
|
46
|
-
try {
|
|
47
|
-
return {
|
|
48
|
-
accepted: false,
|
|
49
|
-
actor: (0, actor_runtime_state_1.toFrameworkActorRef)(control.actor, actorMeshName),
|
|
50
|
-
reply: completion.parts[0]
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
finally {
|
|
54
|
-
disposeParts(completion.parts.slice(1));
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
if (completion.terminalResult !== 0 || completion.failureErrno !== 0) {
|
|
58
|
-
(0, mesh_completion_table_1.closeMeshCompletion)(completion);
|
|
59
|
-
throw (0, framework_errors_internal_1.wireReplyFailureException)(completion.terminalResult, completion.failureErrno, `Actor join failed for '${actor.context.actorId}' with result '${completion.terminalResult}' and errno '${completion.failureErrno}'.`);
|
|
60
|
-
}
|
|
61
|
-
state.setNativeActorRef(control.actor);
|
|
62
|
-
state.setJoinedSpot((0, actor_runtime_state_1.toFrameworkRoutingId)(control.location.spotId ?? target.spotId), undefined, control.location.membershipEpoch, control.location.spotGeneration);
|
|
63
|
-
// The Session owner relays from the verified Ready authority snapshot;
|
|
64
|
-
// membership coordinates alone cannot recreate a User/Instance fence.
|
|
65
|
-
state.setRemoteActorPacketTarget(target.spotKind === contracts_1.ZLinkSpotKind.Entry ? undefined : target);
|
|
66
|
-
if (state.actorType !== undefined) {
|
|
67
|
-
this.options.postCommitLocation?.joinedEventually(state.actorType, actor.context.actorId, spotRouteTarget?.routerChannelId ?? '', (0, actor_runtime_state_1.toFrameworkRoutingId)(control.location.spotId ?? target.spotId), control.location.spotGeneration, control.location.membershipEpoch, node.status().lifecycleGeneration);
|
|
68
|
-
}
|
|
69
|
-
await this.options.postCommitBinder?.bind((0, actor_runtime_state_1.toFrameworkActorRef)(control.actor, actorMeshName));
|
|
70
|
-
try {
|
|
71
|
-
return {
|
|
72
|
-
accepted: true,
|
|
73
|
-
actor: (0, actor_runtime_state_1.toFrameworkActorRef)(control.actor, actorMeshName),
|
|
74
|
-
reply: completion.parts[0]
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
finally {
|
|
78
|
-
disposeParts(completion.parts.slice(1));
|
|
79
|
-
}
|
|
33
|
+
return await this.joinLocal(node, actor, state, actorRef, target, target.spotId, request, signal);
|
|
80
34
|
}
|
|
81
35
|
async joinEntrySpot(node, actor, state, actorRef, nodeRid, spotRouteTarget, request, timeoutMs, signal, completionOperationId) {
|
|
82
36
|
if (signal?.aborted === true)
|
|
83
37
|
throw (0, abort_1.createAbortError)();
|
|
84
|
-
const completions = this.requireCompletions();
|
|
85
|
-
const actorMeshName = runtimeActorMeshName(actor, state, '');
|
|
86
38
|
const targetNodeRid = spotRouteTarget?.targetNodeRid ?? nodeRid;
|
|
87
39
|
const remote = spotRouteTarget !== undefined &&
|
|
88
|
-
(!(0,
|
|
89
|
-
!(0,
|
|
40
|
+
(!(0, routing_id_1.routingIdsEqual)((0, actor_runtime_state_1.toFrameworkRoutingId)(node.status().routingId), spotRouteTarget.targetNodeRid) ||
|
|
41
|
+
!(0, routing_id_1.routingIdsEqual)((0, actor_runtime_state_1.toFrameworkRoutingId)(actorRef.nodeRid), spotRouteTarget.targetNodeRid));
|
|
90
42
|
if (remote) {
|
|
91
43
|
return await this.relocateRemoteActorJoin(node, actor, state, actorRef, spotRouteTarget, request, timeoutMs, signal, completionOperationId, true);
|
|
92
44
|
}
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
(0,
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
45
|
+
const target = {
|
|
46
|
+
routerChannelId: spotRouteTarget?.routerChannelId ?? runtimeActorMeshName(actor, state, ''),
|
|
47
|
+
targetNodeRid,
|
|
48
|
+
spotId: (0, actor_runtime_state_1.toFrameworkRoutingId)(node.entrySpot().routingId),
|
|
49
|
+
spotKind: contracts_1.ZLinkSpotKind.Entry,
|
|
50
|
+
targetSpotGeneration: node.entrySpot().status().lifecycleGeneration
|
|
51
|
+
};
|
|
52
|
+
return await this.joinLocal(node, actor, state, actorRef, target, spotRouteTarget?.spotId ?? target.spotId, request, signal);
|
|
53
|
+
}
|
|
54
|
+
async joinLocal(node, actor, state, actorRef, target, storeSpotId, request, signal) {
|
|
55
|
+
const location = node.actorLookup(actor.context.actorId);
|
|
56
|
+
const meshName = runtimeActorMeshName(actor, state, target.routerChannelId);
|
|
57
|
+
if ((0, routing_id_1.routingIdsEqual)((0, actor_runtime_state_1.toFrameworkRoutingId)(location.spotId), target.spotId)) {
|
|
58
|
+
return { accepted: true, actor: (0, actor_runtime_state_1.toFrameworkActorRef)(actorRef, meshName) };
|
|
104
59
|
}
|
|
105
|
-
if (
|
|
60
|
+
if (state.actorType === undefined)
|
|
61
|
+
throw new Error('Local Actor Join requires a registered Actor type.');
|
|
62
|
+
const actorType = state.actorType;
|
|
63
|
+
const previousSpotId = state.spotId;
|
|
64
|
+
const spotGeneration = target.targetSpotGeneration;
|
|
65
|
+
if (spotGeneration === undefined ||
|
|
66
|
+
spotGeneration <= 0n ||
|
|
67
|
+
node.restoreActorAuthority === undefined) {
|
|
68
|
+
throw new Error('Local Actor Join requires a valid target generation and stateful membership runtime.');
|
|
69
|
+
}
|
|
70
|
+
const membershipEpoch = location.membershipEpoch + 1n;
|
|
71
|
+
const commit = async (spot) => {
|
|
72
|
+
(0, abort_1.throwIfAborted)(signal);
|
|
73
|
+
if (target.spotKind === contracts_1.ZLinkSpotKind.Entry) {
|
|
74
|
+
await this.options.locationLifecycle?.notifyActorLeftSpot(actorType, actor.context.actorId, storeSpotId, spotGeneration, membershipEpoch, node.status().lifecycleGeneration);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
await this.options.locationLifecycle?.notifyActorJoinedSpot(actorType, actor.context.actorId, meshName, storeSpotId, spotGeneration, membershipEpoch, node.status().lifecycleGeneration);
|
|
78
|
+
}
|
|
79
|
+
const committedActor = node.restoreActorAuthority(actor.context.actorId, actorType, actorRef.generation, state.locationGeneration ?? actorRef.generation, target.spotKind === contracts_1.ZLinkSpotKind.Entry ? undefined : String(target.spotId), spotGeneration, membershipEpoch);
|
|
80
|
+
state.setNativeActorRef(committedActor);
|
|
81
|
+
if (target.spotKind === contracts_1.ZLinkSpotKind.Entry)
|
|
82
|
+
state.clearJoinedSpot();
|
|
83
|
+
else
|
|
84
|
+
state.setJoinedSpot(target.spotId, spot, membershipEpoch, spotGeneration);
|
|
85
|
+
state.setRemoteActorPacketTarget(target.spotKind === contracts_1.ZLinkSpotKind.Entry ? undefined : target);
|
|
86
|
+
};
|
|
87
|
+
const leaveSource = async () => {
|
|
88
|
+
void this.options.localSourceLeave?.(actor, previousSpotId, signal).catch((error) => {
|
|
89
|
+
this.options.reportSourceLeaveError(error);
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
let response;
|
|
93
|
+
if (target.spotKind === contracts_1.ZLinkSpotKind.Entry) {
|
|
94
|
+
if (this.options.localEntryJoin === undefined)
|
|
95
|
+
throw new Error('Local Entry Actor Join runtime is not configured.');
|
|
96
|
+
await commit();
|
|
106
97
|
try {
|
|
107
|
-
|
|
108
|
-
accepted: false,
|
|
109
|
-
actor: (0, actor_runtime_state_1.toFrameworkActorRef)(control.actor, actorMeshName),
|
|
110
|
-
reply: completion.parts[0]
|
|
111
|
-
};
|
|
98
|
+
await this.options.localEntryJoin(actor, signal);
|
|
112
99
|
}
|
|
113
100
|
finally {
|
|
114
|
-
|
|
101
|
+
await leaveSource();
|
|
115
102
|
}
|
|
103
|
+
response = { accepted: true };
|
|
116
104
|
}
|
|
117
|
-
|
|
118
|
-
(
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
state.setNativeActorRef(control.actor);
|
|
122
|
-
state.clearJoinedSpot();
|
|
123
|
-
state.setRemoteActorPacketTarget(undefined);
|
|
124
|
-
if (state.actorType !== undefined) {
|
|
125
|
-
this.options.postCommitLocation?.leftEventually(state.actorType, actor.context.actorId, (0, actor_runtime_state_1.toFrameworkRoutingId)(control.location.spotId ?? spotRouteTarget?.spotId ?? nodeRid), control.location.spotGeneration, control.location.membershipEpoch, node.status().lifecycleGeneration);
|
|
126
|
-
}
|
|
127
|
-
await this.options.postCommitBinder?.bind((0, actor_runtime_state_1.toFrameworkActorRef)(control.actor, actorMeshName));
|
|
128
|
-
try {
|
|
129
|
-
return {
|
|
130
|
-
accepted: true,
|
|
131
|
-
actor: (0, actor_runtime_state_1.toFrameworkActorRef)(control.actor, actorMeshName),
|
|
132
|
-
reply: completion.parts[0]
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
finally {
|
|
136
|
-
disposeParts(completion.parts.slice(1));
|
|
105
|
+
else {
|
|
106
|
+
if (this.options.localSpotJoin === undefined)
|
|
107
|
+
throw new Error('Local Spot Actor Join runtime is not configured.');
|
|
108
|
+
response = await this.options.localSpotJoin(target.spotId, actor, request, commit, signal, leaveSource, (0, payload_codec_1.frameworkPayloadContentType)(request));
|
|
137
109
|
}
|
|
110
|
+
return {
|
|
111
|
+
accepted: response.accepted,
|
|
112
|
+
actor: (0, actor_runtime_state_1.toFrameworkActorRef)(state.nativeActorRef ?? actorRef, meshName),
|
|
113
|
+
reply: response.reply
|
|
114
|
+
};
|
|
138
115
|
}
|
|
139
116
|
async waitForJoinCompletion(submit, completions, timeoutMs, signal) {
|
|
140
117
|
// The operation ID identifies one Core request. Once it is submitted, a
|
|
@@ -253,7 +230,7 @@ class ZLinkLocalNativeActorJoin {
|
|
|
253
230
|
...(completionOperationId === undefined
|
|
254
231
|
? {}
|
|
255
232
|
: {
|
|
256
|
-
replyContentType: control.replyContentType ??
|
|
233
|
+
replyContentType: control.replyContentType ?? stream_wire_1.ZlinkStreamContentType.Raw
|
|
257
234
|
}),
|
|
258
235
|
reply: completionOperationId === undefined
|
|
259
236
|
? Buffer.alloc(0)
|
|
@@ -328,7 +305,7 @@ function legacyRemoteActorJoinPayload(actor, state, actorRef, target, request, t
|
|
|
328
305
|
// canonical admission; it never substitutes target-Spot values as an Actor
|
|
329
306
|
// authority fence.
|
|
330
307
|
const payload = Buffer.from(JSON.stringify({
|
|
331
|
-
packetName:
|
|
308
|
+
packetName: actor_remote_wire_1.ZLINK_REMOTE_ACTOR_JOIN_PACKET,
|
|
332
309
|
phase: 'admission',
|
|
333
310
|
transferId,
|
|
334
311
|
spotId: String(target.spotId),
|
|
@@ -343,7 +320,7 @@ function legacyRemoteActorJoinPayload(actor, state, actorRef, target, request, t
|
|
|
343
320
|
}));
|
|
344
321
|
return {
|
|
345
322
|
packetName: ZLINK_FRAMEWORK_ACTOR_JOIN_PACKET_NAME,
|
|
346
|
-
contentType:
|
|
323
|
+
contentType: stream_wire_1.ZlinkStreamContentType.Json,
|
|
347
324
|
payload,
|
|
348
325
|
// Older in-process MeshNode adapters consume the fallback as a Message.
|
|
349
326
|
// Keep that structural view without changing the typed service payload.
|
|
@@ -365,7 +342,8 @@ function runtimeActorMeshName(actor, state, fallback) {
|
|
|
365
342
|
return context?.meshName ?? stateMeshName ?? fallback;
|
|
366
343
|
}
|
|
367
344
|
async function submitJoinWhenConnected(submit, timeoutMs, signal) {
|
|
368
|
-
const deadline = performance.now() +
|
|
345
|
+
const deadline = performance.now() +
|
|
346
|
+
Math.min(timeoutMs ?? LOCAL_JOIN_RESOLUTION_TIMEOUT_MS, LOCAL_JOIN_RESOLUTION_TIMEOUT_MS);
|
|
369
347
|
for (;;) {
|
|
370
348
|
(0, abort_1.throwIfAborted)(signal);
|
|
371
349
|
try {
|
|
@@ -375,7 +353,7 @@ async function submitJoinWhenConnected(submit, timeoutMs, signal) {
|
|
|
375
353
|
if (!(0, runtime_values_1.isBackendNotConnectedError)(error) || performance.now() >= deadline) {
|
|
376
354
|
throw error;
|
|
377
355
|
}
|
|
378
|
-
await new Promise((resolve) => setTimeout(resolve,
|
|
356
|
+
await new Promise((resolve) => setTimeout(resolve, LOCAL_JOIN_POLL_INTERVAL_MS));
|
|
379
357
|
}
|
|
380
358
|
}
|
|
381
359
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.lookupNativeActorRef = lookupNativeActorRef;
|
|
4
|
+
const zlink_1 = require("@zlink-systems/zlink");
|
|
4
5
|
function lookupNativeActorRef(node, actorId) {
|
|
5
6
|
try {
|
|
6
7
|
const location = node.actorLookup(actorId);
|
|
@@ -15,16 +16,9 @@ function lookupNativeActorRef(node, actorId) {
|
|
|
15
16
|
};
|
|
16
17
|
}
|
|
17
18
|
catch (error) {
|
|
18
|
-
if (
|
|
19
|
+
if (error instanceof zlink_1.ConfigError && error.result === zlink_1.ConfigResult.NotFound) {
|
|
19
20
|
return undefined;
|
|
20
21
|
}
|
|
21
22
|
throw error;
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
|
-
function nativeErrno(error) {
|
|
25
|
-
if (typeof error !== 'object' || error === null || !('nativeErrno' in error)) {
|
|
26
|
-
return undefined;
|
|
27
|
-
}
|
|
28
|
-
const value = error.nativeErrno;
|
|
29
|
-
return typeof value === 'number' ? value : undefined;
|
|
30
|
-
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { ZLinkSpotKind } from '../../contracts';
|
|
3
|
-
import type { ZLinkRemoteActorPacketTarget } from './actor-runtime-state';
|
|
1
|
+
import { type ActorRef, type RoutingId, ZLinkSpotKind } from '../../contracts';
|
|
4
2
|
import { type ZLinkActorMessageFollowContext } from './actor-message-follow-context';
|
|
3
|
+
import type { ZLinkRemoteActorPacketTarget } from './actor-runtime-state';
|
|
5
4
|
export declare const ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET = "__zlink.actor.packet.relay";
|
|
6
5
|
export declare const ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET = "zlink.framework.actor.session_disconnected";
|
|
7
6
|
export declare const ZLINK_REMOTE_ACTOR_SESSION_BIND_PACKET = "framework.internal.actor-session-bind";
|
|
@@ -21,6 +20,7 @@ export declare function encodeRemoteActorPacketRelayPayload(input: {
|
|
|
21
20
|
readonly header: Uint8Array;
|
|
22
21
|
readonly payload: Uint8Array;
|
|
23
22
|
readonly bindingActorRef?: ActorRef;
|
|
23
|
+
readonly bindingGeneration?: bigint;
|
|
24
24
|
/** The actor reference used to preserve relocation context at the target Spot. */
|
|
25
25
|
readonly actorRef?: ActorRef;
|
|
26
26
|
readonly returnResponse?: boolean;
|
|
@@ -9,6 +9,7 @@ exports.encodeRemoteActorPacketTarget = encodeRemoteActorPacketTarget;
|
|
|
9
9
|
exports.decodeRemoteActorPacketTarget = decodeRemoteActorPacketTarget;
|
|
10
10
|
exports.decodeRemoteActorPacketRelayPayload = decodeRemoteActorPacketRelayPayload;
|
|
11
11
|
const contracts_1 = require("../../contracts");
|
|
12
|
+
const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
|
|
12
13
|
const routing_id_1 = require("../routing-id");
|
|
13
14
|
const actor_message_follow_context_1 = require("./actor-message-follow-context");
|
|
14
15
|
exports.ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET = '__zlink.actor.packet.relay';
|
|
@@ -47,7 +48,8 @@ function encodeRemoteActorPacketRelayPayload(input) {
|
|
|
47
48
|
? undefined
|
|
48
49
|
: (0, routing_id_1.routingIdWireHex)(input.bindingActorRef.nodeRid),
|
|
49
50
|
bindingActorGeneration: input.bindingActorRef?.objectGeneration.toString(),
|
|
50
|
-
bindingGeneration: input.
|
|
51
|
+
bindingGeneration: input.bindingGeneration?.toString() ??
|
|
52
|
+
input.bindingActorRef?.bindingGeneration?.toString(),
|
|
51
53
|
returnResponse: input.returnResponse,
|
|
52
54
|
messageFollowContext: input.messageFollowContext,
|
|
53
55
|
header: Buffer.from(input.header).toString('base64'),
|
|
@@ -100,8 +102,8 @@ function decodeRemoteActorPacketTarget(value) {
|
|
|
100
102
|
}
|
|
101
103
|
function requireSpotId(value) {
|
|
102
104
|
const bytes = Buffer.byteLength(value, 'utf8');
|
|
103
|
-
if (bytes < 1 || bytes >
|
|
104
|
-
throw new Error(
|
|
105
|
+
if (bytes < 1 || bytes > CoreTypes_1.ZLINK_MAX_SPOT_ID_BYTES) {
|
|
106
|
+
throw new Error(`Actor packet target SpotId must contain 1..${CoreTypes_1.ZLINK_MAX_SPOT_ID_BYTES} UTF-8 bytes.`);
|
|
105
107
|
}
|
|
106
108
|
return value;
|
|
107
109
|
}
|
|
@@ -7,7 +7,7 @@ import type { ZLinkActorJoinCoordinator, ZLinkActorJoinRuntimeResult } from './a
|
|
|
7
7
|
import type { ZLinkActorSourceTransfer } from './actor-source-transfer';
|
|
8
8
|
import { ZLinkActorRuntimeState } from './actor-runtime-state';
|
|
9
9
|
import type { ZLinkActorJoinRelocation } from './actor-join-relocation';
|
|
10
|
-
export interface ZLinkActorNativeJoinCoordinatorOptions {
|
|
10
|
+
export interface ZLinkActorNativeJoinCoordinatorOptions extends Pick<import('./actor-local-native-join').ZLinkLocalNativeActorJoinOptions, 'localSpotJoin' | 'localEntryJoin' | 'localSourceLeave' | 'reportSourceLeaveError'> {
|
|
11
11
|
readonly messageFlow?: () => import('../diagnostics/message-flow').ZLinkMessageFlowTracer | undefined;
|
|
12
12
|
readonly node: ZLinkBackendMeshNode | (() => ZLinkBackendMeshNode);
|
|
13
13
|
readonly completionTableProvider: () => ZLinkMeshCompletionTable | undefined;
|
|
@@ -4,7 +4,6 @@ exports.ZLinkActorNativeJoinCoordinator = void 0;
|
|
|
4
4
|
const abort_1 = require("../abort");
|
|
5
5
|
const actor_runtime_state_1 = require("./actor-runtime-state");
|
|
6
6
|
const actor_native_lookup_1 = require("./actor-native-lookup");
|
|
7
|
-
const post_commit_actor_location_1 = require("./post-commit-actor-location");
|
|
8
7
|
const actor_local_native_join_1 = require("./actor-local-native-join");
|
|
9
8
|
const post_commit_actor_binder_1 = require("./post-commit-actor-binder");
|
|
10
9
|
/** Selects local native join or remote two-phase transfer for each destination. */
|
|
@@ -16,15 +15,12 @@ class ZLinkActorNativeJoinCoordinator {
|
|
|
16
15
|
}
|
|
17
16
|
constructor(options) {
|
|
18
17
|
this.options = options;
|
|
19
|
-
const postCommitLocation = options.locationLifecycle === undefined
|
|
20
|
-
? undefined
|
|
21
|
-
: new post_commit_actor_location_1.ZLinkPostCommitActorLocation({
|
|
22
|
-
lifecycle: options.locationLifecycle,
|
|
23
|
-
reportError: options.postCommitErrorReporter,
|
|
24
|
-
signal: options.shutdownSignal
|
|
25
|
-
});
|
|
26
18
|
this.localJoin = new actor_local_native_join_1.ZLinkLocalNativeActorJoin({
|
|
27
|
-
|
|
19
|
+
locationLifecycle: options.locationLifecycle,
|
|
20
|
+
localSpotJoin: options.localSpotJoin,
|
|
21
|
+
localEntryJoin: options.localEntryJoin,
|
|
22
|
+
localSourceLeave: options.localSourceLeave,
|
|
23
|
+
reportSourceLeaveError: options.reportSourceLeaveError,
|
|
28
24
|
postCommitBinder: options.remoteActorBinder === undefined
|
|
29
25
|
? undefined
|
|
30
26
|
: new post_commit_actor_binder_1.ZLinkPostCommitActorBinder({
|
|
@@ -4,6 +4,8 @@ exports.REMOTE_ACTOR_JOIN_ABORT = exports.REMOTE_ACTOR_JOIN_COMMIT = exports.REM
|
|
|
4
4
|
exports.decodeRemoteActorSourceLeaveTerminal = decodeRemoteActorSourceLeaveTerminal;
|
|
5
5
|
exports.decodeRemoteActorJoinPayload = decodeRemoteActorJoinPayload;
|
|
6
6
|
exports.decodeWireRoutingId = decodeWireRoutingId;
|
|
7
|
+
const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
|
|
8
|
+
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
7
9
|
const routing_id_1 = require("../routing-id");
|
|
8
10
|
exports.ZLINK_REMOTE_ACTOR_JOIN_PACKET = '__zlink.actor.join_spot.request';
|
|
9
11
|
exports.ZLINK_REMOTE_ACTOR_SOURCE_LEAVE_TERMINAL = '__zlink.actor.source_leave.terminal';
|
|
@@ -56,7 +58,7 @@ function decodeRemoteActorJoinPayload(payload) {
|
|
|
56
58
|
boundSessionTargetNodeRid: optionalRoutingId(payload, 'boundSessionTargetNodeRid', 'boundSessionTargetNodeRidHex'),
|
|
57
59
|
boundSessionSpotId: optionalSpotId(payload, 'boundSessionSpotId'),
|
|
58
60
|
request: payload.request,
|
|
59
|
-
requestContentType: optionalString(payload, 'requestContentType') ??
|
|
61
|
+
requestContentType: optionalString(payload, 'requestContentType') ?? stream_wire_1.ZlinkStreamContentType.Json
|
|
60
62
|
};
|
|
61
63
|
}
|
|
62
64
|
function decodeWireRoutingId(text, hex) {
|
|
@@ -76,8 +78,8 @@ function optionalSpotId(value, key) {
|
|
|
76
78
|
}
|
|
77
79
|
function requireSpotId(value) {
|
|
78
80
|
const bytes = Buffer.byteLength(value, 'utf8');
|
|
79
|
-
if (bytes < 1 || bytes >
|
|
80
|
-
throw new Error(
|
|
81
|
+
if (bytes < 1 || bytes > CoreTypes_1.ZLINK_MAX_SPOT_ID_BYTES) {
|
|
82
|
+
throw new Error(`Remote actor SpotId must contain 1..${CoreTypes_1.ZLINK_MAX_SPOT_ID_BYTES} UTF-8 bytes.`);
|
|
81
83
|
}
|
|
82
84
|
return value;
|
|
83
85
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { remainingRequestTimeout as remainingActorRequestTimeout, waitRequestReply as waitActorReply } from '../messaging/request-deadline';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.waitActorReply = exports.remainingActorRequestTimeout = void 0;
|
|
4
|
+
var request_deadline_1 = require("../messaging/request-deadline");
|
|
5
|
+
Object.defineProperty(exports, "remainingActorRequestTimeout", { enumerable: true, get: function () { return request_deadline_1.remainingRequestTimeout; } });
|
|
6
|
+
Object.defineProperty(exports, "waitActorReply", { enumerable: true, get: function () { return request_deadline_1.waitRequestReply; } });
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ZLinkActorRetryDelay = void 0;
|
|
4
4
|
const INITIAL_RETRY_DELAY_MS = 25;
|
|
5
5
|
const MAX_RETRY_DELAY_MS = 1_000;
|
|
6
|
+
const RETRY_BACKOFF_MULTIPLIER = 2;
|
|
6
7
|
class ZLinkActorRetryDelay {
|
|
7
8
|
delayMs = INITIAL_RETRY_DELAY_MS;
|
|
8
9
|
reset() {
|
|
@@ -11,7 +12,7 @@ class ZLinkActorRetryDelay {
|
|
|
11
12
|
async wait(signal) {
|
|
12
13
|
const completed = await delayUnlessAborted(this.delayMs, signal);
|
|
13
14
|
if (completed) {
|
|
14
|
-
this.delayMs = Math.min(this.delayMs *
|
|
15
|
+
this.delayMs = Math.min(this.delayMs * RETRY_BACKOFF_MULTIPLIER, MAX_RETRY_DELAY_MS);
|
|
15
16
|
}
|
|
16
17
|
return completed;
|
|
17
18
|
}
|
|
@@ -6,11 +6,10 @@ export interface ZLinkActorRoutedJoinTransport {
|
|
|
6
6
|
canRouteChannel?(routerChannelId: string): boolean;
|
|
7
7
|
canRoutePacketChannel?(routerChannelId: string): boolean;
|
|
8
8
|
request<TReply>(routerChannelId: string, targetNodeRid: string, packetName: string | undefined, request: unknown, timeoutMs: number | undefined, signal?: AbortSignal): Promise<TReply>;
|
|
9
|
-
submit?(routerChannelId: string, targetNodeRid: string, packetName: string | undefined, message: unknown
|
|
10
|
-
submitInfrastructure?(routerChannelId: string, targetNodeRid: string, packetName: string | undefined, message: unknown
|
|
9
|
+
submit?(routerChannelId: string, targetNodeRid: string, packetName: string | undefined, message: unknown): Promise<ZLinkSubmitResult>;
|
|
10
|
+
submitInfrastructure?(routerChannelId: string, targetNodeRid: string, packetName: string | undefined, message: unknown): Promise<ZLinkSubmitResult>;
|
|
11
11
|
sendToSpot(spotRouteTarget: ZLinkSpotRouteTarget, message: unknown, options: {
|
|
12
12
|
readonly packetName?: string;
|
|
13
|
-
readonly signal?: AbortSignal;
|
|
14
13
|
}): Promise<ZLinkSubmitResult>;
|
|
15
14
|
requestRawToSpot?(spotRouteTarget: ZLinkSpotRouteTarget, request: Message, options: {
|
|
16
15
|
readonly timeoutMs?: number;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { ZLinkSpotKind } from '../../contracts';
|
|
1
|
+
import { type ActorRef, type RoutingId, type ZLinkActor, type ZLinkActorContext, type ZLinkSpot, ZLinkSpotKind } from '../../contracts';
|
|
3
2
|
import type { Message } from '../../contracts/Common/Message';
|
|
4
3
|
import type { ZLinkBackendActorRef, ZLinkBackendMeshNode } from '../backend/contracts';
|
|
5
4
|
export interface ZLinkRemoteBoundSessionTarget {
|
|
@@ -37,18 +36,6 @@ export interface ZLinkRemoteBoundSessionTarget {
|
|
|
37
36
|
};
|
|
38
37
|
};
|
|
39
38
|
}
|
|
40
|
-
/**
|
|
41
|
-
* Applies a lightweight Session binding refresh without discarding the
|
|
42
|
-
* relocation fence that was staged for the same route. Core emits the bind
|
|
43
|
-
* refresh with routing coordinates only; the relocation owner retains the
|
|
44
|
-
* service-wire relocation identity until command 44 releases the owner seal.
|
|
45
|
-
*/
|
|
46
|
-
export declare function mergeRemoteBoundSessionTarget(target: ZLinkRemoteBoundSessionTarget, fallback: ZLinkRemoteBoundSessionTarget | undefined): ZLinkRemoteBoundSessionTarget;
|
|
47
|
-
/**
|
|
48
|
-
* Selects the route that still carries the relocation fence when a Core
|
|
49
|
-
* binding refresh and a formal transfer target temporarily coexist.
|
|
50
|
-
*/
|
|
51
|
-
export declare function preferredRemoteBoundSessionTarget(remote: ZLinkRemoteBoundSessionTarget | undefined, transfer: ZLinkRemoteBoundSessionTarget | undefined): ZLinkRemoteBoundSessionTarget | undefined;
|
|
52
39
|
export interface ZLinkRemoteActorPacketTarget {
|
|
53
40
|
readonly routerChannelId: string;
|
|
54
41
|
readonly targetNodeRid: RoutingId;
|
|
@@ -89,10 +76,8 @@ export declare class ZLinkActorRuntimeState {
|
|
|
89
76
|
private spotGenerationValue;
|
|
90
77
|
private spotMembershipEpochValue;
|
|
91
78
|
private nativeActorRefValue;
|
|
92
|
-
private boundSessionBindingGenerationValue;
|
|
93
79
|
private entryNodeRidValue;
|
|
94
|
-
private
|
|
95
|
-
private boundSessionTransferTargetValue;
|
|
80
|
+
private boundSessionValue;
|
|
96
81
|
private remoteActorPacketTargetValue;
|
|
97
82
|
private createRequestPayloadValue;
|
|
98
83
|
private ownsLocationValue;
|
|
@@ -113,8 +98,14 @@ export declare class ZLinkActorRuntimeState {
|
|
|
113
98
|
get nativeActorRef(): ZLinkBackendActorRef | undefined;
|
|
114
99
|
get boundSessionBindingGeneration(): bigint;
|
|
115
100
|
get entryNodeRid(): RoutingId | undefined;
|
|
101
|
+
/** The one current Session binding of this Actor (Session–Actor binding §6). */
|
|
102
|
+
get boundSession(): ZLinkRemoteBoundSessionTarget | undefined;
|
|
103
|
+
/**
|
|
104
|
+
* The current binding when its Session owner is another node. A same-node
|
|
105
|
+
* binding is served by the local Session registry, so remote routing sees
|
|
106
|
+
* no target for it.
|
|
107
|
+
*/
|
|
116
108
|
get remoteBoundSessionTarget(): ZLinkRemoteBoundSessionTarget | undefined;
|
|
117
|
-
get boundSessionTransferTarget(): ZLinkRemoteBoundSessionTarget | undefined;
|
|
118
109
|
get remoteActorPacketTarget(): ZLinkRemoteActorPacketTarget | undefined;
|
|
119
110
|
get createRequestPayload(): Buffer | undefined;
|
|
120
111
|
get isJoined(): boolean;
|
|
@@ -140,10 +131,7 @@ export declare class ZLinkActorRuntimeState {
|
|
|
140
131
|
bindActor(actor: ZLinkActor, context: ZLinkActorContext): void;
|
|
141
132
|
ensureNativeActorRef(node: ZLinkBackendMeshNode, request?: Message): ZLinkBackendActorRef;
|
|
142
133
|
setNativeActorRef(actorRef: ZLinkBackendActorRef): void;
|
|
143
|
-
setBoundSessionBindingGeneration(generation: bigint): void;
|
|
144
134
|
setEntryNodeRid(entryNodeRid: RoutingId): void;
|
|
145
|
-
setRemoteBoundSessionTarget(target: ZLinkRemoteBoundSessionTarget | undefined): void;
|
|
146
|
-
setBoundSessionTransferTarget(target: ZLinkRemoteBoundSessionTarget | undefined): void;
|
|
147
135
|
setRemoteActorPacketTarget(target: ZLinkRemoteActorPacketTarget | undefined): void;
|
|
148
136
|
setCreateRequestPayload(payload: Buffer | Uint8Array): void;
|
|
149
137
|
setJoinedSpot(spotId: RoutingId, spot?: ZLinkSpot, membershipEpoch?: bigint, spotGeneration?: bigint): void;
|