@zlink-systems/framework 0.26.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/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/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +4 -0
- package/dist/internal.js +15 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +1 -2
- package/dist/runtime/activation-admission.js +2 -6
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +42 -143
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +13 -11
- package/dist/runtime/actors/actor-handoff.d.ts +4 -4
- package/dist/runtime/actors/actor-handoff.js +8 -8
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +83 -105
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
- package/dist/runtime/actors/actor-remote-joiner.js +5 -9
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +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-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
- package/dist/runtime/actors/deferred-join-completion.js +1 -0
- package/dist/runtime/actors/index.d.ts +9 -7
- package/dist/runtime/actors/index.js +87 -69
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +2 -0
- package/dist/runtime/admission.js +7 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +6 -23
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +1 -1
- package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
- package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -8
- package/dist/runtime/channels/channel-clients.js +68 -52
- 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 -10
- 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.js +5 -2
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
- package/dist/runtime/channels/channel-socket-registry.js +248 -174
- package/dist/runtime/channels/channel-transports.d.ts +11 -17
- 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 +130 -72
- 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 +12 -9
- package/dist/runtime/execution/index.js +58 -14
- package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
- package/dist/runtime/execution/serial-execution-queue.js +54 -15
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
- package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
- package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
- package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
- package/dist/runtime/foundation/service-topology-registry.js +17 -32
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +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 +16 -18
- package/dist/runtime/host/actor-transfer-runtime.js +143 -176
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +14 -13
- package/dist/runtime/host/index.js +190 -157
- 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 +7 -20
- package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
- package/dist/runtime/host/route-mesh-runtime.js +171 -252
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
- package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
- package/dist/runtime/host/spot-address-transport.d.ts +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 -10
- package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
- package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +4 -9
- package/dist/runtime/locations/lifecycle.js +2 -31
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +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 +37 -28
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
- package/dist/runtime/locations/spot-location-claims.js +42 -1
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/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 +1 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
- package/dist/runtime/spots/index.d.ts +14 -20
- package/dist/runtime/spots/index.js +302 -176
- package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
- package/dist/runtime/spots/spot-activation-registry.js +14 -50
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +2 -2
- package/dist/runtime/spots/spot-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-activation.js +49 -32
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
- package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
- package/dist/runtime/spots/spot-actor-membership.js +22 -45
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +9 -20
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +5 -4
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +9 -8
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
- package/dist/runtime/spots/spot-serial-executor.js +2 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
- package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +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 +11 -1
- package/dist/runtime/streams/index.d.ts +14 -15
- package/dist/runtime/streams/index.js +20 -21
- 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/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/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/Spots/Contracts.ts +1 -1
- package/src/internal.ts +14 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +2 -8
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +77 -204
- package/src/runtime/actors/actor-context.ts +39 -33
- package/src/runtime/actors/actor-handoff.ts +24 -22
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +172 -174
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +9 -11
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +10 -6
- package/src/runtime/actors/index.ts +100 -79
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +8 -1
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +13 -29
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
- package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
- package/src/runtime/backend/raw-binding-port.ts +1 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -85
- 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 -23
- 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 +6 -2
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +301 -192
- package/src/runtime/channels/channel-transports.ts +161 -112
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +172 -91
- package/src/runtime/channels/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 +60 -20
- package/src/runtime/execution/serial-execution-queue.ts +131 -18
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
- package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
- package/src/runtime/foundation/service-topology-registry.ts +23 -32
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +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 +180 -260
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +327 -296
- 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 +8 -41
- package/src/runtime/host/route-mesh-runtime.ts +228 -271
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
- package/src/runtime/host/spot-address-transport.ts +73 -195
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
- package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +13 -43
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +450 -478
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +75 -49
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +58 -1
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/submission-result.ts +57 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
- package/src/runtime/spots/index.ts +433 -229
- package/src/runtime/spots/spot-activation-registry.ts +30 -69
- package/src/runtime/spots/spot-activation-state.ts +2 -2
- package/src/runtime/spots/spot-activation.ts +67 -37
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
- package/src/runtime/spots/spot-actor-membership.ts +40 -72
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -30
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +21 -17
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
- package/src/runtime/spots/spot-outbound.ts +45 -23
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +5 -27
- package/src/runtime/spots/spot-serial-executor.ts +2 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +21 -1
- package/src/runtime/streams/index.ts +76 -64
- 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/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -10,7 +10,6 @@ export interface ZLinkActivationConcurrency {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
interface ZLinkActivationRecord {
|
|
13
|
-
readonly meshName: string;
|
|
14
13
|
readonly limit: number;
|
|
15
14
|
active: number;
|
|
16
15
|
}
|
|
@@ -27,10 +26,7 @@ interface ZLinkActivationRecord {
|
|
|
27
26
|
export class ZLinkActivationAdmission {
|
|
28
27
|
private readonly records = new Map<string, ZLinkActivationRecord>();
|
|
29
28
|
|
|
30
|
-
constructor(
|
|
31
|
-
private readonly limitOf: (meshName: string) => number,
|
|
32
|
-
private readonly changed?: (meshName: string) => void
|
|
33
|
-
) {}
|
|
29
|
+
constructor(private readonly limitOf: (meshName: string) => number) {}
|
|
34
30
|
|
|
35
31
|
current(meshName: string): ZLinkActivationConcurrency {
|
|
36
32
|
const record = this.records.get(meshName);
|
|
@@ -57,20 +53,18 @@ export class ZLinkActivationAdmission {
|
|
|
57
53
|
);
|
|
58
54
|
}
|
|
59
55
|
record.active += 1;
|
|
60
|
-
this.changed?.(meshName);
|
|
61
56
|
let released = false;
|
|
62
57
|
return () => {
|
|
63
58
|
if (released) return;
|
|
64
59
|
released = true;
|
|
65
60
|
record.active -= 1;
|
|
66
|
-
this.changed?.(meshName);
|
|
67
61
|
};
|
|
68
62
|
}
|
|
69
63
|
|
|
70
64
|
private record(meshName: string): ZLinkActivationRecord {
|
|
71
65
|
let record = this.records.get(meshName);
|
|
72
66
|
if (record === undefined) {
|
|
73
|
-
record = {
|
|
67
|
+
record = { limit: this.limitOf(meshName), active: 0 };
|
|
74
68
|
this.records.set(meshName, record);
|
|
75
69
|
}
|
|
76
70
|
return record;
|
|
@@ -1,13 +1,29 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import { UINT64_MAX } from '@zlink-systems/stream-wire';
|
|
2
|
+
import {
|
|
3
|
+
type RoutingId,
|
|
4
|
+
ZLinkSpotKind,
|
|
5
|
+
zlinkSpotKindFromWire,
|
|
6
|
+
zlinkSpotKindToWire
|
|
7
|
+
} from '../../contracts';
|
|
8
|
+
|
|
9
|
+
import { ZLINK_MAX_ROUTING_ID_BYTES } from '../../contracts/Common/CoreTypes';
|
|
10
|
+
import { AUTHORITY_ENVELOPE_MAX_BYTES } from '../../contracts/Configuration/InternalDefaults';
|
|
3
11
|
import { crc32c } from '../foundation/service-relocation-runtime';
|
|
12
|
+
import { SERVICE_WIRE_TEXT8_MAX_BYTES } from '../foundation/service-wire-binary-primitives';
|
|
4
13
|
import { decodeRoutingId, encodeRoutingIdStorageHex } from '../routing-id';
|
|
5
14
|
|
|
6
15
|
const AUTHORITY_MAGIC = Buffer.from([0x5a, 0x4c, 0x41, 0x55]);
|
|
7
16
|
const AUTHORITY_VERSION = 1;
|
|
8
17
|
const AUTHORITY_FLAGS = 0;
|
|
9
18
|
const ACTOR_RELOCATION_MAGIC = Buffer.from([0x5a, 0x4c, 0x41, 0x50]);
|
|
10
|
-
const
|
|
19
|
+
const AUTHORITY_MINIMUM_BYTES = 15;
|
|
20
|
+
const ACTOR_RELOCATION_MINIMUM_BYTES = 32;
|
|
21
|
+
const ACTOR_RELOCATION_VERSION_WITHOUT_SESSION_FENCE = 5;
|
|
22
|
+
const ACTOR_RELOCATION_VERSION_WITH_SESSION_FENCE = 6;
|
|
23
|
+
const ACTOR_RELOCATION_FIRST_PHASE = 1;
|
|
24
|
+
const ACTOR_RELOCATION_STEADY_PHASE = 4;
|
|
25
|
+
const ENTRY_SPOT_WIRE_KIND = zlinkSpotKindToWire(ZLinkSpotKind.Entry);
|
|
26
|
+
const USER_SPOT_WIRE_KIND = zlinkSpotKindToWire(ZLinkSpotKind.User);
|
|
11
27
|
const FATAL_UTF8 = new TextDecoder('utf-8', { fatal: true });
|
|
12
28
|
|
|
13
29
|
export type ZLinkActorAuthorityState = 'creating' | 'ready';
|
|
@@ -47,8 +63,10 @@ export function encodeCanonicalAuthorityPayload(value: ZLinkCanonicalAuthorityPa
|
|
|
47
63
|
body
|
|
48
64
|
);
|
|
49
65
|
const encoded = concat(envelope, u32be(crc32c(envelope)));
|
|
50
|
-
if (encoded.byteLength >
|
|
51
|
-
throw new RangeError(
|
|
66
|
+
if (encoded.byteLength > AUTHORITY_ENVELOPE_MAX_BYTES) {
|
|
67
|
+
throw new RangeError(
|
|
68
|
+
`Actor authority payload exceeds ${AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`
|
|
69
|
+
);
|
|
52
70
|
}
|
|
53
71
|
return encoded;
|
|
54
72
|
}
|
|
@@ -59,7 +77,10 @@ export function decodeCanonicalAuthorityPayload(
|
|
|
59
77
|
): ZLinkCanonicalAuthorityPayload | undefined {
|
|
60
78
|
try {
|
|
61
79
|
const reader = new BigEndianReader(payload);
|
|
62
|
-
if (
|
|
80
|
+
if (
|
|
81
|
+
reader.bytes.byteLength < AUTHORITY_MINIMUM_BYTES ||
|
|
82
|
+
reader.bytes.byteLength > AUTHORITY_ENVELOPE_MAX_BYTES
|
|
83
|
+
) {
|
|
63
84
|
return undefined;
|
|
64
85
|
}
|
|
65
86
|
reader.expect(AUTHORITY_MAGIC);
|
|
@@ -81,7 +102,7 @@ export function decodeCanonicalAuthorityPayload(
|
|
|
81
102
|
/** Byte-exact Node counterpart of .NET ZLinkActorAuthorityPayloadCodec.Encode. */
|
|
82
103
|
export function encodeActorAuthorityPayload(value: ZLinkActorAuthorityPayload): Buffer {
|
|
83
104
|
const spotKind = zlinkSpotKindToWire(value.currentSpotKind);
|
|
84
|
-
if (spotKind !==
|
|
105
|
+
if (spotKind !== ENTRY_SPOT_WIRE_KIND && spotKind !== USER_SPOT_WIRE_KIND) {
|
|
85
106
|
throw new RangeError('Actor currentSpotKind must be Entry or User.');
|
|
86
107
|
}
|
|
87
108
|
const actor = concat(
|
|
@@ -173,7 +194,7 @@ export function actorRelocationAuthorityApplicationPayload(
|
|
|
173
194
|
const current = decodeActorRelocationEnvelope(payload);
|
|
174
195
|
return current === undefined
|
|
175
196
|
? Buffer.from(payload)
|
|
176
|
-
: current.phase ===
|
|
197
|
+
: current.phase === ACTOR_RELOCATION_STEADY_PHASE
|
|
177
198
|
? Buffer.from(current.applicationPayload)
|
|
178
199
|
: undefined;
|
|
179
200
|
}
|
|
@@ -196,8 +217,10 @@ export function replaceActorRelocationAuthorityApplicationPayload(
|
|
|
196
217
|
applicationPayload
|
|
197
218
|
);
|
|
198
219
|
const encoded = concat(withoutChecksum, u32le(crc32c(withoutChecksum)));
|
|
199
|
-
if (encoded.byteLength >
|
|
200
|
-
throw new RangeError(
|
|
220
|
+
if (encoded.byteLength > AUTHORITY_ENVELOPE_MAX_BYTES) {
|
|
221
|
+
throw new RangeError(
|
|
222
|
+
`Actor relocation authority payload exceeds ${AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`
|
|
223
|
+
);
|
|
201
224
|
}
|
|
202
225
|
return encoded;
|
|
203
226
|
}
|
|
@@ -205,7 +228,11 @@ export function replaceActorRelocationAuthorityApplicationPayload(
|
|
|
205
228
|
function decodeActorRelocationEnvelope(payload: Uint8Array): ActorRelocationEnvelope | undefined {
|
|
206
229
|
try {
|
|
207
230
|
const bytes = Buffer.from(payload);
|
|
208
|
-
if (
|
|
231
|
+
if (
|
|
232
|
+
bytes.byteLength < ACTOR_RELOCATION_MINIMUM_BYTES ||
|
|
233
|
+
bytes.byteLength > AUTHORITY_ENVELOPE_MAX_BYTES
|
|
234
|
+
)
|
|
235
|
+
return undefined;
|
|
209
236
|
const checksumOffset = bytes.byteLength - 4;
|
|
210
237
|
if (bytes.readUInt32LE(checksumOffset) !== crc32c(bytes.subarray(0, checksumOffset))) {
|
|
211
238
|
return undefined;
|
|
@@ -213,10 +240,15 @@ function decodeActorRelocationEnvelope(payload: Uint8Array): ActorRelocationEnve
|
|
|
213
240
|
const reader = new LittleEndianReader(bytes.subarray(0, checksumOffset));
|
|
214
241
|
reader.expect(ACTOR_RELOCATION_MAGIC);
|
|
215
242
|
const version = reader.u16();
|
|
216
|
-
if (
|
|
243
|
+
if (
|
|
244
|
+
version !== ACTOR_RELOCATION_VERSION_WITHOUT_SESSION_FENCE &&
|
|
245
|
+
version !== ACTOR_RELOCATION_VERSION_WITH_SESSION_FENCE
|
|
246
|
+
)
|
|
247
|
+
return undefined;
|
|
217
248
|
if (reader.take(16).every((byte) => byte === 0)) return undefined;
|
|
218
249
|
const phase = reader.u8();
|
|
219
|
-
if (phase <
|
|
250
|
+
if (phase < ACTOR_RELOCATION_FIRST_PHASE || phase > ACTOR_RELOCATION_STEADY_PHASE)
|
|
251
|
+
return undefined;
|
|
220
252
|
const isBound = reader.bool();
|
|
221
253
|
if (isBound) {
|
|
222
254
|
reader.bytes8();
|
|
@@ -230,7 +262,7 @@ function decodeActorRelocationEnvelope(payload: Uint8Array): ActorRelocationEnve
|
|
|
230
262
|
const ownerLeaseGeneration = reader.u64();
|
|
231
263
|
const sessionOwnerNodeGeneration = reader.u64();
|
|
232
264
|
reader.u64();
|
|
233
|
-
if (version ===
|
|
265
|
+
if (version === ACTOR_RELOCATION_VERSION_WITH_SESSION_FENCE) {
|
|
234
266
|
reader.text16();
|
|
235
267
|
reader.u64();
|
|
236
268
|
}
|
|
@@ -247,7 +279,7 @@ function decodeActorRelocationEnvelope(payload: Uint8Array): ActorRelocationEnve
|
|
|
247
279
|
}
|
|
248
280
|
const prefix = Buffer.from(reader.bytes.subarray(0, reader.offset));
|
|
249
281
|
const applicationLength = reader.i32();
|
|
250
|
-
if (applicationLength < 1 || applicationLength >
|
|
282
|
+
if (applicationLength < 1 || applicationLength > AUTHORITY_ENVELOPE_MAX_BYTES) return undefined;
|
|
251
283
|
const applicationPayload = Buffer.from(reader.take(applicationLength));
|
|
252
284
|
if (!reader.done) return undefined;
|
|
253
285
|
return { prefix, phase, applicationPayload };
|
|
@@ -258,22 +290,28 @@ function decodeActorRelocationEnvelope(payload: Uint8Array): ActorRelocationEnve
|
|
|
258
290
|
|
|
259
291
|
function text8(value: string, name: string): Buffer {
|
|
260
292
|
const bytes = Buffer.from(value, 'utf8');
|
|
261
|
-
if (
|
|
262
|
-
|
|
293
|
+
if (
|
|
294
|
+
bytes.byteLength < 1 ||
|
|
295
|
+
bytes.byteLength > SERVICE_WIRE_TEXT8_MAX_BYTES ||
|
|
296
|
+
bytes.includes(0)
|
|
297
|
+
) {
|
|
298
|
+
throw new RangeError(
|
|
299
|
+
`${name} must contain 1..${SERVICE_WIRE_TEXT8_MAX_BYTES} UTF-8 bytes without NUL.`
|
|
300
|
+
);
|
|
263
301
|
}
|
|
264
302
|
return concat(Buffer.of(bytes.byteLength), bytes);
|
|
265
303
|
}
|
|
266
304
|
|
|
267
305
|
function rid(value: RoutingId, name: string): Buffer {
|
|
268
306
|
const bytes = Buffer.from(encodeRoutingIdStorageHex(value), 'hex');
|
|
269
|
-
if (bytes.byteLength < 1 || bytes.byteLength >
|
|
270
|
-
throw new RangeError(`${name} must contain 1
|
|
307
|
+
if (bytes.byteLength < 1 || bytes.byteLength > ZLINK_MAX_ROUTING_ID_BYTES) {
|
|
308
|
+
throw new RangeError(`${name} must contain 1..${ZLINK_MAX_ROUTING_ID_BYTES} bytes.`);
|
|
271
309
|
}
|
|
272
310
|
return concat(Buffer.of(bytes.byteLength), bytes);
|
|
273
311
|
}
|
|
274
312
|
|
|
275
313
|
function nonzeroU64be(value: bigint, name: string): Buffer {
|
|
276
|
-
if (value === 0n || value < 0n || value >
|
|
314
|
+
if (value === 0n || value < 0n || value > UINT64_MAX) {
|
|
277
315
|
throw new RangeError(`${name} must be a non-zero u64.`);
|
|
278
316
|
}
|
|
279
317
|
const result = Buffer.alloc(8);
|
|
@@ -1,41 +1,57 @@
|
|
|
1
|
+
import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
|
|
1
2
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
type ActorRef,
|
|
4
|
+
type RoutingId,
|
|
5
|
+
type ZLinkActorClient,
|
|
6
|
+
type ZLinkActorRequestCall,
|
|
7
|
+
type ZLinkActorSendCall,
|
|
8
|
+
type ZLinkMessageSerializer,
|
|
9
|
+
ZLinkFrameworkErrorKind,
|
|
10
|
+
ZLinkFrameworkException,
|
|
11
|
+
ZLinkSpotKind
|
|
12
|
+
} from '../../contracts';
|
|
13
|
+
|
|
14
|
+
import { ZLINK_MAX_ACTOR_ID_BYTES } from '../../contracts/Common/CoreTypes';
|
|
15
|
+
import type { Message } from '../../contracts/Common/Message';
|
|
16
|
+
import { awaitWithAbort, throwIfAborted } from '../abort';
|
|
17
|
+
import {
|
|
18
|
+
type ZLinkBackendActorRef,
|
|
19
|
+
type ZLinkBackendMeshNode,
|
|
20
|
+
type ZLinkMeshCompletionTable,
|
|
21
|
+
closeMeshCompletion
|
|
22
|
+
} from '../backend';
|
|
23
|
+
|
|
6
24
|
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
7
25
|
import {
|
|
26
|
+
isZLinkBackendResultError,
|
|
8
27
|
RequestResult,
|
|
9
28
|
SubmitResult,
|
|
10
|
-
isZLinkBackendResultError,
|
|
11
29
|
ZLINK_BACKEND_SEND_NONE
|
|
12
30
|
} from '../backend/runtime-values';
|
|
13
|
-
import
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
} from '
|
|
21
|
-
import { ZLinkSpotKind } from '../../contracts';
|
|
22
|
-
import { ZLinkFrameworkException, ZLinkFrameworkErrorKind } from '../../contracts';
|
|
31
|
+
import { ZLinkConfigurationException } from '../configuration';
|
|
32
|
+
import {
|
|
33
|
+
captureZLinkSpotSerialTurn,
|
|
34
|
+
currentZLinkSpotSerialSourceId,
|
|
35
|
+
requireZLinkYieldTurn,
|
|
36
|
+
type ZLinkSpotSerialTurn
|
|
37
|
+
} from '../execution';
|
|
38
|
+
import { remainingActorRequestTimeout, waitActorReply } from './actor-request-deadline';
|
|
23
39
|
import {
|
|
40
|
+
createInternalFrameworkException,
|
|
41
|
+
internalFrameworkErrorKind,
|
|
42
|
+
internalFrameworkErrorKindFromWireFailureCode,
|
|
43
|
+
ZLinkFrameworkInternalErrorKind
|
|
44
|
+
} from '../framework-errors-internal';
|
|
45
|
+
import type { ZLinkResolvedActorRoute, ZLinkStoreLocationResolvers } from '../locations';
|
|
46
|
+
import { resolveFrameworkPacketName } from '../messaging/packet-name';
|
|
47
|
+
import { decodeFrameworkPayloadMessage, encodeFrameworkPayload } from '../messaging/payload-codec';
|
|
48
|
+
import {
|
|
49
|
+
classifySubmitResult,
|
|
24
50
|
requireOneWayCompletion,
|
|
25
51
|
throwAlreadySubmitted,
|
|
26
52
|
ZLinkSubmitStatus,
|
|
27
53
|
type ZLinkSubmitResult
|
|
28
54
|
} from '../messaging/submission-result';
|
|
29
|
-
import type { Message } from '../../contracts/Common/Message';
|
|
30
|
-
import type {
|
|
31
|
-
ZLinkBackendActorRef,
|
|
32
|
-
ZLinkBackendMeshNode,
|
|
33
|
-
ZLinkMeshCompletionTable
|
|
34
|
-
} from '../backend';
|
|
35
|
-
import { closeMeshCompletion } from '../backend';
|
|
36
|
-
import { awaitWithAbort, throwIfAborted } from '../abort';
|
|
37
|
-
import { encodeFrameworkPayload, decodeFrameworkPayloadMessage } from '../messaging/payload-codec';
|
|
38
|
-
import { resolveFrameworkPacketName } from '../messaging/packet-name';
|
|
39
55
|
import {
|
|
40
56
|
actorRequestDeadlineMetadata,
|
|
41
57
|
decodeStreamHeader,
|
|
@@ -45,11 +61,7 @@ import {
|
|
|
45
61
|
ZLinkStreamHeaderFlags,
|
|
46
62
|
ZLinkStreamMessageKind
|
|
47
63
|
} from '../streams/protocol';
|
|
48
|
-
import
|
|
49
|
-
import type { ZLinkResolvedActorRoute } from '../locations';
|
|
50
|
-
import type { ZLinkActorRoutedJoinTransport } from './actor-routed-join-transport';
|
|
51
|
-
import { encodeRemoteActorPacketRelayPayload } from './actor-packet-relay-wire';
|
|
52
|
-
import { requestRoutedJsonReply } from './actor-routed-json-request';
|
|
64
|
+
import { currentZLinkActorExecution } from './actor-execution-context';
|
|
53
65
|
import {
|
|
54
66
|
attachActorMessageFollowContext,
|
|
55
67
|
createInitialActorMessageFollowContext,
|
|
@@ -57,13 +69,11 @@ import {
|
|
|
57
69
|
type ZLinkActorMessageFollowContext
|
|
58
70
|
} from './actor-message-follow-context';
|
|
59
71
|
import {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
} from '
|
|
65
|
-
import { ZLinkConfigurationException } from '../configuration';
|
|
66
|
-
import { currentZLinkActorExecution } from './actor-execution-context';
|
|
72
|
+
encodeRemoteActorPacketRelayPayload,
|
|
73
|
+
ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET
|
|
74
|
+
} from './actor-packet-relay-wire';
|
|
75
|
+
import type { ZLinkActorRoutedJoinTransport } from './actor-routed-join-transport';
|
|
76
|
+
import { requestRoutedJsonReply } from './actor-routed-json-request';
|
|
67
77
|
|
|
68
78
|
export interface ZLinkActorClientOptions {
|
|
69
79
|
readonly nodeProvider: (meshName: string) => ZLinkBackendMeshNode | undefined;
|
|
@@ -163,7 +173,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
163
173
|
if (duplicate !== undefined) submissions.push(duplicate);
|
|
164
174
|
}
|
|
165
175
|
await awaitWithAbort(Promise.all(submissions), signal);
|
|
166
|
-
return
|
|
176
|
+
return { status: ZLinkSubmitStatus.Submitted };
|
|
167
177
|
}
|
|
168
178
|
const node = this.requireNode(meshName);
|
|
169
179
|
if (
|
|
@@ -181,9 +191,9 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
181
191
|
returnResponse: false,
|
|
182
192
|
messageFollowContext: messageFollow
|
|
183
193
|
}),
|
|
184
|
-
{ packetName:
|
|
194
|
+
{ packetName: ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET }
|
|
185
195
|
);
|
|
186
|
-
return
|
|
196
|
+
return { status: ZLinkSubmitStatus.Submitted };
|
|
187
197
|
}
|
|
188
198
|
return await this.submitActorSend(meshName, toBackendActorRef(actor), parts);
|
|
189
199
|
} catch (error) {
|
|
@@ -214,7 +224,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
214
224
|
effectiveTimeoutMs === undefined ? undefined : performance.now() + effectiveTimeoutMs;
|
|
215
225
|
const deadlineUnixMs =
|
|
216
226
|
effectiveTimeoutMs === undefined ? undefined : Date.now() + effectiveTimeoutMs;
|
|
217
|
-
const route = await this.resolveActorRoute(actorId, signal);
|
|
227
|
+
const route = await this.resolveActorRoute(actorId, signal, deadlineMs);
|
|
218
228
|
if (
|
|
219
229
|
waitPolicy === 'async' &&
|
|
220
230
|
sourceSpotId !== undefined &&
|
|
@@ -248,10 +258,13 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
248
258
|
);
|
|
249
259
|
const routedActor = attachActorMessageFollowContext(actor, messageFollow);
|
|
250
260
|
try {
|
|
261
|
+
const delivery = this.options
|
|
262
|
+
.transportDeliveryGate?.()
|
|
263
|
+
?.waitBeforeSubmit(actorId, 'request', signal);
|
|
251
264
|
const submissionCopies =
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
265
|
+
delivery === undefined
|
|
266
|
+
? 1
|
|
267
|
+
: ((await waitActorReply(delivery, actorId, deadlineMs, signal)) ?? 1);
|
|
255
268
|
const handoff = this.options.handoffCapture?.(
|
|
256
269
|
meshName,
|
|
257
270
|
actor.actorId,
|
|
@@ -273,9 +286,11 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
273
286
|
);
|
|
274
287
|
if (duplicate !== undefined) submissions.push(duplicate);
|
|
275
288
|
}
|
|
276
|
-
const replies = await
|
|
289
|
+
const replies = await waitActorReply<unknown[]>(
|
|
277
290
|
Promise.all(submissions),
|
|
278
|
-
|
|
291
|
+
actorId,
|
|
292
|
+
deadlineMs,
|
|
293
|
+
signal
|
|
279
294
|
);
|
|
280
295
|
return replies[0] as TReply;
|
|
281
296
|
}
|
|
@@ -302,7 +317,8 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
302
317
|
|
|
303
318
|
private async resolveActorRoute(
|
|
304
319
|
actorId: string,
|
|
305
|
-
signal?: AbortSignal
|
|
320
|
+
signal?: AbortSignal,
|
|
321
|
+
deadlineMs?: number
|
|
306
322
|
): Promise<ZLinkResolvedActorRoute> {
|
|
307
323
|
const resolver = this.options.locationResolver();
|
|
308
324
|
if (resolver === undefined) {
|
|
@@ -311,7 +327,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
311
327
|
'Actor direct messaging requires a Location Store.'
|
|
312
328
|
);
|
|
313
329
|
}
|
|
314
|
-
const resolution = await resolver.resolveDirectActorRoute(actorId, signal);
|
|
330
|
+
const resolution = await resolver.resolveDirectActorRoute(actorId, signal, deadlineMs);
|
|
315
331
|
if (resolution.kind === 'missing') {
|
|
316
332
|
throw createInternalFrameworkException(
|
|
317
333
|
ZLinkFrameworkInternalErrorKind.ActorRouteNotFound,
|
|
@@ -390,7 +406,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
390
406
|
): Promise<ZLinkSubmitResult> {
|
|
391
407
|
const node = this.requireNode(meshName);
|
|
392
408
|
try {
|
|
393
|
-
return
|
|
409
|
+
return classifySubmitResult(
|
|
394
410
|
await node.sendToActor(actor, toMessageLikeParts(parts), {
|
|
395
411
|
flags: ZLINK_BACKEND_SEND_NONE
|
|
396
412
|
}),
|
|
@@ -398,11 +414,9 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
398
414
|
);
|
|
399
415
|
} catch (error) {
|
|
400
416
|
if (isZLinkBackendResultError(error)) {
|
|
401
|
-
return
|
|
417
|
+
return classifySubmitResult(error.result, 'Actor send', error.phase);
|
|
402
418
|
}
|
|
403
|
-
throw
|
|
404
|
-
? mapRequestError(error, 'Actor send')
|
|
405
|
-
: mapSubmitError(error, 'Actor send');
|
|
419
|
+
throw mapSubmitError(error, 'Actor send');
|
|
406
420
|
}
|
|
407
421
|
}
|
|
408
422
|
|
|
@@ -560,53 +574,12 @@ function remoteRelayErrorKind(value: unknown): ZLinkFrameworkInternalErrorKind {
|
|
|
560
574
|
: ZLinkFrameworkInternalErrorKind.RequestFailed;
|
|
561
575
|
}
|
|
562
576
|
|
|
563
|
-
function remainingActorRequestTimeout(
|
|
564
|
-
actorId: string,
|
|
565
|
-
deadlineMs: number | undefined
|
|
566
|
-
): number | undefined {
|
|
567
|
-
if (deadlineMs === undefined) return undefined;
|
|
568
|
-
const remaining = deadlineMs - performance.now();
|
|
569
|
-
if (remaining <= 0) {
|
|
570
|
-
throw createInternalFrameworkException(
|
|
571
|
-
ZLinkFrameworkInternalErrorKind.DeadlineExceeded,
|
|
572
|
-
`Actor request '${actorId}' exceeded its deadline before submission.`
|
|
573
|
-
);
|
|
574
|
-
}
|
|
575
|
-
return Math.max(1, Math.ceil(remaining));
|
|
576
|
-
}
|
|
577
|
-
|
|
578
577
|
function requireActorId(actorId: string): void {
|
|
579
578
|
const byteLength = Buffer.byteLength(actorId, 'utf8');
|
|
580
|
-
if (byteLength < 1 || byteLength >
|
|
581
|
-
throw new ZLinkConfigurationException(
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
async function waitHandoffReply<TReply>(
|
|
586
|
-
reply: Promise<unknown>,
|
|
587
|
-
timeoutMs: number | undefined
|
|
588
|
-
): Promise<TReply> {
|
|
589
|
-
if (timeoutMs === undefined) return (await reply) as TReply;
|
|
590
|
-
let deadline: ReturnType<typeof setTimeout> | undefined;
|
|
591
|
-
try {
|
|
592
|
-
return await Promise.race([
|
|
593
|
-
reply as Promise<TReply>,
|
|
594
|
-
new Promise<TReply>((_resolve, reject) => {
|
|
595
|
-
deadline = setTimeout(
|
|
596
|
-
() =>
|
|
597
|
-
reject(
|
|
598
|
-
createInternalFrameworkException(
|
|
599
|
-
ZLinkFrameworkInternalErrorKind.RequestFailed,
|
|
600
|
-
'Actor handoff request timed out.',
|
|
601
|
-
true
|
|
602
|
-
)
|
|
603
|
-
),
|
|
604
|
-
timeoutMs
|
|
605
|
-
);
|
|
606
|
-
})
|
|
607
|
-
]);
|
|
608
|
-
} finally {
|
|
609
|
-
if (deadline !== undefined) clearTimeout(deadline);
|
|
579
|
+
if (byteLength < 1 || byteLength > ZLINK_MAX_ACTOR_ID_BYTES) {
|
|
580
|
+
throw new ZLinkConfigurationException(
|
|
581
|
+
`Actor ID must contain 1..${ZLINK_MAX_ACTOR_ID_BYTES} UTF-8 bytes.`
|
|
582
|
+
);
|
|
610
583
|
}
|
|
611
584
|
}
|
|
612
585
|
|
|
@@ -861,7 +834,7 @@ function decodeActorReplyPayload<TReply>(
|
|
|
861
834
|
payload,
|
|
862
835
|
serializers,
|
|
863
836
|
undefined,
|
|
864
|
-
|
|
837
|
+
ZlinkStreamContentType.Json,
|
|
865
838
|
packetName,
|
|
866
839
|
'reply'
|
|
867
840
|
);
|
|
@@ -871,29 +844,6 @@ function mapSubmitError(error: unknown, operationName: string): Error {
|
|
|
871
844
|
if (error instanceof ZLinkFrameworkException) {
|
|
872
845
|
return error;
|
|
873
846
|
}
|
|
874
|
-
if (isZLinkBackendResultError(error)) {
|
|
875
|
-
switch (error.result) {
|
|
876
|
-
case SubmitResult.NotConnected:
|
|
877
|
-
return routeNotConnected(
|
|
878
|
-
`${operationName} failed because the target route is not connected.`,
|
|
879
|
-
error
|
|
880
|
-
);
|
|
881
|
-
case SubmitResult.NotFound:
|
|
882
|
-
return createInternalFrameworkException(
|
|
883
|
-
ZLinkFrameworkInternalErrorKind.ActorRouteNotFound,
|
|
884
|
-
`${operationName} failed because the actor route was not found.`,
|
|
885
|
-
false,
|
|
886
|
-
error
|
|
887
|
-
);
|
|
888
|
-
default:
|
|
889
|
-
return createInternalFrameworkException(
|
|
890
|
-
ZLinkFrameworkInternalErrorKind.RequestFailed,
|
|
891
|
-
`${operationName} failed with submit result ${error.result}.`,
|
|
892
|
-
false,
|
|
893
|
-
error
|
|
894
|
-
);
|
|
895
|
-
}
|
|
896
|
-
}
|
|
897
847
|
return createInternalFrameworkException(
|
|
898
848
|
ZLinkFrameworkInternalErrorKind.RouteNotConnected,
|
|
899
849
|
`${operationName} failed before a reply was received.`,
|
|
@@ -902,79 +852,6 @@ function mapSubmitError(error: unknown, operationName: string): Error {
|
|
|
902
852
|
);
|
|
903
853
|
}
|
|
904
854
|
|
|
905
|
-
function mapSubmitResult(result: number, operationName: string): ZLinkSubmitResult {
|
|
906
|
-
switch (result) {
|
|
907
|
-
case SubmitResult.Ok:
|
|
908
|
-
return submitted();
|
|
909
|
-
case SubmitResult.Backpressured:
|
|
910
|
-
case SubmitResult.NotAdmitted:
|
|
911
|
-
return { status: ZLinkSubmitStatus.Backpressured };
|
|
912
|
-
case SubmitResult.NotConnected:
|
|
913
|
-
return { status: ZLinkSubmitStatus.RouteNotConnected };
|
|
914
|
-
case SubmitResult.NotFound:
|
|
915
|
-
return { status: ZLinkSubmitStatus.TargetNotFound };
|
|
916
|
-
case SubmitResult.Terminated:
|
|
917
|
-
return { status: ZLinkSubmitStatus.Shutdown };
|
|
918
|
-
default:
|
|
919
|
-
throw createInternalFrameworkException(
|
|
920
|
-
ZLinkFrameworkInternalErrorKind.RequestFailed,
|
|
921
|
-
`${operationName} failed with submit result ${result}.`
|
|
922
|
-
);
|
|
923
|
-
}
|
|
924
|
-
}
|
|
925
|
-
|
|
926
|
-
function submitted(): ZLinkSubmitResult {
|
|
927
|
-
return { status: ZLinkSubmitStatus.Submitted };
|
|
928
|
-
}
|
|
929
|
-
|
|
930
|
-
// Ownership-aware Actor remote-reply translator (spec 32:81-118, 99-103):
|
|
931
|
-
// the reply comes from a remote target, so a fine framework failure code
|
|
932
|
-
// refines the coarse terminal, and a terminal-only conflict/busy is the
|
|
933
|
-
// target's owner/queue state (retryable stale/Unavailable), never a
|
|
934
|
-
// source-owned queue exhaustion. Backpressure never appears on this reply
|
|
935
|
-
// path. Internal kinds are preserved so the stale-actor re-resolve retry
|
|
936
|
-
// (isStaleActorError) keeps working.
|
|
937
|
-
function actorFailureCodeKind(failureErrno: number): ZLinkFrameworkInternalErrorKind | undefined {
|
|
938
|
-
switch (failureErrno) {
|
|
939
|
-
case 3:
|
|
940
|
-
return ZLinkFrameworkInternalErrorKind.ActorAlreadyExists;
|
|
941
|
-
case 4:
|
|
942
|
-
return ZLinkFrameworkInternalErrorKind.ActorTypeMismatch;
|
|
943
|
-
case 7:
|
|
944
|
-
return ZLinkFrameworkInternalErrorKind.SpotTypeMismatch;
|
|
945
|
-
case 8:
|
|
946
|
-
return ZLinkFrameworkInternalErrorKind.ActorSessionNotBound;
|
|
947
|
-
case 9:
|
|
948
|
-
case 14:
|
|
949
|
-
return ZLinkFrameworkInternalErrorKind.RequestTargetNotFound;
|
|
950
|
-
case 12:
|
|
951
|
-
case 16:
|
|
952
|
-
return ZLinkFrameworkInternalErrorKind.RequestProtocolError;
|
|
953
|
-
// routeNotConnected(13) and a remote worker queue full(18) are Unavailable.
|
|
954
|
-
case 13:
|
|
955
|
-
case 18:
|
|
956
|
-
return ZLinkFrameworkInternalErrorKind.RouteNotConnected;
|
|
957
|
-
case 15:
|
|
958
|
-
return ZLinkFrameworkInternalErrorKind.RequestRejected;
|
|
959
|
-
case 19:
|
|
960
|
-
return ZLinkFrameworkInternalErrorKind.WorkerTimedOut;
|
|
961
|
-
case 17:
|
|
962
|
-
return ZLinkFrameworkInternalErrorKind.RequestFailed;
|
|
963
|
-
case 20:
|
|
964
|
-
return ZLinkFrameworkInternalErrorKind.WorkerFailed;
|
|
965
|
-
case 21:
|
|
966
|
-
return ZLinkFrameworkInternalErrorKind.ActorLocationStale;
|
|
967
|
-
case 33:
|
|
968
|
-
return ZLinkFrameworkInternalErrorKind.ActorGenerationStale;
|
|
969
|
-
case 34:
|
|
970
|
-
return ZLinkFrameworkInternalErrorKind.ActorMoving;
|
|
971
|
-
case 35:
|
|
972
|
-
return ZLinkFrameworkInternalErrorKind.RelocationDataLost;
|
|
973
|
-
default:
|
|
974
|
-
return undefined;
|
|
975
|
-
}
|
|
976
|
-
}
|
|
977
|
-
|
|
978
855
|
function actorTerminalKind(result: number): ZLinkFrameworkInternalErrorKind {
|
|
979
856
|
switch (result) {
|
|
980
857
|
case RequestResult.TimedOut:
|
|
@@ -990,7 +867,7 @@ function actorTerminalKind(result: number): ZLinkFrameworkInternalErrorKind {
|
|
|
990
867
|
case RequestResult.NotConnected:
|
|
991
868
|
return ZLinkFrameworkInternalErrorKind.RouteNotConnected;
|
|
992
869
|
// A terminal-only conflict/busy on a remote actor reply is the target's
|
|
993
|
-
// stale/owner state:
|
|
870
|
+
// stale/owner state: ActorLocationStale (Unavailable).
|
|
994
871
|
case RequestResult.Conflict:
|
|
995
872
|
case RequestResult.Busy:
|
|
996
873
|
return ZLinkFrameworkInternalErrorKind.ActorLocationStale;
|
|
@@ -999,8 +876,11 @@ function actorTerminalKind(result: number): ZLinkFrameworkInternalErrorKind {
|
|
|
999
876
|
}
|
|
1000
877
|
}
|
|
1001
878
|
|
|
879
|
+
// The shared table preserves Actor fine kinds; without a recognized fine code,
|
|
880
|
+
// the remote owner/queue terminal supplies the classification.
|
|
1002
881
|
function mapRequestResult(result: number, failureErrno: number, operationName: string): Error {
|
|
1003
|
-
const kind =
|
|
882
|
+
const kind =
|
|
883
|
+
internalFrameworkErrorKindFromWireFailureCode(failureErrno) ?? actorTerminalKind(result);
|
|
1004
884
|
return createInternalFrameworkException(
|
|
1005
885
|
kind,
|
|
1006
886
|
`${operationName} failed with request result ${result}` +
|
|
@@ -1008,13 +888,6 @@ function mapRequestResult(result: number, failureErrno: number, operationName: s
|
|
|
1008
888
|
);
|
|
1009
889
|
}
|
|
1010
890
|
|
|
1011
|
-
function mapRequestError(
|
|
1012
|
-
error: { readonly result: number; readonly failureErrno?: number },
|
|
1013
|
-
operationName: string
|
|
1014
|
-
): Error {
|
|
1015
|
-
return mapRequestResult(error.result, error.failureErrno ?? 0, operationName);
|
|
1016
|
-
}
|
|
1017
|
-
|
|
1018
891
|
function routeNotConnected(message: string, cause?: unknown): ZLinkFrameworkException {
|
|
1019
892
|
return createInternalFrameworkException(
|
|
1020
893
|
ZLinkFrameworkInternalErrorKind.RouteNotConnected,
|