@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
|
@@ -27,36 +27,23 @@ export interface ZLinkPreparedActorSource {
|
|
|
27
27
|
|
|
28
28
|
export interface ZLinkActorSourceTransfer {
|
|
29
29
|
/** Starts the ingress handoff before target route lookup. */
|
|
30
|
-
beginDeferredActorHandoff?(
|
|
31
|
-
actor: ZLinkActor,
|
|
32
|
-
state: ZLinkActorRuntimeState,
|
|
33
|
-
operationId: string
|
|
34
|
-
): void;
|
|
30
|
+
beginDeferredActorHandoff?(actor: ZLinkActor, state: ZLinkActorRuntimeState): void;
|
|
35
31
|
/** Changes a provisional ingress fence into a relocation handoff. */
|
|
36
|
-
promoteDeferredActorHandoff?(
|
|
37
|
-
actor: ZLinkActor,
|
|
38
|
-
state: ZLinkActorRuntimeState,
|
|
39
|
-
operationId: string
|
|
40
|
-
): void;
|
|
32
|
+
promoteDeferredActorHandoff?(actor: ZLinkActor, state: ZLinkActorRuntimeState): void;
|
|
41
33
|
/** Finishes a same-node deferred Join handoff after completion callback. */
|
|
42
34
|
completeDeferredActorHandoff?(
|
|
43
35
|
actor: ZLinkActor,
|
|
44
36
|
target: ZLinkSpotRouteTarget,
|
|
45
|
-
targetActorRef: ActorRef
|
|
46
|
-
operationId: string
|
|
37
|
+
targetActorRef: ActorRef
|
|
47
38
|
): Promise<void>;
|
|
48
39
|
/** Releases an early handoff when Join cannot commit. */
|
|
49
|
-
cancelDeferredActorHandoff?(
|
|
50
|
-
actor: ZLinkActor,
|
|
51
|
-
state: ZLinkActorRuntimeState,
|
|
52
|
-
operationId: string
|
|
53
|
-
): Promise<void>;
|
|
40
|
+
cancelDeferredActorHandoff?(actor: ZLinkActor, state: ZLinkActorRuntimeState): Promise<void>;
|
|
54
41
|
prepareSource(
|
|
55
42
|
actor: ZLinkActor,
|
|
56
43
|
state: ZLinkActorRuntimeState,
|
|
57
44
|
signal?: AbortSignal,
|
|
58
45
|
lifecycleAuthority?: 'framework' | 'core',
|
|
59
|
-
|
|
46
|
+
deferredJoin?: boolean,
|
|
60
47
|
relocation?: ServiceWireOperationId
|
|
61
48
|
): Promise<ZLinkPreparedActorSource>;
|
|
62
49
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { FLOW_ORIGIN_VALUES } from '../diagnostics/flow-context';
|
|
1
2
|
export const ZLINK_REMOTE_BOUND_SESSION_FENCE_NACK_CODE = 'zlink.bound_session.fence';
|
|
2
3
|
|
|
3
4
|
/**
|
|
@@ -69,17 +70,10 @@ export function encodeRemoteBoundSessionSendPayload(input: {
|
|
|
69
70
|
};
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
const WIRE_FLOW_ORIGIN: Record<import('../../contracts').ZLinkFlowOrigin, string> = {
|
|
73
|
-
Inbound: 'inbound',
|
|
74
|
-
Timer: 'timer',
|
|
75
|
-
Application: 'application',
|
|
76
|
-
Lifecycle: 'lifecycle'
|
|
77
|
-
};
|
|
78
|
-
|
|
79
73
|
function encodeWireFlowOrigin(
|
|
80
74
|
origin: import('../../contracts').ZLinkFlowOrigin | undefined
|
|
81
75
|
): string | undefined {
|
|
82
|
-
return origin === undefined ? undefined :
|
|
76
|
+
return origin === undefined ? undefined : FLOW_ORIGIN_VALUES[origin];
|
|
83
77
|
}
|
|
84
78
|
|
|
85
79
|
export function encodeRemoteBoundSessionResponsePayload(input: {
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ActorRef, ZLinkActorJoinOperationId, ZLinkFrameworkErrorKind } from '../../contracts';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The Accepted or Failed result of a deferred cross-node Join. Spot Actor
|
|
5
|
+
* membership sections 4-5: the public OperationId, optional reply and delivery
|
|
6
|
+
* state live only while the current source and target processes run. The
|
|
7
|
+
* completion is never written to a Store or replayed after a restart.
|
|
8
|
+
*/
|
|
9
|
+
export type ZLinkDeferredJoinCompletion = {
|
|
10
|
+
readonly operationId: ZLinkActorJoinOperationId;
|
|
11
|
+
readonly actor: ActorRef;
|
|
12
|
+
readonly rawReply: Buffer;
|
|
13
|
+
readonly replyContentType?: string;
|
|
14
|
+
} & (
|
|
15
|
+
| { readonly status: 'accepted' }
|
|
16
|
+
| { readonly status: 'failed'; readonly kind: ZLinkFrameworkErrorKind }
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
export function createDeferredJoinCompletion(
|
|
20
|
+
actorId: string,
|
|
21
|
+
operationId: ZLinkActorJoinOperationId,
|
|
22
|
+
actor: ActorRef,
|
|
23
|
+
rawReply: Uint8Array,
|
|
24
|
+
replyContentType?: string
|
|
25
|
+
): ZLinkDeferredJoinCompletion {
|
|
26
|
+
if (
|
|
27
|
+
actorId.length === 0 ||
|
|
28
|
+
actor.actorId !== actorId ||
|
|
29
|
+
actor.objectGeneration <= 0n ||
|
|
30
|
+
(operationId.high === 0n && operationId.low === 0n)
|
|
31
|
+
) {
|
|
32
|
+
throw new Error('Deferred Join completion identity is invalid.');
|
|
33
|
+
}
|
|
34
|
+
if (replyContentType !== undefined && replyContentType.length === 0) {
|
|
35
|
+
throw new TypeError('Deferred Join reply content type must be non-empty.');
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
status: 'accepted',
|
|
39
|
+
operationId,
|
|
40
|
+
actor,
|
|
41
|
+
rawReply: Buffer.from(rawReply),
|
|
42
|
+
...(replyContentType === undefined ? {} : { replyContentType })
|
|
43
|
+
};
|
|
44
|
+
}
|
|
@@ -1,41 +1,52 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
ZLinkActorGetOrCreateCall,
|
|
14
|
-
ZLinkActorManager
|
|
2
|
+
type ActorRef,
|
|
3
|
+
type RoutingId,
|
|
4
|
+
type SpotRef,
|
|
5
|
+
type ZLinkActor,
|
|
6
|
+
type ZLinkActorCreateCall,
|
|
7
|
+
type ZLinkActorCreateResult,
|
|
8
|
+
type ZLinkActorGetOrCreateCall,
|
|
9
|
+
type ZLinkActorManager,
|
|
10
|
+
ZLinkEncodedPayload,
|
|
11
|
+
ZLinkFrameworkException,
|
|
12
|
+
ZLinkMessage
|
|
15
13
|
} from '../../contracts';
|
|
16
|
-
import {
|
|
17
|
-
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
18
|
-
import { ZLinkMessage } from '../../contracts';
|
|
19
|
-
import { ZLinkConfigurationException } from '../configuration';
|
|
14
|
+
import { DEFAULT_REQUEST_TIMEOUT_MS } from '../../contracts/Configuration/Registration';
|
|
20
15
|
import { throwIfAborted } from '../abort';
|
|
21
16
|
import type { ZLinkBackendActorRef, ZLinkBackendSpotNode } from '../backend/contracts';
|
|
22
17
|
import { closeMeshCompletion } from '../backend/mesh-completion-table';
|
|
18
|
+
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
19
|
+
import { ZLinkConfigurationException } from '../configuration';
|
|
20
|
+
import { METRIC_NAMES } from '../diagnostics/runtime-metrics';
|
|
23
21
|
import {
|
|
24
22
|
captureZLinkSpotSerialTurn,
|
|
25
23
|
requireZLinkYieldTurn,
|
|
26
24
|
type ZLinkSpotSerialTurn
|
|
27
25
|
} from '../execution';
|
|
26
|
+
import {
|
|
27
|
+
ZLinkFrameworkInternalErrorKind,
|
|
28
|
+
createInternalFrameworkException,
|
|
29
|
+
wireReplyFailureException
|
|
30
|
+
} from '../framework-errors-internal';
|
|
28
31
|
import { disposeLifecycleHandlers } from '../handlers/handler-instance-scope';
|
|
32
|
+
import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
|
|
33
|
+
import { ZLinkActorCreationCoordinator, type ZLinkActorCreateRequest } from './actor-creation';
|
|
34
|
+
import type { ZLinkActorManagerOptions } from './actor-runtime-contracts';
|
|
35
|
+
import {
|
|
36
|
+
ZLinkActorRuntimeState,
|
|
37
|
+
toFrameworkActorRef,
|
|
38
|
+
type ZLinkActorCreationAttemptResult
|
|
39
|
+
} from './actor-runtime-state';
|
|
40
|
+
import { ZLinkTransferredActorRollbackCoordinator } from './transferred-actor-rollback';
|
|
41
|
+
const ACTOR_CREATION_RETRY_INTERVAL_MS = 5;
|
|
42
|
+
const LOCAL_DIAGNOSTIC_NODE_RID = 'local';
|
|
29
43
|
|
|
30
44
|
export {
|
|
31
45
|
DefaultZLinkActorClient,
|
|
32
46
|
forwardEncodedActorPacket,
|
|
33
47
|
type ZLinkActorClientOptions
|
|
34
48
|
} from './actor-client';
|
|
35
|
-
|
|
36
|
-
import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
|
|
37
49
|
export { DefaultZLinkActorContext, ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME } from './actor-context';
|
|
38
|
-
import { ZLinkActorCreationCoordinator, type ZLinkActorCreateRequest } from './actor-creation';
|
|
39
50
|
export { ZLinkActorSerialExecutor } from './actor-mailbox';
|
|
40
51
|
export {
|
|
41
52
|
DEFAULT_MESSAGE_FOLLOW_DURATION_MS,
|
|
@@ -60,8 +71,6 @@ export {
|
|
|
60
71
|
} from './actor-message-follow-context';
|
|
61
72
|
export {
|
|
62
73
|
ZLinkActorRuntimeState,
|
|
63
|
-
mergeRemoteBoundSessionTarget,
|
|
64
|
-
preferredRemoteBoundSessionTarget,
|
|
65
74
|
toFrameworkActorRef,
|
|
66
75
|
toFrameworkRoutingId,
|
|
67
76
|
type ZLinkActorCreationOperation,
|
|
@@ -69,12 +78,9 @@ export {
|
|
|
69
78
|
type ZLinkRemoteBoundSessionTarget
|
|
70
79
|
} from './actor-runtime-state';
|
|
71
80
|
export {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
type ZLinkDeferredJoinRootIdentity,
|
|
76
|
-
type ZLinkDeferredJoinDeliveryCursor
|
|
77
|
-
} from './deferred-join-accepted-journal';
|
|
81
|
+
createDeferredJoinCompletion,
|
|
82
|
+
type ZLinkDeferredJoinCompletion
|
|
83
|
+
} from './deferred-join-completion';
|
|
78
84
|
export {
|
|
79
85
|
decodeActorAuthorityIdentity,
|
|
80
86
|
decodeRelocatingActorAuthorityIdentity,
|
|
@@ -85,11 +91,6 @@ export {
|
|
|
85
91
|
publishInitialActorAuthority,
|
|
86
92
|
type ZLinkActorAuthorityIdentity
|
|
87
93
|
} from './actor-authority-publication';
|
|
88
|
-
import {
|
|
89
|
-
ZLinkActorRuntimeState,
|
|
90
|
-
toFrameworkActorRef,
|
|
91
|
-
type ZLinkActorCreationAttemptResult
|
|
92
|
-
} from './actor-runtime-state';
|
|
93
94
|
export {
|
|
94
95
|
ZLinkActorPacketKind,
|
|
95
96
|
ZLinkSpotActorDispatcher,
|
|
@@ -107,8 +108,6 @@ export type {
|
|
|
107
108
|
ZLinkActorJoinCoordinator,
|
|
108
109
|
ZLinkActorManagerOptions
|
|
109
110
|
} from './actor-runtime-contracts';
|
|
110
|
-
import type { ZLinkActorManagerOptions } from './actor-runtime-contracts';
|
|
111
|
-
import { ZLinkTransferredActorRollbackCoordinator } from './transferred-actor-rollback';
|
|
112
111
|
export {
|
|
113
112
|
ZLinkActorTransferRegistry,
|
|
114
113
|
type ZLinkActorTransferPayloadState
|
|
@@ -146,11 +145,18 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
146
145
|
private readonly creation: ZLinkActorCreationCoordinator;
|
|
147
146
|
private readonly transferredActorRollback: ZLinkTransferredActorRollbackCoordinator;
|
|
148
147
|
|
|
149
|
-
constructor(
|
|
148
|
+
constructor(
|
|
149
|
+
private readonly options: ZLinkActorManagerOptions,
|
|
150
|
+
private readonly detachedTaskRunner: import('../spots/spot-actor-join-dispatch').ZLinkDetachedTaskRunner
|
|
151
|
+
) {
|
|
152
|
+
if ((detachedTaskRunner as unknown) === undefined) {
|
|
153
|
+
throw new Error('Actor manager requires a detached task runner.');
|
|
154
|
+
}
|
|
150
155
|
this.creation = new ZLinkActorCreationCoordinator(options);
|
|
151
156
|
this.transferredActorRollback = new ZLinkTransferredActorRollbackCoordinator(
|
|
152
157
|
this.states,
|
|
153
|
-
options
|
|
158
|
+
options,
|
|
159
|
+
(actorId, state) => this.finalizeDestroyedActor(actorId, state)
|
|
154
160
|
);
|
|
155
161
|
}
|
|
156
162
|
|
|
@@ -207,7 +213,6 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
207
213
|
`Actor '${actor.actorId}' is relocating.`
|
|
208
214
|
);
|
|
209
215
|
}
|
|
210
|
-
const actorInstance = state.actor;
|
|
211
216
|
const node = this.options.nativeActorNodeProvider?.() ?? this.options.nativeActorNode;
|
|
212
217
|
const completions = this.options.nativeActorCompletionTableProvider?.();
|
|
213
218
|
const entryNodeRid = state.entryNodeRid ?? current.nodeRid;
|
|
@@ -236,14 +241,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
236
241
|
if (state.actorType !== undefined && state.ownsLocation) {
|
|
237
242
|
await this.options.locationLifecycle?.releaseActor(state.actorType, actor.actorId, current);
|
|
238
243
|
}
|
|
239
|
-
this.
|
|
240
|
-
await disposeLifecycleHandlers(actorInstance);
|
|
241
|
-
state.clearAfterDestroy();
|
|
242
|
-
if (this.states.get(actor.actorId) === state) {
|
|
243
|
-
this.states.delete(actor.actorId);
|
|
244
|
-
this.actorMeshNames.delete(actor.actorId);
|
|
245
|
-
}
|
|
246
|
-
this.options.metrics?.change('zlink.actor.count', -1);
|
|
244
|
+
await this.finalizeDestroyedActor(actor.actorId, state);
|
|
247
245
|
});
|
|
248
246
|
try {
|
|
249
247
|
await destroyTask;
|
|
@@ -265,7 +263,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
265
263
|
const state = this.getOrCreateState(actorId);
|
|
266
264
|
this.rememberActorMeshFromType(actorId, actorType);
|
|
267
265
|
if (state.actor !== undefined) {
|
|
268
|
-
await disposeLifecycleHandlers(state.actor);
|
|
266
|
+
await disposeLifecycleHandlers(state.actor, this.detachedTaskRunner);
|
|
269
267
|
}
|
|
270
268
|
state.prepareForRemoteReentry();
|
|
271
269
|
const operation = state.getOrStartCreation(actorType, false, () =>
|
|
@@ -410,7 +408,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
410
408
|
actorType: string,
|
|
411
409
|
objectGeneration: bigint,
|
|
412
410
|
authorityOwnerGeneration: bigint,
|
|
413
|
-
spotId: RoutingId,
|
|
411
|
+
spotId: RoutingId | undefined,
|
|
414
412
|
spotGeneration: bigint,
|
|
415
413
|
membershipEpoch: bigint,
|
|
416
414
|
signal?: AbortSignal,
|
|
@@ -436,7 +434,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
436
434
|
actorType,
|
|
437
435
|
objectGeneration,
|
|
438
436
|
authorityOwnerGeneration,
|
|
439
|
-
String(spotId),
|
|
437
|
+
spotId === undefined ? undefined : String(spotId),
|
|
440
438
|
spotGeneration,
|
|
441
439
|
membershipEpoch
|
|
442
440
|
);
|
|
@@ -459,18 +457,13 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
459
457
|
await registry.restore(transfer.adapterKey, actor, transfer.state, signal);
|
|
460
458
|
}
|
|
461
459
|
state.setLocationGeneration(authorityOwnerGeneration);
|
|
462
|
-
state.setJoinedSpot(spotId, undefined, membershipEpoch);
|
|
460
|
+
if (spotId !== undefined) state.setJoinedSpot(spotId, undefined, membershipEpoch);
|
|
463
461
|
return actor;
|
|
464
462
|
} catch (error) {
|
|
465
463
|
if (nativeRef !== undefined) node.discardRelocatedActor?.(nativeRef);
|
|
466
464
|
this.relocationStaged.delete(actorId);
|
|
467
465
|
const failedState = this.states.get(actorId);
|
|
468
|
-
|
|
469
|
-
await disposeLifecycleHandlers(failedState.actor);
|
|
470
|
-
}
|
|
471
|
-
failedState?.clearAfterDestroy();
|
|
472
|
-
this.states.delete(actorId);
|
|
473
|
-
this.actorMeshNames.delete(actorId);
|
|
466
|
+
await this.finalizeActorState(actorId, failedState);
|
|
474
467
|
throw error;
|
|
475
468
|
}
|
|
476
469
|
}
|
|
@@ -500,29 +493,61 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
500
493
|
const state = this.states.get(actorId);
|
|
501
494
|
const node = this.options.nativeActorNodeProvider?.() ?? this.options.nativeActorNode;
|
|
502
495
|
const nativeActorRef = exactNativeActorRef ?? state?.nativeActorRef;
|
|
503
|
-
|
|
504
|
-
|
|
496
|
+
const failures: unknown[] = [];
|
|
497
|
+
try {
|
|
498
|
+
if (nativeActorRef !== undefined) {
|
|
499
|
+
node?.discardRelocatedActor?.(nativeActorRef);
|
|
500
|
+
}
|
|
501
|
+
} catch (error) {
|
|
502
|
+
failures.push(error);
|
|
505
503
|
}
|
|
506
|
-
|
|
507
|
-
await
|
|
504
|
+
try {
|
|
505
|
+
await this.completeCoreRelocationSource(actorId);
|
|
506
|
+
} catch (error) {
|
|
507
|
+
failures.push(error);
|
|
508
|
+
}
|
|
509
|
+
if (failures.length > 0) {
|
|
510
|
+
throw failures.length === 1
|
|
511
|
+
? failures[0]
|
|
512
|
+
: new AggregateError(failures, 'Actor relocation cleanup failed.');
|
|
508
513
|
}
|
|
509
|
-
state?.clearAfterDestroy();
|
|
510
|
-
this.states.delete(actorId);
|
|
511
|
-
this.actorMeshNames.delete(actorId);
|
|
512
|
-
this.relocationStaged.delete(actorId);
|
|
513
514
|
}
|
|
514
515
|
|
|
515
516
|
async completeCoreRelocationSource(actorId: string): Promise<void> {
|
|
516
517
|
const state = this.states.get(actorId);
|
|
517
|
-
|
|
518
|
-
|
|
518
|
+
await this.finalizeActorState(actorId, state);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
private async finalizeActorState(
|
|
522
|
+
actorId: string,
|
|
523
|
+
state: ZLinkActorRuntimeState | undefined
|
|
524
|
+
): Promise<void> {
|
|
525
|
+
if (state === undefined || this.states.get(actorId) !== state) return;
|
|
526
|
+
try {
|
|
527
|
+
if (state.actor !== undefined)
|
|
528
|
+
await disposeLifecycleHandlers(state.actor, this.detachedTaskRunner);
|
|
529
|
+
} finally {
|
|
530
|
+
state.clearAfterDestroy();
|
|
531
|
+
if (this.states.get(actorId) === state) {
|
|
532
|
+
this.states.delete(actorId);
|
|
533
|
+
this.actorMeshNames.delete(actorId);
|
|
534
|
+
this.relocationStaged.delete(actorId);
|
|
535
|
+
}
|
|
519
536
|
}
|
|
520
|
-
state?.clearAfterDestroy();
|
|
521
|
-
this.states.delete(actorId);
|
|
522
|
-
this.actorMeshNames.delete(actorId);
|
|
523
|
-
this.relocationStaged.delete(actorId);
|
|
524
537
|
}
|
|
525
538
|
|
|
539
|
+
private async finalizeDestroyedActor(
|
|
540
|
+
actorId: string,
|
|
541
|
+
state: ZLinkActorRuntimeState
|
|
542
|
+
): Promise<void> {
|
|
543
|
+
if (this.states.get(actorId) !== state) return;
|
|
544
|
+
try {
|
|
545
|
+
this.options.actorDestroyedCleanup?.(actorId);
|
|
546
|
+
} finally {
|
|
547
|
+
await this.finalizeActorState(actorId, state);
|
|
548
|
+
this.options.metrics?.change(METRIC_NAMES.ActorCount, -1);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
526
551
|
async getOrCreateActor(
|
|
527
552
|
actorId: string,
|
|
528
553
|
actorType: string,
|
|
@@ -572,7 +597,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
572
597
|
createRequest,
|
|
573
598
|
signal,
|
|
574
599
|
false,
|
|
575
|
-
|
|
600
|
+
DEFAULT_REQUEST_TIMEOUT_MS,
|
|
576
601
|
nativeActorRef
|
|
577
602
|
);
|
|
578
603
|
}
|
|
@@ -637,14 +662,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
637
662
|
destroyedActorRef
|
|
638
663
|
);
|
|
639
664
|
}
|
|
640
|
-
this.
|
|
641
|
-
await disposeLifecycleHandlers(actor);
|
|
642
|
-
state.clearAfterDestroy();
|
|
643
|
-
if (this.states.get(actor.context.actorId) === state) {
|
|
644
|
-
this.states.delete(actor.context.actorId);
|
|
645
|
-
this.actorMeshNames.delete(actor.context.actorId);
|
|
646
|
-
}
|
|
647
|
-
this.options.metrics?.change('zlink.actor.count', -1);
|
|
665
|
+
await this.finalizeDestroyedActor(actor.context.actorId, state);
|
|
648
666
|
});
|
|
649
667
|
|
|
650
668
|
try {
|
|
@@ -662,7 +680,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
662
680
|
request: unknown,
|
|
663
681
|
signal?: AbortSignal,
|
|
664
682
|
claimLocation = true,
|
|
665
|
-
timeoutMs =
|
|
683
|
+
timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS,
|
|
666
684
|
nativeActorRef?: ZLinkBackendActorRef
|
|
667
685
|
): Promise<ZLinkActorLocalCreateResult> {
|
|
668
686
|
const deadline = performance.now() + timeoutMs;
|
|
@@ -687,9 +705,25 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
687
705
|
if (request !== undefined && createRequest.nativeRequest !== undefined) {
|
|
688
706
|
state.setCreateRequestPayload(createRequest.nativeRequest.data());
|
|
689
707
|
}
|
|
690
|
-
const operation = state.getOrStartCreation(actorType, failIfExists, () =>
|
|
691
|
-
this.
|
|
692
|
-
|
|
708
|
+
const operation = state.getOrStartCreation(actorType, failIfExists, async () => {
|
|
709
|
+
const meshName = state.meshName ?? this.options.actorMeshNameProvider?.(actorType);
|
|
710
|
+
const release =
|
|
711
|
+
meshName === undefined
|
|
712
|
+
? undefined
|
|
713
|
+
: await this.options.activationAdmission?.acquire(meshName, signal);
|
|
714
|
+
try {
|
|
715
|
+
return await this.creation.createActor(
|
|
716
|
+
actorId,
|
|
717
|
+
actorType,
|
|
718
|
+
state,
|
|
719
|
+
createRequest,
|
|
720
|
+
claimLocation,
|
|
721
|
+
signal
|
|
722
|
+
);
|
|
723
|
+
} finally {
|
|
724
|
+
release?.();
|
|
725
|
+
}
|
|
726
|
+
});
|
|
693
727
|
if (operation.created) {
|
|
694
728
|
void operation.task.then(
|
|
695
729
|
(result) => {
|
|
@@ -753,7 +787,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
753
787
|
if (this.states.get(actorId) === state) {
|
|
754
788
|
this.states.delete(actorId);
|
|
755
789
|
this.actorMeshNames.delete(actorId);
|
|
756
|
-
this.options.metrics?.change(
|
|
790
|
+
this.options.metrics?.change(METRIC_NAMES.ActorCount, -1);
|
|
757
791
|
}
|
|
758
792
|
}
|
|
759
793
|
|
|
@@ -784,7 +818,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
784
818
|
state.rememberMeshName(remembered);
|
|
785
819
|
}
|
|
786
820
|
this.states.set(actorId, state);
|
|
787
|
-
this.options.metrics?.change(
|
|
821
|
+
this.options.metrics?.change(METRIC_NAMES.ActorCount, 1);
|
|
788
822
|
return state;
|
|
789
823
|
}
|
|
790
824
|
|
|
@@ -797,7 +831,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
797
831
|
actorId: state.actorId,
|
|
798
832
|
objectGeneration: 1n,
|
|
799
833
|
meshName: state.meshName ?? '',
|
|
800
|
-
nodeRid: this.options.actorCreatedNodeRidProvider?.() ??
|
|
834
|
+
nodeRid: this.options.actorCreatedNodeRidProvider?.() ?? LOCAL_DIAGNOSTIC_NODE_RID
|
|
801
835
|
};
|
|
802
836
|
}
|
|
803
837
|
}
|
|
@@ -817,7 +851,7 @@ class ZLinkActorCreateCallRuntime implements ZLinkActorCreateCall {
|
|
|
817
851
|
private meshNameValue: string | undefined;
|
|
818
852
|
private requestValue: unknown;
|
|
819
853
|
private requestConfigured = false;
|
|
820
|
-
private timeoutMsValue =
|
|
854
|
+
private timeoutMsValue: number = DEFAULT_REQUEST_TIMEOUT_MS;
|
|
821
855
|
private timeoutConfigured = false;
|
|
822
856
|
private submitted = false;
|
|
823
857
|
private readonly turn: ZLinkSpotSerialTurn | undefined = captureZLinkSpotSerialTurn();
|
|
@@ -942,7 +976,7 @@ async function waitForCreationRetry(signal?: AbortSignal): Promise<void> {
|
|
|
942
976
|
if (error === undefined) resolve();
|
|
943
977
|
else reject(error);
|
|
944
978
|
};
|
|
945
|
-
const timer = setTimeout(() => finish(),
|
|
979
|
+
const timer = setTimeout(() => finish(), ACTOR_CREATION_RETRY_INTERVAL_MS);
|
|
946
980
|
const onAbort = () => {
|
|
947
981
|
finish(signal?.reason ?? new Error('Actor creation was aborted.'));
|
|
948
982
|
};
|
|
@@ -1,28 +1,31 @@
|
|
|
1
|
+
import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
|
|
1
2
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
ZLinkSpotActorSendHandler
|
|
3
|
+
type Type,
|
|
4
|
+
type ZLinkActor,
|
|
5
|
+
type ZLinkActorHandlerRegistry,
|
|
6
|
+
type ZLinkMessageContext,
|
|
7
|
+
type ZLinkMessageSerializer,
|
|
8
|
+
type ZLinkSpot,
|
|
9
|
+
type ZLinkSpotActorJoinResult,
|
|
10
|
+
type ZLinkSpotActorRequestHandler,
|
|
11
|
+
type ZLinkSpotActorSendHandler,
|
|
12
|
+
ZLinkFrameworkException,
|
|
13
|
+
ZLinkMessageMetadataEmpty
|
|
14
14
|
} from '../../contracts';
|
|
15
|
-
|
|
16
|
-
import { ZLinkFrameworkException, ZLinkMessageMetadataEmpty } from '../../contracts';
|
|
15
|
+
|
|
17
16
|
import type { Message } from '../../contracts/Common/Message';
|
|
18
|
-
import {
|
|
17
|
+
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
19
18
|
import { readZLinkDecoratorMetadata } from '../../contracts/Handlers/Attributes';
|
|
19
|
+
import { ZLinkConfigurationException } from '../configuration';
|
|
20
|
+
import type { ZLinkSerialWorkOptions } from '../execution/serial-execution-queue';
|
|
21
|
+
import {
|
|
22
|
+
ZLinkFrameworkInternalErrorKind,
|
|
23
|
+
createInternalFrameworkException
|
|
24
|
+
} from '../framework-errors-internal';
|
|
25
|
+
import { runWithLifecycleHandler } from '../handlers/handler-instance-scope';
|
|
20
26
|
import { wrapFrameworkPayloadMessage } from '../messaging/payload-codec';
|
|
21
|
-
import type { ZLinkMessageSerializer } from '../../contracts';
|
|
22
|
-
import { actorJoinIdentity } from './actor-lifecycle-snapshot';
|
|
23
27
|
import { runActorHandlerWithDeferredJoins } from './actor-join-deferred-scope';
|
|
24
|
-
import {
|
|
25
|
-
import type { ZLinkSerialWorkOptions } from '../execution/serial-execution-queue';
|
|
28
|
+
import { actorJoinIdentity } from './actor-lifecycle-snapshot';
|
|
26
29
|
|
|
27
30
|
export enum ZLinkActorPacketKind {
|
|
28
31
|
Send = 'send',
|
|
@@ -34,6 +37,7 @@ export interface ZLinkActorPacketDescriptor {
|
|
|
34
37
|
readonly packetName: string;
|
|
35
38
|
readonly actorType: Type<ZLinkActor>;
|
|
36
39
|
readonly handlerType: Type;
|
|
40
|
+
readonly methodName?: string;
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
export class ZLinkSpotActorHandlerRegistryRuntime implements ZLinkActorHandlerRegistry {
|
|
@@ -56,7 +60,8 @@ export class ZLinkSpotActorHandlerRegistryRuntime implements ZLinkActorHandlerRe
|
|
|
56
60
|
: ZLinkActorPacketKind.Request,
|
|
57
61
|
packetName: resolvedPacketName,
|
|
58
62
|
actorType: Object as unknown as Type<ZLinkActor>,
|
|
59
|
-
handlerType
|
|
63
|
+
handlerType,
|
|
64
|
+
methodName: metadata.methodName
|
|
60
65
|
});
|
|
61
66
|
}
|
|
62
67
|
|
|
@@ -67,7 +72,16 @@ export class ZLinkSpotActorHandlerRegistryRuntime implements ZLinkActorHandlerRe
|
|
|
67
72
|
`Actor packet '${descriptor.packetName}' for '${descriptor.actorType.name}' is already registered.`
|
|
68
73
|
);
|
|
69
74
|
}
|
|
70
|
-
|
|
75
|
+
const metadata = readZLinkDecoratorMetadata(descriptor.handlerType).find(
|
|
76
|
+
(entry) =>
|
|
77
|
+
entry.kind ===
|
|
78
|
+
(descriptor.kind === ZLinkActorPacketKind.Send ? 'spotActorSend' : 'spotActorRequest') &&
|
|
79
|
+
entry.packetName === descriptor.packetName
|
|
80
|
+
);
|
|
81
|
+
this.packets.set(key, {
|
|
82
|
+
...descriptor,
|
|
83
|
+
methodName: descriptor.methodName ?? metadata?.methodName
|
|
84
|
+
});
|
|
71
85
|
return this;
|
|
72
86
|
}
|
|
73
87
|
|
|
@@ -144,9 +158,10 @@ export class ZLinkSpotActorDispatcher {
|
|
|
144
158
|
await this.invokeHandler<ZLinkSpotActorSendHandler<ZLinkSpot, ZLinkActor, TMessage>, void>(
|
|
145
159
|
actor,
|
|
146
160
|
descriptor,
|
|
147
|
-
(handler) =>
|
|
161
|
+
(handler, method) =>
|
|
148
162
|
runActorHandlerWithDeferredJoins(() =>
|
|
149
|
-
|
|
163
|
+
method.call(
|
|
164
|
+
handler,
|
|
150
165
|
this.options.spot,
|
|
151
166
|
actor,
|
|
152
167
|
this.createContext(packetName, context),
|
|
@@ -232,10 +247,11 @@ export class ZLinkSpotActorDispatcher {
|
|
|
232
247
|
return await this.invokeHandler<
|
|
233
248
|
ZLinkSpotActorRequestHandler<ZLinkSpot, ZLinkActor, TRequest, TReply>,
|
|
234
249
|
TResult
|
|
235
|
-
>(actor, descriptor, (handler) =>
|
|
250
|
+
>(actor, descriptor, (handler, method) =>
|
|
236
251
|
runActorHandlerWithDeferredJoins(
|
|
237
252
|
() =>
|
|
238
|
-
|
|
253
|
+
method.call(
|
|
254
|
+
handler,
|
|
239
255
|
this.options.spot,
|
|
240
256
|
actor,
|
|
241
257
|
this.createContext(packetName, context),
|
|
@@ -274,7 +290,7 @@ export class ZLinkSpotActorDispatcher {
|
|
|
274
290
|
evaluateActorJoin(
|
|
275
291
|
actor: ZLinkActor,
|
|
276
292
|
request: Message,
|
|
277
|
-
contentType =
|
|
293
|
+
contentType: string = ZlinkStreamContentType.Json
|
|
278
294
|
): Promise<ZLinkSpotActorJoinResult> {
|
|
279
295
|
return this.execute(async () => {
|
|
280
296
|
const payload = wrapFrameworkPayloadMessage(
|
|
@@ -337,14 +353,29 @@ export class ZLinkSpotActorDispatcher {
|
|
|
337
353
|
|
|
338
354
|
private async invokeHandler<THandler, TResult>(
|
|
339
355
|
actor: ZLinkActor,
|
|
340
|
-
descriptor: Pick<ZLinkActorPacketDescriptor, 'handlerType'>,
|
|
341
|
-
callback: (
|
|
356
|
+
descriptor: Pick<ZLinkActorPacketDescriptor, 'handlerType' | 'methodName'>,
|
|
357
|
+
callback: (
|
|
358
|
+
handler: THandler,
|
|
359
|
+
method: THandler extends { handle: infer TMethod } ? TMethod : never
|
|
360
|
+
) => Promise<TResult>
|
|
342
361
|
): Promise<TResult> {
|
|
343
362
|
return await runWithLifecycleHandler(
|
|
344
363
|
actor,
|
|
345
364
|
descriptor.handlerType,
|
|
346
365
|
this.options.providerResolver,
|
|
347
|
-
(resolved) =>
|
|
366
|
+
(resolved) => {
|
|
367
|
+
const methodName = descriptor.methodName ?? 'handle';
|
|
368
|
+
const method = (resolved as Record<string, unknown>)[methodName];
|
|
369
|
+
if (typeof method !== 'function') {
|
|
370
|
+
throw new ZLinkConfigurationException(
|
|
371
|
+
`Actor handler '${descriptor.handlerType.name}.${methodName}' is not callable.`
|
|
372
|
+
);
|
|
373
|
+
}
|
|
374
|
+
return callback(
|
|
375
|
+
resolved as THandler,
|
|
376
|
+
method as THandler extends { handle: infer TMethod } ? TMethod : never
|
|
377
|
+
);
|
|
378
|
+
}
|
|
348
379
|
);
|
|
349
380
|
}
|
|
350
381
|
|