@zlink-systems/framework 0.21.0 → 0.22.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/Common/ZLinkMessage.js +5 -5
- package/dist/contracts/Configuration/CodecContentType.js +5 -7
- package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
- package/dist/contracts/Configuration/EndpointNotation.js +4 -8
- package/dist/contracts/Configuration/Registration.js +14 -11
- package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
- package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
- package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
- package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
- package/dist/contracts/Handlers/JsonContract.js +23 -11
- package/dist/contracts/Spots/SpotKind.js +16 -8
- package/dist/location-store-integration.js +16 -16
- package/dist/nest-integration.js +17 -11
- package/dist/runtime/abort.js +9 -5
- package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
- package/dist/runtime/actors/actor-authority-publication.js +18 -17
- package/dist/runtime/actors/actor-client.js +83 -63
- package/dist/runtime/actors/actor-context.js +24 -18
- package/dist/runtime/actors/actor-creation.js +4 -3
- package/dist/runtime/actors/actor-handoff.js +89 -92
- package/dist/runtime/actors/actor-local-native-join.js +18 -19
- package/dist/runtime/actors/actor-mailbox.js +1 -1
- package/dist/runtime/actors/actor-message-follow-context.js +24 -21
- package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
- package/dist/runtime/actors/actor-remote-joiner.js +20 -17
- package/dist/runtime/actors/actor-remote-wire.js +6 -7
- package/dist/runtime/actors/actor-runtime-state.js +87 -81
- package/dist/runtime/actors/actor-transfer-registry.js +3 -5
- package/dist/runtime/actors/bound-session-wire.js +14 -9
- package/dist/runtime/actors/deferred-join-accepted-journal.js +158 -124
- package/dist/runtime/actors/index.js +2 -5
- package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
- package/dist/runtime/actors/post-commit-actor-location.js +1 -1
- package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
- package/dist/runtime/admission.js +2 -6
- package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
- package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
- package/dist/runtime/backend/mesh-completion-table.js +1 -3
- package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
- package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
- package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
- package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +116 -113
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
- package/dist/runtime/backend/runtime-message.js +3 -3
- package/dist/runtime/backend/runtime-values.d.ts +2 -2
- package/dist/runtime/backend/runtime-values.js +4 -5
- package/dist/runtime/channels/channel-clients.js +27 -24
- package/dist/runtime/channels/channel-dispatch-pipeline.js +10 -18
- package/dist/runtime/channels/channel-dispatch-services.js +7 -4
- package/dist/runtime/channels/channel-dispatchers.js +9 -9
- package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
- package/dist/runtime/channels/channel-envelope.js +83 -47
- package/dist/runtime/channels/channel-outbound-operations.js +8 -8
- package/dist/runtime/channels/channel-receive-loops.js +20 -22
- package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
- package/dist/runtime/channels/channel-runtime-manager.js +18 -9
- package/dist/runtime/channels/channel-socket-registry.js +126 -123
- package/dist/runtime/channels/channel-transports.js +43 -33
- package/dist/runtime/channels/client-server-location-runtime.js +32 -40
- package/dist/runtime/channels/client-server-service-wire.js +29 -22
- package/dist/runtime/channels/dispatch-error-reporter.js +9 -7
- package/dist/runtime/channels/fanout-location-runtime.js +34 -47
- package/dist/runtime/channels/fanout-service-wire.js +3 -5
- package/dist/runtime/channels/local-spot-route-transport.js +7 -1
- package/dist/runtime/channels/route-member-snapshot.js +3 -3
- package/dist/runtime/channels/source-spot-router.js +6 -2
- package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
- package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
- package/dist/runtime/diagnostics/index.js +38 -10
- package/dist/runtime/diagnostics/message-flow.js +47 -39
- package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
- package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
- package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
- package/dist/runtime/execution/index.js +7 -6
- package/dist/runtime/execution/serial-execution-queue.js +12 -18
- package/dist/runtime/execution/state-lane.js +2 -2
- package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -23
- package/dist/runtime/foundation/event-loop-resources.js +4 -4
- package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +136 -136
- package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
- package/dist/runtime/foundation/runtime-state-projections.js +22 -11
- package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
- package/dist/runtime/foundation/service-discovery-registry.js +35 -33
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
- package/dist/runtime/foundation/service-liveness-registry.js +16 -12
- package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
- package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
- package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
- package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
- package/dist/runtime/foundation/service-stateful-registry.js +24 -23
- package/dist/runtime/foundation/service-stateful-runtime.js +416 -438
- package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
- package/dist/runtime/foundation/service-topology-registry.js +96 -95
- package/dist/runtime/foundation/service-weighted-selection.js +6 -11
- package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
- package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
- package/dist/runtime/framework-errors-internal.js +7 -10
- package/dist/runtime/handlers/handler-instance-scope.js +4 -5
- package/dist/runtime/handlers/index.js +3 -1
- package/dist/runtime/host/actor-packet-relay.js +74 -70
- package/dist/runtime/host/actor-placement-coordinator.js +29 -31
- package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
- package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
- package/dist/runtime/host/actor-transfer-runtime.js +176 -153
- package/dist/runtime/host/application-job-queue.js +18 -22
- package/dist/runtime/host/bound-session-relay.js +3 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
- package/dist/runtime/host/host-capacity-status.js +8 -4
- package/dist/runtime/host/index.js +244 -227
- package/dist/runtime/host/instance-activation-authority.js +93 -96
- package/dist/runtime/host/location-runtime-owner.js +16 -14
- package/dist/runtime/host/mesh-router-resolver.js +11 -13
- package/dist/runtime/host/relocation-direct-transfer.js +10 -9
- package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
- package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
- package/dist/runtime/host/remote-bound-session-relay.js +97 -73
- package/dist/runtime/host/route-mesh-runtime.js +64 -69
- package/dist/runtime/host/runtime-shutdown.js +1 -2
- package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
- package/dist/runtime/host/spot-address-transport.js +69 -71
- package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
- package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
- package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
- package/dist/runtime/locations/actor-location-claims.js +26 -20
- package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
- package/dist/runtime/locations/authority-key-codec.js +7 -7
- package/dist/runtime/locations/auto-connect-loop.js +3 -3
- package/dist/runtime/locations/auto-connect-planner.js +25 -19
- package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
- package/dist/runtime/locations/in-memory-authority-store.js +128 -118
- package/dist/runtime/locations/in-memory-location-store.js +195 -168
- package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
- package/dist/runtime/locations/key-codec.js +1 -1
- package/dist/runtime/locations/lease-tracker.js +23 -21
- package/dist/runtime/locations/lifecycle.js +4 -5
- package/dist/runtime/locations/location-store-repository.js +368 -324
- package/dist/runtime/locations/opaque-record-key.js +2 -2
- package/dist/runtime/locations/resolvers.js +73 -82
- package/dist/runtime/locations/runtime.js +68 -63
- package/dist/runtime/locations/spot-location-claims.js +39 -35
- package/dist/runtime/messaging/framework-json-v1.js +7 -7
- package/dist/runtime/messaging/packet-name.js +7 -6
- package/dist/runtime/messaging/payload-codec.js +21 -18
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
- package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
- package/dist/runtime/routing-id.js +3 -5
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
- package/dist/runtime/spots/index.js +208 -219
- package/dist/runtime/spots/spot-activation-registry.js +15 -14
- package/dist/runtime/spots/spot-activation-state.js +17 -15
- package/dist/runtime/spots/spot-activation.js +33 -16
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
- package/dist/runtime/spots/spot-actor-membership.js +1 -3
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +23 -20
- package/dist/runtime/spots/spot-actor-packet-drain.js +12 -10
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
- package/dist/runtime/spots/spot-closing.js +3 -7
- package/dist/runtime/spots/spot-context.js +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +13 -14
- package/dist/runtime/spots/spot-handle.js +6 -3
- package/dist/runtime/spots/spot-handler-registry.js +12 -12
- package/dist/runtime/spots/spot-manager-public.js +5 -6
- package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
- package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +74 -85
- package/dist/runtime/spots/spot-outbound.js +10 -14
- package/dist/runtime/spots/spot-remote-codec.js +22 -26
- package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
- package/dist/runtime/spots/spot-route-packet-dispatch.js +16 -14
- package/dist/runtime/spots/spot-route-replies.js +4 -6
- package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
- package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +1 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
- package/dist/runtime/spots/spot-serial-executor.js +5 -8
- package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
- package/dist/runtime/spots/spot-subscription-dispatch.js +5 -5
- package/dist/runtime/spots/spot-timer.js +25 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +98 -107
- package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +18 -16
- package/dist/runtime/streams/bound-session-service.js +8 -9
- package/dist/runtime/streams/index.js +20 -19
- package/dist/runtime/streams/managed-stream.js +32 -30
- package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
- package/dist/runtime/streams/protocol.js +29 -18
- package/dist/runtime/streams/session-actor-coordinator.js +34 -37
- package/dist/runtime/streams/session-context.js +30 -28
- package/dist/runtime/streams/session-provider.js +2 -2
- package/dist/runtime/streams/session-serial-executor.js +1 -2
- package/dist/runtime/streams/stream-frame-factory.js +11 -5
- package/dist/runtime/streams/stream-session-runtime.js +70 -66
- package/dist/runtime/workers/index.js +15 -4
- package/package.json +2 -2
- package/src/contracts/Channels/RouteCalls.ts +6 -1
- package/src/contracts/Common/ZLinkMessage.ts +5 -5
- package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
- package/src/contracts/Configuration/Builders.ts +14 -14
- package/src/contracts/Configuration/CodecContentType.ts +8 -10
- package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
- package/src/contracts/Configuration/EndpointNotation.ts +11 -11
- package/src/contracts/Configuration/ObjectRoles.ts +1 -3
- package/src/contracts/Configuration/Registration.ts +46 -17
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
- package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
- package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
- package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
- package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
- package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
- package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
- package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
- package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -6
- package/src/contracts/Errors/index.ts +1 -4
- package/src/contracts/Handlers/Attributes.ts +15 -9
- package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
- package/src/contracts/Handlers/JsonContract.ts +53 -19
- package/src/contracts/Locations/ActorTransfer.ts +1 -5
- package/src/contracts/Locations/Authority.ts +4 -11
- package/src/contracts/Locations/Keys.ts +6 -1
- package/src/contracts/Locations/Options.ts +3 -2
- package/src/contracts/Locations/RelocationStore.ts +1 -4
- package/src/contracts/Locations/Resolvers.ts +5 -5
- package/src/contracts/Locations/RuntimeQuery.ts +6 -2
- package/src/contracts/Locations/Stores.ts +1 -2
- package/src/contracts/Locations/index.ts +2 -8
- package/src/contracts/RouteMesh/Contracts.ts +1 -7
- package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
- package/src/contracts/Spots/Contracts.ts +2 -8
- package/src/contracts/Spots/SpotKind.ts +16 -8
- package/src/contracts/Spots/ZLinkSpot.ts +8 -11
- package/src/contracts/Streams/IZLinkSession.ts +0 -1
- package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
- package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
- package/src/internal.ts +5 -4
- package/src/location-store-integration.ts +24 -16
- package/src/nest-integration.ts +40 -25
- package/src/runtime/abort.ts +10 -4
- package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
- package/src/runtime/actors/actor-authority-publication.ts +92 -77
- package/src/runtime/actors/actor-client.ts +162 -133
- package/src/runtime/actors/actor-context.ts +138 -130
- package/src/runtime/actors/actor-creation.ts +47 -44
- package/src/runtime/actors/actor-execution-context.ts +6 -4
- package/src/runtime/actors/actor-handoff.ts +269 -293
- package/src/runtime/actors/actor-join-deferred-scope.ts +5 -4
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
- package/src/runtime/actors/actor-local-native-join.ts +131 -159
- package/src/runtime/actors/actor-mailbox.ts +16 -19
- package/src/runtime/actors/actor-message-follow-context.ts +46 -36
- package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
- package/src/runtime/actors/actor-remote-joiner.ts +50 -54
- package/src/runtime/actors/actor-remote-wire.ts +9 -13
- package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
- package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
- package/src/runtime/actors/actor-runtime-state.ts +127 -124
- package/src/runtime/actors/actor-transfer-registry.ts +9 -14
- package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
- package/src/runtime/actors/bound-session-wire.ts +37 -17
- package/src/runtime/actors/deferred-join-accepted-journal.ts +351 -320
- package/src/runtime/actors/index.ts +43 -86
- package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
- package/src/runtime/actors/post-commit-actor-location.ts +30 -23
- package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
- package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
- package/src/runtime/admission.ts +9 -9
- package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
- package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
- package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
- package/src/runtime/backend/contracts/index.ts +73 -52
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
- package/src/runtime/backend/mesh-completion-table.ts +6 -9
- package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
- package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
- package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
- package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
- package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +335 -383
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
- package/src/runtime/backend/runtime-message.ts +5 -3
- package/src/runtime/backend/runtime-values.ts +10 -7
- package/src/runtime/channels/channel-autoconnect.ts +1 -4
- package/src/runtime/channels/channel-clients.ts +93 -73
- package/src/runtime/channels/channel-dispatch-pipeline.ts +40 -42
- package/src/runtime/channels/channel-dispatch-services.ts +51 -49
- package/src/runtime/channels/channel-dispatchers.ts +152 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
- package/src/runtime/channels/channel-envelope.ts +256 -150
- package/src/runtime/channels/channel-multipart.ts +13 -5
- package/src/runtime/channels/channel-outbound-operations.ts +37 -41
- package/src/runtime/channels/channel-receive-loops.ts +102 -98
- package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
- package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
- package/src/runtime/channels/channel-runtime-manager.ts +63 -37
- package/src/runtime/channels/channel-socket-options.ts +3 -10
- package/src/runtime/channels/channel-socket-registry.ts +331 -273
- package/src/runtime/channels/channel-transports.ts +215 -197
- package/src/runtime/channels/client-server-location-runtime.ts +116 -100
- package/src/runtime/channels/client-server-service-wire.ts +37 -36
- package/src/runtime/channels/dispatch-error-reporter.ts +11 -8
- package/src/runtime/channels/fanout-location-runtime.ts +91 -94
- package/src/runtime/channels/fanout-service-wire.ts +5 -12
- package/src/runtime/channels/handler-filter-scope.ts +1 -4
- package/src/runtime/channels/index.ts +1 -4
- package/src/runtime/channels/local-spot-route-transport.ts +20 -5
- package/src/runtime/channels/route-member-snapshot.ts +11 -5
- package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
- package/src/runtime/channels/source-spot-router.ts +26 -22
- package/src/runtime/channels/spot-direct-envelope.ts +10 -8
- package/src/runtime/channels/spot-node-route-transport.ts +13 -16
- package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
- package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
- package/src/runtime/codecs/index.ts +3 -2
- package/src/runtime/diagnostics/flow-context.ts +12 -3
- package/src/runtime/diagnostics/index.ts +96 -61
- package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
- package/src/runtime/diagnostics/message-flow.ts +95 -76
- package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
- package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
- package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
- package/src/runtime/execution/index.ts +18 -26
- package/src/runtime/execution/serial-execution-queue.ts +31 -40
- package/src/runtime/execution/state-lane.ts +2 -2
- package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -51
- package/src/runtime/foundation/event-loop-resources.ts +8 -4
- package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
- package/src/runtime/foundation/operation-identity.ts +1 -2
- package/src/runtime/foundation/operation-registry.ts +8 -2
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +312 -385
- package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
- package/src/runtime/foundation/runtime-state-projections.ts +24 -23
- package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
- package/src/runtime/foundation/service-discovery-registry.ts +67 -59
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
- package/src/runtime/foundation/service-liveness-registry.ts +18 -13
- package/src/runtime/foundation/service-mailbox.ts +14 -14
- package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
- package/src/runtime/foundation/service-metadata-codec.ts +2 -9
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
- package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
- package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
- package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
- package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +1 -4
- package/src/runtime/foundation/service-stateful-registry.ts +69 -59
- package/src/runtime/foundation/service-stateful-runtime.ts +1174 -1112
- package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
- package/src/runtime/foundation/service-topology-registry.ts +157 -159
- package/src/runtime/foundation/service-weighted-selection.ts +9 -15
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
- package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
- package/src/runtime/framework-errors-internal.ts +31 -30
- package/src/runtime/handlers/handler-instance-scope.ts +18 -29
- package/src/runtime/handlers/index.ts +18 -8
- package/src/runtime/host/actor-packet-relay.ts +290 -261
- package/src/runtime/host/actor-placement-coordinator.ts +165 -150
- package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
- package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
- package/src/runtime/host/actor-transfer-runtime.ts +391 -395
- package/src/runtime/host/application-job-queue.ts +32 -48
- package/src/runtime/host/bound-session-relay.ts +7 -9
- package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
- package/src/runtime/host/host-capacity-status.ts +10 -9
- package/src/runtime/host/index.ts +861 -789
- package/src/runtime/host/instance-activation-authority.ts +125 -143
- package/src/runtime/host/location-runtime-owner.ts +38 -26
- package/src/runtime/host/mesh-router-resolver.ts +30 -23
- package/src/runtime/host/relocation-direct-transfer.ts +15 -15
- package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
- package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
- package/src/runtime/host/remote-bound-session-relay.ts +274 -247
- package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
- package/src/runtime/host/route-mesh-runtime.ts +227 -181
- package/src/runtime/host/runtime-shutdown.ts +4 -3
- package/src/runtime/host/service-relocation-control.ts +14 -5
- package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
- package/src/runtime/host/spot-address-transport.ts +284 -237
- package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
- package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
- package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
- package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
- package/src/runtime/locations/actor-location-claims.ts +61 -49
- package/src/runtime/locations/actor-session-route-claims.ts +1 -4
- package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
- package/src/runtime/locations/authority-key-codec.ts +13 -10
- package/src/runtime/locations/auto-connect-loop.ts +14 -11
- package/src/runtime/locations/auto-connect-planner.ts +42 -31
- package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
- package/src/runtime/locations/canonical-codec.ts +3 -1
- package/src/runtime/locations/creation-operation-id.ts +4 -3
- package/src/runtime/locations/domain-store-contract.ts +13 -7
- package/src/runtime/locations/in-memory-authority-store.ts +232 -199
- package/src/runtime/locations/in-memory-location-store.ts +432 -250
- package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
- package/src/runtime/locations/internal-store-contracts.ts +95 -38
- package/src/runtime/locations/key-codec.ts +3 -4
- package/src/runtime/locations/lease-tracker.ts +36 -27
- package/src/runtime/locations/lifecycle-runtime.ts +15 -3
- package/src/runtime/locations/lifecycle.ts +33 -28
- package/src/runtime/locations/location-store-repository.ts +1329 -1185
- package/src/runtime/locations/opaque-record-key.ts +4 -9
- package/src/runtime/locations/resolvers.ts +201 -178
- package/src/runtime/locations/runtime.ts +251 -159
- package/src/runtime/locations/spot-location-claims.ts +110 -112
- package/src/runtime/messaging/creation-payload-codec.ts +4 -1
- package/src/runtime/messaging/framework-json-v1.ts +34 -15
- package/src/runtime/messaging/packet-name.ts +8 -6
- package/src/runtime/messaging/payload-codec.ts +70 -50
- package/src/runtime/messaging/submission-result.ts +6 -9
- package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
- package/src/runtime/routing-id.ts +10 -7
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
- package/src/runtime/spots/index.ts +593 -563
- package/src/runtime/spots/spot-activation-registry.ts +38 -34
- package/src/runtime/spots/spot-activation-state.ts +43 -51
- package/src/runtime/spots/spot-activation.ts +179 -116
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
- package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
- package/src/runtime/spots/spot-actor-membership.ts +25 -27
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +184 -153
- package/src/runtime/spots/spot-actor-packet-drain.ts +54 -42
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
- package/src/runtime/spots/spot-closing.ts +11 -12
- package/src/runtime/spots/spot-context.ts +46 -26
- package/src/runtime/spots/spot-entry-activation.ts +84 -65
- package/src/runtime/spots/spot-handle.ts +17 -15
- package/src/runtime/spots/spot-handler-registry.ts +44 -31
- package/src/runtime/spots/spot-location-claim.ts +5 -4
- package/src/runtime/spots/spot-manager-public.ts +62 -82
- package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
- package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
- package/src/runtime/spots/spot-node-runtime-manager.ts +230 -221
- package/src/runtime/spots/spot-outbound.ts +47 -59
- package/src/runtime/spots/spot-publisher-transport.ts +5 -4
- package/src/runtime/spots/spot-remote-codec.ts +66 -65
- package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
- package/src/runtime/spots/spot-route-packet-dispatch.ts +128 -95
- package/src/runtime/spots/spot-route-replies.ts +23 -24
- package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
- package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
- package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +11 -17
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
- package/src/runtime/spots/spot-routing-internal.ts +1 -4
- package/src/runtime/spots/spot-runtime-ports.ts +5 -5
- package/src/runtime/spots/spot-serial-executor.ts +5 -9
- package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
- package/src/runtime/spots/spot-subscription-dispatch.ts +56 -46
- package/src/runtime/spots/spot-timer.ts +98 -91
- package/src/runtime/streams/actor-session-binding-registry.ts +277 -235
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +7 -4
- package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
- package/src/runtime/streams/bound-actor-relay-sender.ts +53 -51
- package/src/runtime/streams/bound-session-response-target.ts +29 -8
- package/src/runtime/streams/bound-session-service.ts +39 -39
- package/src/runtime/streams/index.ts +176 -100
- package/src/runtime/streams/managed-stream.ts +98 -87
- package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
- package/src/runtime/streams/protocol.ts +73 -43
- package/src/runtime/streams/session-actor-coordinator.ts +97 -89
- package/src/runtime/streams/session-calls.ts +2 -8
- package/src/runtime/streams/session-context.ts +66 -48
- package/src/runtime/streams/session-provider.ts +5 -7
- package/src/runtime/streams/session-serial-executor.ts +7 -6
- package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
- package/src/runtime/streams/stream-frame-factory.ts +55 -38
- package/src/runtime/streams/stream-session-runtime.ts +268 -210
- package/src/runtime/workers/index.ts +68 -29
|
@@ -20,13 +20,10 @@ function hasRemoteActorJoinIdentity(value) {
|
|
|
20
20
|
typeof value.actorType === 'string');
|
|
21
21
|
}
|
|
22
22
|
function isRemoteActorJoinPayload(value) {
|
|
23
|
-
return
|
|
24
|
-
typeof value.request === 'string');
|
|
23
|
+
return hasRemoteActorJoinIdentity(value) && typeof value.request === 'string';
|
|
25
24
|
}
|
|
26
25
|
function decodeRemoteActorJoinPayload(payload, request, received, raw, envelope) {
|
|
27
|
-
const phase = payload.phase === 'admission' || payload.phase === 'commit'
|
|
28
|
-
? payload.phase
|
|
29
|
-
: undefined;
|
|
26
|
+
const phase = payload.phase === 'admission' || payload.phase === 'commit' ? payload.phase : undefined;
|
|
30
27
|
const transferProtocol = phase !== undefined;
|
|
31
28
|
return {
|
|
32
29
|
envelope,
|
|
@@ -45,20 +42,19 @@ function decodeRemoteActorJoinPayload(payload, request, received, raw, envelope)
|
|
|
45
42
|
: undefined,
|
|
46
43
|
phase,
|
|
47
44
|
transferId: typeof payload.transferId === 'string' ? payload.transferId : undefined,
|
|
48
|
-
transferAdapterKey: typeof payload.transferAdapterKey === 'string'
|
|
49
|
-
? payload.transferAdapterKey
|
|
50
|
-
: undefined,
|
|
45
|
+
transferAdapterKey: typeof payload.transferAdapterKey === 'string' ? payload.transferAdapterKey : undefined,
|
|
51
46
|
transferState: typeof payload.transferState === 'string'
|
|
52
47
|
? runtime_message_1.ZLinkBufferMessage.from(Buffer.from(payload.transferState, 'base64'))
|
|
53
48
|
: undefined,
|
|
54
49
|
handoffBacklog: decodeHandoffBacklog(payload.handoffBacklog),
|
|
55
|
-
remoteBoundSessionTarget: decodeRemoteBoundSessionTarget(transferProtocol
|
|
50
|
+
remoteBoundSessionTarget: decodeRemoteBoundSessionTarget(transferProtocol
|
|
51
|
+
? payload.boundSessionRouterChannelId
|
|
52
|
+
: (payload.boundSessionRouterChannelId ?? payload.routerChannelId), transferProtocol
|
|
56
53
|
? payload.boundSessionTargetNodeRid
|
|
57
|
-
: payload.boundSessionTargetNodeRid ??
|
|
58
|
-
? payload.actorNodeRid
|
|
59
|
-
: String(received.routingId)), payload.boundSessionTargetNodeRidHex, transferProtocol
|
|
54
|
+
: (payload.boundSessionTargetNodeRid ??
|
|
55
|
+
(received.routingId === null ? payload.actorNodeRid : String(received.routingId))), payload.boundSessionTargetNodeRidHex, transferProtocol
|
|
60
56
|
? payload.boundSessionSpotId
|
|
61
|
-
: payload.boundSessionSpotId ?? payload.sourceSpotId, payload.boundSessionNodeRid, payload.boundSessionNodeRidHex, payload.boundSessionRid, payload.boundSessionRidHex, payload.boundSessionBindingGeneration, payload.boundSessionPreviousAuthorityOwnerGeneration, payload.boundSessionPreviousOwnerLeaseGeneration, payload.boundSessionRelocationSealId, payload.boundSessionServiceWireRelocation),
|
|
57
|
+
: (payload.boundSessionSpotId ?? payload.sourceSpotId), payload.boundSessionNodeRid, payload.boundSessionNodeRidHex, payload.boundSessionRid, payload.boundSessionRidHex, payload.boundSessionBindingGeneration, payload.boundSessionPreviousAuthorityOwnerGeneration, payload.boundSessionPreviousOwnerLeaseGeneration, payload.boundSessionRelocationSealId, payload.boundSessionServiceWireRelocation),
|
|
62
58
|
request,
|
|
63
59
|
requestContentType: typeof payload.requestContentType === 'string'
|
|
64
60
|
? payload.requestContentType
|
|
@@ -69,7 +65,8 @@ function decodeHandoffBacklog(value) {
|
|
|
69
65
|
if (!Array.isArray(value))
|
|
70
66
|
return [];
|
|
71
67
|
return value.map((entry, expectedIndex) => {
|
|
72
|
-
if (typeof entry !== 'object' ||
|
|
68
|
+
if (typeof entry !== 'object' ||
|
|
69
|
+
entry === null ||
|
|
73
70
|
entry.index !== expectedIndex ||
|
|
74
71
|
typeof entry.header !== 'string' ||
|
|
75
72
|
typeof entry.payload !== 'string' ||
|
|
@@ -79,12 +76,15 @@ function decodeHandoffBacklog(value) {
|
|
|
79
76
|
const packet = entry;
|
|
80
77
|
const messageFollowContext = (0, actors_1.decodeActorMessageFollowContext)(packet.messageFollowContext);
|
|
81
78
|
const source = packet.source;
|
|
82
|
-
if (messageFollowContext === undefined
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
79
|
+
if (messageFollowContext === undefined ||
|
|
80
|
+
(packet.returnResponse &&
|
|
81
|
+
(source === undefined ||
|
|
82
|
+
source.ownerId.length === 0 ||
|
|
83
|
+
BigInt(source.ownerLeaseGeneration) <= 0n ||
|
|
84
|
+
source.nodeRid.length === 0 ||
|
|
85
|
+
BigInt(source.nodeGeneration) <= 0n ||
|
|
86
|
+
source.replyRouteId !== messageFollowContext.replyRouteId)) ||
|
|
87
|
+
(!packet.returnResponse && source !== undefined)) {
|
|
88
88
|
throw new Error('Remote actor handoff request source fence is invalid.');
|
|
89
89
|
}
|
|
90
90
|
return { ...packet, messageFollowContext };
|
|
@@ -114,12 +114,8 @@ function decodeRemoteBoundSessionTarget(routerChannelId, targetNodeRid, targetNo
|
|
|
114
114
|
sessionNodeRid: typeof sessionNodeRid === 'string'
|
|
115
115
|
? (0, routing_id_1.decodeRoutingId)(sessionNodeRid, sessionNodeRidHex)
|
|
116
116
|
: undefined,
|
|
117
|
-
sessionRid: typeof sessionRid === 'string'
|
|
118
|
-
|
|
119
|
-
: undefined,
|
|
120
|
-
bindingGeneration: typeof bindingGeneration === 'string'
|
|
121
|
-
? BigInt(bindingGeneration)
|
|
122
|
-
: undefined,
|
|
117
|
+
sessionRid: typeof sessionRid === 'string' ? (0, routing_id_1.decodeRoutingId)(sessionRid, sessionRidHex) : undefined,
|
|
118
|
+
bindingGeneration: typeof bindingGeneration === 'string' ? BigInt(bindingGeneration) : undefined,
|
|
123
119
|
previousAuthorityOwnerGeneration: typeof previousAuthorityOwnerGeneration === 'string'
|
|
124
120
|
? BigInt(previousAuthorityOwnerGeneration)
|
|
125
121
|
: undefined,
|
|
@@ -41,10 +41,10 @@ function decodeRemoteBoundSessionSend(parts, codecs, flowEnabled = true) {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
function decodeActorRef(payload) {
|
|
44
|
-
if (typeof payload.actorId !== 'string'
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
if (typeof payload.actorId !== 'string' ||
|
|
45
|
+
typeof payload.actorNodeRid !== 'string' ||
|
|
46
|
+
typeof payload.actorGeneration !== 'string' ||
|
|
47
|
+
typeof payload.actorMeshName !== 'string') {
|
|
48
48
|
return undefined;
|
|
49
49
|
}
|
|
50
50
|
const actorRef = {
|
|
@@ -162,7 +162,5 @@ function decodeMultipartPayload(parts, codecs, flowEnabled = true) {
|
|
|
162
162
|
};
|
|
163
163
|
}
|
|
164
164
|
function metadataOf(value) {
|
|
165
|
-
return new Map(Object.entries(typeof value === 'object' && value !== null
|
|
166
|
-
? value
|
|
167
|
-
: {}));
|
|
165
|
+
return new Map(Object.entries(typeof value === 'object' && value !== null ? value : {}));
|
|
168
166
|
}
|
|
@@ -49,9 +49,7 @@ class ZLinkSpotRoutePacketDispatch {
|
|
|
49
49
|
}
|
|
50
50
|
const registrations = this.options.packetHandlers.get(envelope.packetName ?? '');
|
|
51
51
|
const replyable = (0, spot_route_replies_1.hasReplyToken)(received.replyToken);
|
|
52
|
-
const action = replyable
|
|
53
|
-
? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.ReplyError
|
|
54
|
-
: ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.Drop;
|
|
52
|
+
const action = replyable ? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.ReplyError : ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.Drop;
|
|
55
53
|
if (registrations === undefined || registrations.length === 0) {
|
|
56
54
|
this.options.dispatchErrors?.report({
|
|
57
55
|
surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotRoute,
|
|
@@ -107,8 +105,8 @@ class ZLinkSpotRoutePacketDispatch {
|
|
|
107
105
|
return true;
|
|
108
106
|
}
|
|
109
107
|
catch (error) {
|
|
110
|
-
const payloadDecodeFailed = error instanceof contracts_1.ZLinkFrameworkException
|
|
111
|
-
|
|
108
|
+
const payloadDecodeFailed = error instanceof contracts_1.ZLinkFrameworkException &&
|
|
109
|
+
(0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.PayloadDecodeFailed;
|
|
112
110
|
this.options.dispatchErrors?.report({
|
|
113
111
|
surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotRoute,
|
|
114
112
|
messageKind: replyable ? ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request : ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send,
|
|
@@ -136,7 +134,9 @@ class ZLinkSpotRoutePacketDispatch {
|
|
|
136
134
|
}
|
|
137
135
|
async dispatchSpotDirectEnvelope(received, envelope) {
|
|
138
136
|
const replyable = envelope.kind === 1 /* ZLinkChannelMessageKind.Request */ && (0, spot_route_replies_1.hasReplyToken)(received.replyToken);
|
|
139
|
-
const messageKind = replyable
|
|
137
|
+
const messageKind = replyable
|
|
138
|
+
? ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request
|
|
139
|
+
: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send;
|
|
140
140
|
const action = replyable ? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.ReplyError : ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.Drop;
|
|
141
141
|
const registrations = this.options.packetHandlers.get(envelope.packetName ?? '');
|
|
142
142
|
if (registrations === undefined || registrations.length === 0) {
|
|
@@ -149,7 +149,8 @@ class ZLinkSpotRoutePacketDispatch {
|
|
|
149
149
|
channelName: envelope.channelName
|
|
150
150
|
});
|
|
151
151
|
if (replyable) {
|
|
152
|
-
(0, spot_route_replies_1.submitRouteReply)(received
|
|
152
|
+
(0, spot_route_replies_1.submitRouteReply)(received
|
|
153
|
+
.reply()
|
|
153
154
|
.message(encodeSpotDirectReply(false, undefined, `SPOT route handler not found: ${envelope.packetName}`)));
|
|
154
155
|
}
|
|
155
156
|
return;
|
|
@@ -170,8 +171,7 @@ class ZLinkSpotRoutePacketDispatch {
|
|
|
170
171
|
}
|
|
171
172
|
}, (0, serial_work_size_1.zlinkSerialWorkOptions)(received.parts[0]?.size() ?? 0, (0, serial_work_size_1.zlinkMetadataByteLength)(envelope.metadata)));
|
|
172
173
|
if (replyable) {
|
|
173
|
-
(0, spot_route_replies_1.submitRouteReply)(received.reply()
|
|
174
|
-
.message(encodeSpotDirectReply(true, response)));
|
|
174
|
+
(0, spot_route_replies_1.submitRouteReply)(received.reply().message(encodeSpotDirectReply(true, response)));
|
|
175
175
|
}
|
|
176
176
|
}
|
|
177
177
|
catch (error) {
|
|
@@ -185,7 +185,8 @@ class ZLinkSpotRoutePacketDispatch {
|
|
|
185
185
|
error
|
|
186
186
|
});
|
|
187
187
|
if (replyable) {
|
|
188
|
-
(0, spot_route_replies_1.submitRouteReply)(received
|
|
188
|
+
(0, spot_route_replies_1.submitRouteReply)(received
|
|
189
|
+
.reply()
|
|
189
190
|
.message(encodeSpotDirectReply(false, undefined, error instanceof Error ? error.message : String(error))));
|
|
190
191
|
return;
|
|
191
192
|
}
|
|
@@ -206,14 +207,15 @@ function decodeSpotDirectEnvelope(parts) {
|
|
|
206
207
|
try {
|
|
207
208
|
const decoded = JSON.parse(parts[0].data().toString());
|
|
208
209
|
if (decoded.marker !== SPOT_DIRECT_ENVELOPE ||
|
|
209
|
-
(decoded.kind !== 1 /* ZLinkChannelMessageKind.Request */ &&
|
|
210
|
+
(decoded.kind !== 1 /* ZLinkChannelMessageKind.Request */ &&
|
|
211
|
+
decoded.kind !== 3 /* ZLinkChannelMessageKind.Command */) ||
|
|
210
212
|
typeof decoded.channelName !== 'string') {
|
|
211
213
|
return undefined;
|
|
212
214
|
}
|
|
213
215
|
const metadata = decoded.metadata ?? {};
|
|
214
|
-
if (typeof metadata !== 'object'
|
|
215
|
-
|
|
216
|
-
|
|
216
|
+
if (typeof metadata !== 'object' ||
|
|
217
|
+
Array.isArray(metadata) ||
|
|
218
|
+
!Object.values(metadata).every((value) => typeof value === 'string')) {
|
|
217
219
|
return undefined;
|
|
218
220
|
}
|
|
219
221
|
return {
|
|
@@ -24,8 +24,7 @@ function submitRouteReply(operation) {
|
|
|
24
24
|
}
|
|
25
25
|
function submitRoutePayloadReply(received, envelope, payload) {
|
|
26
26
|
if (envelope === undefined) {
|
|
27
|
-
return submitRouteReply(received.reply()
|
|
28
|
-
.message(Buffer.from(JSON.stringify(payload))));
|
|
27
|
+
return submitRouteReply(received.reply().message(Buffer.from(JSON.stringify(payload))));
|
|
29
28
|
}
|
|
30
29
|
return submitRouteReply(appendRouteReplyParts(received.reply(), (0, channel_envelope_1.encodeChannelReplyParts)(envelope.header, payload)));
|
|
31
30
|
}
|
|
@@ -34,8 +33,7 @@ function submitSpotRouteBridgeReply(received, envelope, payload) {
|
|
|
34
33
|
}
|
|
35
34
|
function submitRoutedActorJoinReply(received, decoded, payload) {
|
|
36
35
|
if (decoded.raw) {
|
|
37
|
-
return submitRouteReply(received.reply()
|
|
38
|
-
.message(Buffer.from(JSON.stringify(payload))));
|
|
36
|
+
return submitRouteReply(received.reply().message(Buffer.from(JSON.stringify(payload))));
|
|
39
37
|
}
|
|
40
38
|
return submitRouteReply(appendRouteReplyParts(received.reply(), (0, channel_envelope_1.encodeChannelReplyParts)(requireRoutedActorJoinEnvelope(decoded).header, payload)));
|
|
41
39
|
}
|
|
@@ -70,7 +68,7 @@ function requireRoutedActorJoinEnvelope(decoded) {
|
|
|
70
68
|
return decoded.envelope;
|
|
71
69
|
}
|
|
72
70
|
function isNativeBadAddress(error) {
|
|
73
|
-
return typeof error === 'object' &&
|
|
71
|
+
return (typeof error === 'object' &&
|
|
74
72
|
error !== null &&
|
|
75
|
-
Number(error.nativeErrno) === 14;
|
|
73
|
+
Number(error.nativeErrno) === 14);
|
|
76
74
|
}
|
|
@@ -45,7 +45,7 @@ class ZLinkSpotRoutedActorAdmission {
|
|
|
45
45
|
const existing = this.pending.get(decoded.transferId);
|
|
46
46
|
if (existing !== undefined) {
|
|
47
47
|
this.requireMatchingTransfer(existing, decoded);
|
|
48
|
-
const reply = existing.admissionReply ?? await existing.admissionTask;
|
|
48
|
+
const reply = existing.admissionReply ?? (await existing.admissionTask);
|
|
49
49
|
if (reply === undefined)
|
|
50
50
|
throw new Error(`Remote actor transfer '${decoded.transferId}' has no admission result.`);
|
|
51
51
|
(0, spot_route_replies_1.submitRoutedActorJoinReply)(received, decoded, reply);
|
|
@@ -75,7 +75,9 @@ class ZLinkSpotRoutedActorAdmission {
|
|
|
75
75
|
throw new Error('Remote actor transfer commit requires a transfer id.');
|
|
76
76
|
}
|
|
77
77
|
const pending = this.pending.get(transferId);
|
|
78
|
-
if (pending === undefined ||
|
|
78
|
+
if (pending === undefined ||
|
|
79
|
+
pending.actorId !== decoded.actorId ||
|
|
80
|
+
pending.actorType !== decoded.actorType) {
|
|
79
81
|
throw new Error(`Remote actor transfer '${transferId}' does not have a matching admission.`);
|
|
80
82
|
}
|
|
81
83
|
if (pending.phase === 'rejected') {
|
|
@@ -90,7 +92,7 @@ class ZLinkSpotRoutedActorAdmission {
|
|
|
90
92
|
clearTimeout(pending.deadline);
|
|
91
93
|
pending.commitTask = this.evaluateCommit(decoded, transferId, pending);
|
|
92
94
|
}
|
|
93
|
-
const commitReply = pending.commitReply ?? await pending.commitTask;
|
|
95
|
+
const commitReply = pending.commitReply ?? (await pending.commitTask);
|
|
94
96
|
(0, spot_route_replies_1.submitRoutedActorJoinReply)(received, decoded, commitReply);
|
|
95
97
|
}
|
|
96
98
|
catch (error) {
|
|
@@ -132,11 +134,12 @@ class ZLinkSpotRoutedActorAdmission {
|
|
|
132
134
|
}
|
|
133
135
|
async evaluateCommit(decoded, transferId, pending) {
|
|
134
136
|
try {
|
|
135
|
-
if (decoded.transferState === undefined ||
|
|
137
|
+
if (decoded.transferState === undefined ||
|
|
138
|
+
this.options.routedActorTransferProvider === undefined) {
|
|
136
139
|
throw new Error('Remote actor transfer commit cannot materialize the target actor.');
|
|
137
140
|
}
|
|
138
141
|
const { actor, actorRef } = await this.options.routedActorTransferProvider(decoded.actorId, decoded.actorType, decoded.transferAdapterKey, decoded.transferState, decoded.actorEntryNodeRid, decoded.remoteBoundSessionTarget);
|
|
139
|
-
const handoffResults = await this.options.commitTransferredActor?.(actor, decoded.handoffBacklog) ?? [];
|
|
142
|
+
const handoffResults = (await this.options.commitTransferredActor?.(actor, decoded.handoffBacklog)) ?? [];
|
|
140
143
|
const commitReply = {
|
|
141
144
|
accepted: true,
|
|
142
145
|
actorNodeRid: String(actorRef.nodeRid),
|
|
@@ -195,8 +198,7 @@ class ZLinkSpotRoutedActorAdmission {
|
|
|
195
198
|
}
|
|
196
199
|
try {
|
|
197
200
|
const payload = JSON.parse(parts[0].data().toString());
|
|
198
|
-
if (payload.packetName !== spot_remote_codec_1.REMOTE_ACTOR_JOIN_PACKET ||
|
|
199
|
-
!(0, spot_remote_codec_1.isRemoteActorJoinPayload)(payload)) {
|
|
201
|
+
if (payload.packetName !== spot_remote_codec_1.REMOTE_ACTOR_JOIN_PACKET || !(0, spot_remote_codec_1.isRemoteActorJoinPayload)(payload)) {
|
|
200
202
|
return undefined;
|
|
201
203
|
}
|
|
202
204
|
return (0, spot_remote_codec_1.decodeRemoteActorJoinPayload)(payload, runtime_message_1.ZLinkBufferMessage.from(Buffer.from(payload.request, 'base64')), received, true);
|
|
@@ -39,8 +39,7 @@ class ZLinkSpotRoutedBoundSessionDispatch {
|
|
|
39
39
|
if (!(0, spot_route_replies_1.hasReplyToken)(received.replyToken)) {
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
42
|
-
(0, spot_route_replies_1.submitRouteReply)(received.reply()
|
|
43
|
-
.message(Buffer.from(JSON.stringify({ ok: true }))));
|
|
42
|
+
(0, spot_route_replies_1.submitRouteReply)(received.reply().message(Buffer.from(JSON.stringify({ ok: true }))));
|
|
44
43
|
}
|
|
45
44
|
}
|
|
46
45
|
exports.ZLinkSpotRoutedBoundSessionDispatch = ZLinkSpotRoutedBoundSessionDispatch;
|
|
@@ -138,7 +138,8 @@ class ZLinkSpotRoutedFrameDispatch {
|
|
|
138
138
|
return;
|
|
139
139
|
}
|
|
140
140
|
const actorPacketRelay = (0, spot_remote_route_codec_1.decodeRemoteActorPacketRelay)(received.parts, this.channelCodecs(), this.options.dispatchErrors?.flow.flowCreationEnabled() ?? true);
|
|
141
|
-
if (actorPacketRelay !== undefined &&
|
|
141
|
+
if (actorPacketRelay !== undefined &&
|
|
142
|
+
(await this.actorPacketRelayDispatch.dispatch(received, actorPacketRelay))) {
|
|
142
143
|
return;
|
|
143
144
|
}
|
|
144
145
|
if (await this.routePacketDispatch.dispatch(received)) {
|
|
@@ -149,14 +150,13 @@ class ZLinkSpotRoutedFrameDispatch {
|
|
|
149
150
|
}
|
|
150
151
|
exports.ZLinkSpotRoutedFrameDispatch = ZLinkSpotRoutedFrameDispatch;
|
|
151
152
|
function isRouteRecvRetryable(error) {
|
|
152
|
-
return typeof error === 'object' &&
|
|
153
|
+
return (typeof error === 'object' &&
|
|
153
154
|
error !== null &&
|
|
154
|
-
[201, 202, 204].includes(Number(error.result));
|
|
155
|
+
[201, 202, 204].includes(Number(error.result)));
|
|
155
156
|
}
|
|
156
157
|
function closeReceivedQuietly(received) {
|
|
157
158
|
try {
|
|
158
159
|
received.close();
|
|
159
160
|
}
|
|
160
|
-
catch {
|
|
161
|
-
}
|
|
161
|
+
catch { }
|
|
162
162
|
}
|
|
@@ -19,10 +19,10 @@ class ZLinkRoutedSpotPacketDispatch {
|
|
|
19
19
|
await this.dispatch(spotId, packetName, decodePayload, context, false);
|
|
20
20
|
}
|
|
21
21
|
async request(spotId, packetName, request, context) {
|
|
22
|
-
return await this.dispatch(spotId, packetName, () => request, context, true);
|
|
22
|
+
return (await this.dispatch(spotId, packetName, () => request, context, true));
|
|
23
23
|
}
|
|
24
24
|
async requestEncoded(spotId, packetName, decodePayload, context) {
|
|
25
|
-
return await this.dispatch(spotId, packetName, decodePayload, context, true);
|
|
25
|
+
return (await this.dispatch(spotId, packetName, decodePayload, context, true));
|
|
26
26
|
}
|
|
27
27
|
async dispatch(spotId, packetName, decodePayload, context, returnResponse) {
|
|
28
28
|
const activation = this.options.resolveActivation(spotId);
|
|
@@ -33,7 +33,9 @@ class ZLinkRoutedSpotPacketDispatch {
|
|
|
33
33
|
}
|
|
34
34
|
throw new configuration_1.ZLinkConfigurationException(`Spot '${spotId}' is not active.`);
|
|
35
35
|
}
|
|
36
|
-
const registrations = activation.handlers
|
|
36
|
+
const registrations = activation.handlers
|
|
37
|
+
.snapshot()
|
|
38
|
+
.filter((registration) => registration.kind === 'packet' &&
|
|
37
39
|
(registration.packetName ?? registration.handlerType.name) === (packetName ?? ''));
|
|
38
40
|
if (registrations.length === 0) {
|
|
39
41
|
this.reportMissing(spotId, packetName, context, returnResponse);
|
|
@@ -120,14 +122,14 @@ class ZLinkRoutedSpotPacketDispatch {
|
|
|
120
122
|
return returnResponse ? response : undefined;
|
|
121
123
|
}
|
|
122
124
|
reportFailure(spotId, packetName, context, returnResponse, error) {
|
|
123
|
-
const frameworkErrorKind = error instanceof contracts_1.ZLinkFrameworkException
|
|
124
|
-
? (0, framework_errors_internal_1.internalFrameworkErrorKind)(error)
|
|
125
|
-
: undefined;
|
|
125
|
+
const frameworkErrorKind = error instanceof contracts_1.ZLinkFrameworkException ? (0, framework_errors_internal_1.internalFrameworkErrorKind)(error) : undefined;
|
|
126
126
|
this.options.dispatchErrors?.report({
|
|
127
127
|
surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotRoute,
|
|
128
|
-
messageKind: returnResponse
|
|
129
|
-
|
|
130
|
-
|
|
128
|
+
messageKind: returnResponse
|
|
129
|
+
? ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request
|
|
130
|
+
: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send,
|
|
131
|
+
reason: frameworkErrorKind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.WorkerQueueFull ||
|
|
132
|
+
frameworkErrorKind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.DeadlineExceeded
|
|
131
133
|
? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.Backpressure
|
|
132
134
|
: ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerException,
|
|
133
135
|
action: returnResponse ? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.FailCaller : ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.Drop,
|
|
@@ -140,7 +142,9 @@ class ZLinkRoutedSpotPacketDispatch {
|
|
|
140
142
|
reportMissing(spotId, packetName, context, returnResponse) {
|
|
141
143
|
this.options.dispatchErrors?.report({
|
|
142
144
|
surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotRoute,
|
|
143
|
-
messageKind: returnResponse
|
|
145
|
+
messageKind: returnResponse
|
|
146
|
+
? ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request
|
|
147
|
+
: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send,
|
|
144
148
|
reason: ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerMissing,
|
|
145
149
|
action: returnResponse ? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.FailCaller : ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.Drop,
|
|
146
150
|
packetName,
|
|
@@ -47,8 +47,8 @@ class ZLinkSpotSerialExecutor {
|
|
|
47
47
|
/** @internal Restores a durable Actor FIFO prefix without starting it. */
|
|
48
48
|
admitActorDurablePrefix(actorId, records) {
|
|
49
49
|
const serial = this.actorSerial(actorId);
|
|
50
|
-
return this.actorExecutor(actorId).admitDurablePrefix(records.map(record => ({
|
|
51
|
-
operation: executeChild => record.operation(child => executeChild(() => child(serial))),
|
|
50
|
+
return this.actorExecutor(actorId).admitDurablePrefix(records.map((record) => ({
|
|
51
|
+
operation: (executeChild) => record.operation((child) => executeChild(() => child(serial))),
|
|
52
52
|
preparation: record.preparation,
|
|
53
53
|
workOptions: record.workOptions
|
|
54
54
|
})));
|
|
@@ -73,18 +73,15 @@ class ZLinkSpotSerialExecutor {
|
|
|
73
73
|
if (this.closePromise !== undefined)
|
|
74
74
|
return this.closePromise;
|
|
75
75
|
this.closing = true;
|
|
76
|
-
const childSerials = [
|
|
77
|
-
...this.actorSerials.values(),
|
|
78
|
-
...this.timerSerials.values()
|
|
79
|
-
];
|
|
76
|
+
const childSerials = [...this.actorSerials.values(), ...this.timerSerials.values()];
|
|
80
77
|
const actorExecutors = [...this.actorExecutors.values()];
|
|
81
78
|
this.actorSerials.clear();
|
|
82
79
|
this.timerSerials.clear();
|
|
83
80
|
this.actorExecutors.clear();
|
|
84
81
|
this.closePromise = Promise.all([
|
|
85
82
|
this.spotSerial.close(),
|
|
86
|
-
...childSerials.map(serial => serial.close()),
|
|
87
|
-
...actorExecutors.map(executor => executor.close())
|
|
83
|
+
...childSerials.map((serial) => serial.close()),
|
|
84
|
+
...actorExecutors.map((executor) => executor.close())
|
|
88
85
|
]).then(() => undefined);
|
|
89
86
|
return this.closePromise;
|
|
90
87
|
}
|
|
@@ -41,13 +41,11 @@ class ZLinkSpotSerialTurnExecutor {
|
|
|
41
41
|
}
|
|
42
42
|
/** Distinguishes a gate-owning turn from a suspended AsyncLocalStorage tail. */
|
|
43
43
|
isActiveTurn(turn, turnId) {
|
|
44
|
-
return this.depth > 0
|
|
45
|
-
|
|
46
|
-
|| (turnId === this.activeTurnId && !turn.isSuspended));
|
|
44
|
+
return (this.depth > 0 &&
|
|
45
|
+
(this.resumedOwnerTurn === turn || (turnId === this.activeTurnId && !turn.isSuspended)));
|
|
47
46
|
}
|
|
48
47
|
setExecutionBarrier(barrier) {
|
|
49
|
-
if (this.executionBarrier !== undefined
|
|
50
|
-
&& this.executionBarrier !== barrier) {
|
|
48
|
+
if (this.executionBarrier !== undefined && this.executionBarrier !== barrier) {
|
|
51
49
|
throw new Error('ZLink Spot serial executor already belongs to another execution barrier.');
|
|
52
50
|
}
|
|
53
51
|
if (this.turnSequence !== 0 && this.executionBarrier === undefined) {
|
|
@@ -90,7 +88,7 @@ class ZLinkSpotSerialTurnExecutor {
|
|
|
90
88
|
const submitted = (0, application_job_queue_scope_1.hasApplicationJobPermit)()
|
|
91
89
|
? this.scheduler.submitPreAdmitted(boundOperation, options, barrierClaim)
|
|
92
90
|
: this.scheduler.submit(boundOperation, options, barrierClaim);
|
|
93
|
-
void submitted.catch(error => {
|
|
91
|
+
void submitted.catch((error) => {
|
|
94
92
|
barrierClaim?.release();
|
|
95
93
|
onError(error);
|
|
96
94
|
});
|
|
@@ -24,9 +24,9 @@ class ZLinkSpotSubscriptionDispatch {
|
|
|
24
24
|
}
|
|
25
25
|
configure(registrations) {
|
|
26
26
|
for (const registration of registrations) {
|
|
27
|
-
if (registration.kind !== 'subscribe'
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
if (registration.kind !== 'subscribe' ||
|
|
28
|
+
registration.channelName === undefined ||
|
|
29
|
+
registration.topic === undefined) {
|
|
30
30
|
continue;
|
|
31
31
|
}
|
|
32
32
|
const key = subscriptionKey(registration.channelName, registration.topic);
|
|
@@ -169,8 +169,8 @@ class ZLinkSpotSubscriptionDispatch {
|
|
|
169
169
|
}), (0, serial_work_size_1.zlinkSerialWorkOptions)(envelope.payload.byteLength, (0, serial_work_size_1.zlinkMetadataByteLength)(envelope.header.metadata)));
|
|
170
170
|
}
|
|
171
171
|
catch (error) {
|
|
172
|
-
if (error instanceof contracts_1.ZLinkFrameworkException
|
|
173
|
-
|
|
172
|
+
if (error instanceof contracts_1.ZLinkFrameworkException &&
|
|
173
|
+
(0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.PayloadDecodeFailed) {
|
|
174
174
|
this.options.dispatchErrors?.report({
|
|
175
175
|
surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotSubscription,
|
|
176
176
|
messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send,
|
|
@@ -17,7 +17,7 @@ const systemTimerClock = {
|
|
|
17
17
|
now: () => performance.now(),
|
|
18
18
|
utcNow: () => Date.now(),
|
|
19
19
|
setTimeout: (callback, delayMs) => setTimeout(callback, delayMs),
|
|
20
|
-
clearTimeout: handle => clearTimeout(handle)
|
|
20
|
+
clearTimeout: (handle) => clearTimeout(handle)
|
|
21
21
|
};
|
|
22
22
|
class ZLinkSpotTimerRegistry {
|
|
23
23
|
flowCreationEnabled;
|
|
@@ -55,7 +55,7 @@ class ZLinkSpotTimerRegistry {
|
|
|
55
55
|
if (prepared.previous !== undefined)
|
|
56
56
|
await prepared.previous.timer.cancel(signal);
|
|
57
57
|
const executionSerial = this.executeTimer === undefined
|
|
58
|
-
? this.executionSerialForTimer?.(name, serial) ?? serial
|
|
58
|
+
? (this.executionSerialForTimer?.(name, serial) ?? serial)
|
|
59
59
|
: undefined;
|
|
60
60
|
if (this.executionBarrier !== undefined)
|
|
61
61
|
executionSerial?.setExecutionBarrier(this.executionBarrier);
|
|
@@ -65,7 +65,9 @@ class ZLinkSpotTimerRegistry {
|
|
|
65
65
|
const timerFlow = (0, flow_context_1.createInboundFlow)(undefined, 'Timer', this.flowCreationEnabled());
|
|
66
66
|
const operation = () => {
|
|
67
67
|
const current = this.timers.get(name);
|
|
68
|
-
if (current === undefined ||
|
|
68
|
+
if (current === undefined ||
|
|
69
|
+
current.generation !== prepared.generation ||
|
|
70
|
+
current.timer !== timer) {
|
|
69
71
|
return undefined;
|
|
70
72
|
}
|
|
71
73
|
if (!this.executionAllowed())
|
|
@@ -90,9 +92,7 @@ class ZLinkSpotTimerRegistry {
|
|
|
90
92
|
const active = [...this.timers.entries()].map(([name, entry]) => ({
|
|
91
93
|
name,
|
|
92
94
|
timer: entry.timer,
|
|
93
|
-
wait: this.executeTimer === undefined
|
|
94
|
-
? true
|
|
95
|
-
: this.isTimerExecuting?.(name) !== true
|
|
95
|
+
wait: this.executeTimer === undefined ? true : this.isTimerExecuting?.(name) !== true
|
|
96
96
|
}));
|
|
97
97
|
this.timers.clear();
|
|
98
98
|
return active;
|
|
@@ -112,7 +112,7 @@ class ZLinkSpotTimerRegistry {
|
|
|
112
112
|
return states;
|
|
113
113
|
}
|
|
114
114
|
restoreRelocation(states) {
|
|
115
|
-
const byName = new Map(states.map(state => [state.name, state]));
|
|
115
|
+
const byName = new Map(states.map((state) => [state.name, state]));
|
|
116
116
|
if (byName.size !== states.length || byName.size !== this.timers.size) {
|
|
117
117
|
throw new Error('Timer relocation inventory does not match registered handlers.');
|
|
118
118
|
}
|
|
@@ -234,7 +234,7 @@ class ZLinkManagedTimer {
|
|
|
234
234
|
this.finalization = finalization;
|
|
235
235
|
try {
|
|
236
236
|
const preparation = this.lane.run(() => this.cancelCore());
|
|
237
|
-
void preparation.then(start => {
|
|
237
|
+
void preparation.then((start) => {
|
|
238
238
|
void this.completeFinalization(start, finalization).then(undefined, reject);
|
|
239
239
|
}, reject);
|
|
240
240
|
}
|
|
@@ -266,19 +266,19 @@ class ZLinkManagedTimer {
|
|
|
266
266
|
restoreRelocation(state, handlerType = '') {
|
|
267
267
|
if (this.disposed)
|
|
268
268
|
throw new Error(`Timer '${this.name}' is disposed.`);
|
|
269
|
-
if (state.name !== this.name
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
+ Number(state.lastScheduledIndex + 1n) * state.periodMs
|
|
281
|
-
|
|
269
|
+
if (state.name !== this.name ||
|
|
270
|
+
state.handlerType !== handlerType ||
|
|
271
|
+
state.periodMs !== this.periodMs ||
|
|
272
|
+
state.overrunPolicy !== this.options.overrunPolicy ||
|
|
273
|
+
state.maxCatchUpTicks !== this.options.maxCatchUpTicks ||
|
|
274
|
+
state.stopOnUnhandledException !== this.options.stopOnUnhandledException ||
|
|
275
|
+
!Number.isSafeInteger(state.startedAtUnixMs) ||
|
|
276
|
+
state.deliveryIndex < 0n ||
|
|
277
|
+
state.lastScheduledIndex < 0n ||
|
|
278
|
+
!Number.isSafeInteger(state.nextDueAtUnixMs) ||
|
|
279
|
+
state.nextDueAtUnixMs !==
|
|
280
|
+
state.startedAtUnixMs + Number(state.lastScheduledIndex + 1n) * state.periodMs ||
|
|
281
|
+
state.pendingTicks.length !== 0) {
|
|
282
282
|
throw new Error(`Timer '${this.name}' relocation contract does not match its registration.`);
|
|
283
283
|
}
|
|
284
284
|
if (this.timeout !== undefined)
|
|
@@ -301,7 +301,7 @@ class ZLinkManagedTimer {
|
|
|
301
301
|
this.timeout = this.clock.setTimeout(() => {
|
|
302
302
|
this.timeout = undefined;
|
|
303
303
|
const execution = startOutsideStateLane(() => this.fire());
|
|
304
|
-
this.running = execution.then(() => undefined, cause => this.lane.run(() => {
|
|
304
|
+
this.running = execution.then(() => undefined, (cause) => this.lane.run(() => {
|
|
305
305
|
this.dispatchFailure ??= { cause };
|
|
306
306
|
}));
|
|
307
307
|
}, delayMs);
|
|
@@ -328,9 +328,7 @@ class ZLinkManagedTimer {
|
|
|
328
328
|
this.timeout = undefined;
|
|
329
329
|
return {
|
|
330
330
|
timeout,
|
|
331
|
-
running: this.shouldWaitForRunningOnCancel()
|
|
332
|
-
? this.running
|
|
333
|
-
: Promise.resolve()
|
|
331
|
+
running: this.shouldWaitForRunningOnCancel() ? this.running : Promise.resolve()
|
|
334
332
|
};
|
|
335
333
|
}
|
|
336
334
|
async completeFinalization(start, finalization) {
|
|
@@ -454,8 +452,7 @@ function createTimerDiagnostics(sourceName, spotId, isEntrySpot, timerName, hand
|
|
|
454
452
|
}
|
|
455
453
|
});
|
|
456
454
|
}
|
|
457
|
-
catch {
|
|
458
|
-
}
|
|
455
|
+
catch { }
|
|
459
456
|
};
|
|
460
457
|
}
|
|
461
458
|
async function addEntrySpotTimerRegistrations(timers, entrySpotType, entrySpot, serial, registrations, options) {
|
|
@@ -467,8 +464,7 @@ async function addEntrySpotTimerRegistrations(timers, entrySpotType, entrySpot,
|
|
|
467
464
|
}
|
|
468
465
|
async function addSpotTimerRegistrations(timers, spotType, spotId, spot, serial, registrations, options) {
|
|
469
466
|
for (const handler of registrations.timerHandlers ?? []) {
|
|
470
|
-
if (handler.spotType === spotType
|
|
471
|
-
|| spotType.prototype instanceof handler.spotType) {
|
|
467
|
+
if (handler.spotType === spotType || spotType.prototype instanceof handler.spotType) {
|
|
472
468
|
await timers.add(handler.name, handler.periodMs, handler.options, handler.handlerType, serial, spot, options.providerResolver, options.signal, createTimerDiagnostics(String(spotId), spotId, false, handler.name, handler.handlerType, options.runtimeEventPublisher));
|
|
473
469
|
}
|
|
474
470
|
}
|