@zlink-systems/framework 0.25.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +5 -0
- package/dist/internal.js +16 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +28 -0
- package/dist/runtime/activation-admission.js +57 -0
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +42 -143
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +19 -17
- package/dist/runtime/actors/actor-handoff.d.ts +13 -7
- package/dist/runtime/actors/actor-handoff.js +36 -25
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +85 -123
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
- package/dist/runtime/actors/actor-remote-joiner.js +11 -17
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
- package/dist/runtime/actors/actor-request-deadline.js +31 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
- package/dist/runtime/actors/deferred-join-completion.js +21 -0
- package/dist/runtime/actors/index.d.ts +10 -8
- package/dist/runtime/actors/index.js +101 -73
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +7 -1
- package/dist/runtime/admission.js +11 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +8 -33
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
- package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -9
- package/dist/runtime/channels/channel-clients.js +68 -60
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.js +47 -29
- package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
- package/dist/runtime/channels/channel-outbound-operations.js +9 -18
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
- package/dist/runtime/channels/channel-runtime-manager.js +4 -12
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
- package/dist/runtime/channels/channel-socket-registry.js +296 -235
- package/dist/runtime/channels/channel-transports.d.ts +11 -20
- package/dist/runtime/channels/channel-transports.js +68 -47
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +133 -81
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.js +3 -2
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +22 -9
- package/dist/runtime/execution/index.js +107 -37
- package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
- package/dist/runtime/execution/serial-execution-queue.js +99 -26
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/listener-records.d.ts +11 -0
- package/dist/runtime/foundation/listener-records.js +20 -0
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
- package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
- package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
- package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
- package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
- package/dist/runtime/foundation/service-topology-registry.js +22 -61
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
- package/dist/runtime/host/actor-packet-relay.js +48 -91
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
- package/dist/runtime/host/actor-transfer-runtime.js +210 -256
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +19 -14
- package/dist/runtime/host/index.js +234 -175
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +11 -23
- package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
- package/dist/runtime/host/route-mesh-runtime.js +178 -257
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
- package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
- package/dist/runtime/host/spot-address-transport.d.ts +2 -3
- package/dist/runtime/host/spot-address-transport.js +34 -136
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
- package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
- package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
- package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +5 -10
- package/dist/runtime/locations/lifecycle.js +4 -33
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +303 -332
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +44 -30
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
- package/dist/runtime/locations/spot-location-claims.js +40 -23
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/submission-result.d.ts +3 -0
- package/dist/runtime/messaging/submission-result.js +48 -0
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
- package/dist/runtime/spots/index.d.ts +29 -29
- package/dist/runtime/spots/index.js +441 -313
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
- package/dist/runtime/spots/spot-activation-registry.js +27 -60
- package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
- package/dist/runtime/spots/spot-activation-state.js +4 -17
- package/dist/runtime/spots/spot-activation.d.ts +10 -9
- package/dist/runtime/spots/spot-activation.js +103 -81
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
- package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
- package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
- package/dist/runtime/spots/spot-actor-membership.js +44 -53
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-entry-activation.js +9 -21
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +6 -5
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
- package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +10 -37
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
- package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
- package/dist/runtime/spots/spot-serial-executor.js +9 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
- package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
- package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -19
- package/dist/runtime/streams/index.d.ts +15 -14
- package/dist/runtime/streams/index.js +38 -39
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +17 -8
- package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +1 -1
- package/dist/runtime/streams/session-calls.js +5 -4
- package/dist/runtime/streams/session-context.d.ts +6 -6
- package/dist/runtime/streams/session-context.js +22 -4
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/session-serial-executor.js +2 -2
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- package/src/internal.ts +15 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +72 -0
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +77 -204
- package/src/runtime/actors/actor-context.ts +45 -39
- package/src/runtime/actors/actor-handoff.ts +55 -45
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +174 -215
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +15 -36
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/actor-source-transfer.ts +5 -18
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +44 -0
- package/src/runtime/actors/index.ts +122 -88
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +13 -2
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +15 -42
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
- package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
- package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
- package/src/runtime/backend/raw-binding-port.ts +14 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +58 -29
- package/src/runtime/channels/channel-outbound-operations.ts +10 -31
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +8 -15
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +369 -262
- package/src/runtime/channels/channel-transports.ts +161 -115
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +175 -106
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +5 -2
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +116 -38
- package/src/runtime/execution/serial-execution-queue.ts +179 -34
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/listener-records.ts +21 -0
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
- package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
- package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
- package/src/runtime/foundation/service-topology-registry.ts +30 -79
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +57 -147
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +266 -418
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +408 -312
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +12 -44
- package/src/runtime/host/route-mesh-runtime.ts +236 -275
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
- package/src/runtime/host/spot-address-transport.ts +73 -195
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
- package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
- package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +16 -45
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +450 -478
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +90 -58
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +54 -26
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/submission-result.ts +57 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
- package/src/runtime/spots/index.ts +687 -437
- package/src/runtime/spots/spot-activation-registry.ts +42 -71
- package/src/runtime/spots/spot-activation-state.ts +4 -16
- package/src/runtime/spots/spot-activation.ts +167 -115
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
- package/src/runtime/spots/spot-actor-membership.ts +107 -75
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -33
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +29 -21
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
- package/src/runtime/spots/spot-outbound.ts +47 -68
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +10 -43
- package/src/runtime/spots/spot-serial-executor.ts +10 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +23 -37
- package/src/runtime/streams/index.ts +102 -88
- package/src/runtime/streams/managed-stream.ts +29 -10
- package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +6 -5
- package/src/runtime/streams/session-context.ts +54 -10
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/session-serial-executor.ts +2 -2
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
- package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -1,29 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkStreamSessionNodeRuntime = exports.ZLinkStreamSessionRuntime = void 0;
|
|
4
|
-
const
|
|
5
|
-
const internal_event_contracts_1 = require("../diagnostics/internal-event-contracts");
|
|
4
|
+
const Registration_1 = require("../../contracts/Configuration/Registration");
|
|
6
5
|
const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
|
|
7
6
|
const abort_1 = require("../abort");
|
|
7
|
+
const admission_1 = require("../admission");
|
|
8
|
+
const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
|
|
8
9
|
const channels_1 = require("../channels");
|
|
9
|
-
const bound_session_response_target_1 = require("./bound-session-response-target");
|
|
10
10
|
const diagnostics_1 = require("../diagnostics");
|
|
11
|
-
const payload_codec_1 = require("../messaging/payload-codec");
|
|
12
|
-
const protocol_1 = require("./protocol");
|
|
13
11
|
const flow_context_1 = require("../diagnostics/flow-context");
|
|
12
|
+
const internal_event_contracts_1 = require("../diagnostics/internal-event-contracts");
|
|
13
|
+
const runtime_metrics_1 = require("../diagnostics/runtime-metrics");
|
|
14
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
15
|
+
const payload_codec_1 = require("../messaging/payload-codec");
|
|
16
|
+
const bound_session_response_target_1 = require("./bound-session-response-target");
|
|
14
17
|
const managed_stream_1 = require("./managed-stream");
|
|
18
|
+
const protocol_1 = require("./protocol");
|
|
15
19
|
const session_context_1 = require("./session-context");
|
|
16
20
|
const session_serial_executor_1 = require("./session-serial-executor");
|
|
17
21
|
const stream_message_utils_1 = require("./stream-message-utils");
|
|
18
|
-
const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
|
|
19
|
-
const application_job_queue_scope_2 = require("../application-jobs/application-job-queue-scope");
|
|
20
22
|
const ZLINK_SEND_DONT_WAIT = 1;
|
|
21
23
|
const ZLINK_RECV_DONT_WAIT = 1;
|
|
22
24
|
const ZLINK_STREAM_HEARTBEAT_INTERVAL_MS = 1_000;
|
|
23
25
|
const ZLINK_STREAM_HEARTBEAT_TIMEOUT_MS = 5_000;
|
|
24
26
|
const ZLINK_STREAM_APPLICATION_IDLE_TIMEOUT_MS = 30_000;
|
|
25
27
|
const ZLINK_STREAM_RECEIVE_FRAME_BATCH_LIMIT = 64;
|
|
26
|
-
const ZLINK_STREAM_ACTOR_BINDING_REPLACEMENT_CALLBACK_TIMEOUT_MS = 30_000;
|
|
27
28
|
const ZLINK_STREAM_ACTOR_BINDING_REPLACEMENT_CLOSE_DELAY_MS = 100;
|
|
28
29
|
const ZLINK_STREAM_MONITOR_IDLE_MIN_DELAY_MS = 1;
|
|
29
30
|
const ZLINK_STREAM_MONITOR_IDLE_MAX_DELAY_MS = 20;
|
|
@@ -69,7 +70,7 @@ class ZLinkStreamSessionRuntime {
|
|
|
69
70
|
metricsClosed = false;
|
|
70
71
|
livenessClock;
|
|
71
72
|
lastApplicationActivityAt = 0;
|
|
72
|
-
|
|
73
|
+
lastInboundFrameAt = 0;
|
|
73
74
|
livenessTimer;
|
|
74
75
|
constructor(options, routingId, removeSession = () => { }) {
|
|
75
76
|
this.options = options;
|
|
@@ -114,6 +115,7 @@ class ZLinkStreamSessionRuntime {
|
|
|
114
115
|
this.serial.executeInfrastructure(async () => this.markConnected(localAddr, remoteAddr));
|
|
115
116
|
}
|
|
116
117
|
enqueuePacket(payload, decodedHeader, terminalOwner, applicationJobPermit) {
|
|
118
|
+
this.lastInboundFrameAt = Math.max(this.lastInboundFrameAt, this.livenessClock.now());
|
|
117
119
|
let terminalReleased = false;
|
|
118
120
|
const releaseTerminal = () => {
|
|
119
121
|
if (terminalReleased)
|
|
@@ -248,7 +250,7 @@ class ZLinkStreamSessionRuntime {
|
|
|
248
250
|
}
|
|
249
251
|
forcedClose = true;
|
|
250
252
|
void this.close().catch((error) => this.options.onError?.(error));
|
|
251
|
-
}, this.options.replacementCallbackTimeoutMs ??
|
|
253
|
+
}, this.options.replacementCallbackTimeoutMs ?? Registration_1.DEFAULT_SESSION_REPLACEMENT_CALLBACK_TIMEOUT_MS);
|
|
252
254
|
const callback = session.onActorBindingReplaced;
|
|
253
255
|
if (callback === undefined) {
|
|
254
256
|
completeCallback();
|
|
@@ -309,10 +311,12 @@ class ZLinkStreamSessionRuntime {
|
|
|
309
311
|
return;
|
|
310
312
|
}
|
|
311
313
|
this.connected = true;
|
|
312
|
-
|
|
314
|
+
const connectedAt = this.livenessClock.now();
|
|
315
|
+
this.lastApplicationActivityAt = connectedAt;
|
|
316
|
+
this.lastInboundFrameAt = Math.max(this.lastInboundFrameAt, connectedAt);
|
|
313
317
|
this.scheduleLivenessCheck();
|
|
314
|
-
this.options.metrics?.change(
|
|
315
|
-
this.options.metrics?.count(
|
|
318
|
+
this.options.metrics?.change(runtime_metrics_1.METRIC_NAMES.StreamConnectionsActive, 1, { transport: 'tcp' });
|
|
319
|
+
this.options.metrics?.count(runtime_metrics_1.METRIC_NAMES.StreamConnectionsOpened, 1, { transport: 'tcp' });
|
|
316
320
|
const session = await this.requireSession();
|
|
317
321
|
await session.onConnected?.(this.context);
|
|
318
322
|
}
|
|
@@ -389,7 +393,7 @@ class ZLinkStreamSessionRuntime {
|
|
|
389
393
|
correlationId: streamCorr,
|
|
390
394
|
sourceRid: this.context.routingId === undefined ? undefined : String(this.context.routingId)
|
|
391
395
|
});
|
|
392
|
-
(0,
|
|
396
|
+
(0, application_job_queue_scope_1.releaseApplicationJobPermitBeforeHandler)();
|
|
393
397
|
(0, diagnostics_1.flowIfEnabled)(this.options.dispatchErrors?.flow, ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dispatched)?.trace({
|
|
394
398
|
outcome: ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dispatched,
|
|
395
399
|
surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.StreamSession,
|
|
@@ -450,7 +454,6 @@ class ZLinkStreamSessionRuntime {
|
|
|
450
454
|
return;
|
|
451
455
|
}
|
|
452
456
|
if (header.name === protocol_1.ZLINK_STREAM_HEARTBEAT_PONG) {
|
|
453
|
-
this.awaitingPongSince = undefined;
|
|
454
457
|
return;
|
|
455
458
|
}
|
|
456
459
|
if (header.name === protocol_1.ZLINK_STREAM_HEARTBEAT_PING) {
|
|
@@ -477,13 +480,11 @@ class ZLinkStreamSessionRuntime {
|
|
|
477
480
|
await this.closeForLiveness(protocol_1.ZLinkStreamCloseReasonCode.IdleTimeout, 'idle_timeout', 'Application idle timeout.');
|
|
478
481
|
return;
|
|
479
482
|
}
|
|
480
|
-
if (this.
|
|
481
|
-
now - this.awaitingPongSince >= ZLINK_STREAM_HEARTBEAT_TIMEOUT_MS) {
|
|
483
|
+
if (now - this.lastInboundFrameAt >= ZLINK_STREAM_HEARTBEAT_TIMEOUT_MS) {
|
|
482
484
|
await this.closeForLiveness(protocol_1.ZLinkStreamCloseReasonCode.HeartbeatTimeout, 'heartbeat_timeout', 'Heartbeat timeout.');
|
|
483
485
|
return;
|
|
484
486
|
}
|
|
485
487
|
await this.stream.writeControl(protocol_1.ZLINK_STREAM_HEARTBEAT_PING);
|
|
486
|
-
this.awaitingPongSince ??= now;
|
|
487
488
|
this.scheduleLivenessCheck();
|
|
488
489
|
}
|
|
489
490
|
async closeForLiveness(reason, closeReason, diagnostic) {
|
|
@@ -592,8 +593,8 @@ class ZLinkStreamSessionRuntime {
|
|
|
592
593
|
async cleanup() {
|
|
593
594
|
if (this.connected && !this.metricsClosed) {
|
|
594
595
|
this.metricsClosed = true;
|
|
595
|
-
this.options.metrics?.change(
|
|
596
|
-
this.options.metrics?.count(
|
|
596
|
+
this.options.metrics?.change(runtime_metrics_1.METRIC_NAMES.StreamConnectionsActive, -1, { transport: 'tcp' });
|
|
597
|
+
this.options.metrics?.count(runtime_metrics_1.METRIC_NAMES.StreamConnectionsClosed, 1, {
|
|
597
598
|
transport: 'tcp',
|
|
598
599
|
close_reason: normalizeStreamCloseReason(this.closeReason)
|
|
599
600
|
});
|
|
@@ -688,7 +689,6 @@ class ZLinkStreamSessionNodeRuntime {
|
|
|
688
689
|
unaddressedMonitorSessions = [];
|
|
689
690
|
unaddressedMonitorSessionHead = 0;
|
|
690
691
|
unaddressedMonitorSessionCount = 0;
|
|
691
|
-
disconnectedEndpoints = new Set();
|
|
692
692
|
pendingEndpointlessDisconnect;
|
|
693
693
|
activityVersion = 0;
|
|
694
694
|
stopped = false;
|
|
@@ -945,18 +945,13 @@ class ZLinkStreamSessionNodeRuntime {
|
|
|
945
945
|
}
|
|
946
946
|
switch (event.nativeEvent) {
|
|
947
947
|
case internal_event_contracts_1.ZLinkSocketNativeEventType.ConnectionReady:
|
|
948
|
+
if (!event.readyEdge)
|
|
949
|
+
return;
|
|
948
950
|
this.activityVersion += 1;
|
|
949
|
-
{
|
|
950
|
-
const endpointKey = streamMonitorEndpointKey(event.localAddr, event.remoteAddr);
|
|
951
|
-
if (this.disconnectedEndpoints.delete(endpointKey)) {
|
|
952
|
-
return;
|
|
953
|
-
}
|
|
954
|
-
}
|
|
955
951
|
if (event.routingId === undefined) {
|
|
956
952
|
const endpointKey = streamMonitorEndpointKey(event.localAddr, event.remoteAddr);
|
|
957
953
|
const unaddressed = this.firstUnaddressedSession();
|
|
958
954
|
if (unaddressed !== undefined) {
|
|
959
|
-
this.disconnectedEndpoints.delete(endpointKey);
|
|
960
955
|
unaddressed.enqueueConnected(event.localAddr, event.remoteAddr);
|
|
961
956
|
this.enqueueUnaddressedMonitorSession(unaddressed.stream.sessionId);
|
|
962
957
|
return;
|
|
@@ -976,7 +971,6 @@ class ZLinkStreamSessionNodeRuntime {
|
|
|
976
971
|
case internal_event_contracts_1.ZLinkSocketNativeEventType.Disconnected:
|
|
977
972
|
{
|
|
978
973
|
const endpointKey = streamMonitorEndpointKey(event.localAddr, event.remoteAddr);
|
|
979
|
-
this.disconnectedEndpoints.add(endpointKey);
|
|
980
974
|
this.removePendingConnectionMetadata(endpointKey);
|
|
981
975
|
const session = this.resolveMonitorSession(event);
|
|
982
976
|
const error = new Error(`Stream disconnected: ${event.nativeEvent}/${event.value}`);
|
|
@@ -1035,8 +1029,7 @@ class ZLinkStreamSessionNodeRuntime {
|
|
|
1035
1029
|
this.pendingConnectionMetadata.length = 0;
|
|
1036
1030
|
this.pendingConnectionMetadataHead = 0;
|
|
1037
1031
|
}
|
|
1038
|
-
else if (this.pendingConnectionMetadataHead
|
|
1039
|
-
this.pendingConnectionMetadataHead * 2 >= this.pendingConnectionMetadata.length) {
|
|
1032
|
+
else if ((0, admission_1.shouldCompactBackingArray)(this.pendingConnectionMetadataHead, this.pendingConnectionMetadata.length)) {
|
|
1040
1033
|
this.pendingConnectionMetadata.splice(0, this.pendingConnectionMetadataHead);
|
|
1041
1034
|
this.pendingConnectionMetadataHead = 0;
|
|
1042
1035
|
}
|
|
@@ -1060,8 +1053,7 @@ class ZLinkStreamSessionNodeRuntime {
|
|
|
1060
1053
|
this.unaddressedMonitorSessions.length = 0;
|
|
1061
1054
|
this.unaddressedMonitorSessionHead = 0;
|
|
1062
1055
|
}
|
|
1063
|
-
else if (this.unaddressedMonitorSessionHead
|
|
1064
|
-
this.unaddressedMonitorSessionHead * 2 >= this.unaddressedMonitorSessions.length) {
|
|
1056
|
+
else if ((0, admission_1.shouldCompactBackingArray)(this.unaddressedMonitorSessionHead, this.unaddressedMonitorSessions.length)) {
|
|
1065
1057
|
this.unaddressedMonitorSessions.splice(0, this.unaddressedMonitorSessionHead);
|
|
1066
1058
|
this.unaddressedMonitorSessionHead = 0;
|
|
1067
1059
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type
|
|
1
|
+
import { type ZLinkWorkerCall } from '../../contracts';
|
|
2
|
+
import { type ZLinkWorkerOptions } from '../configuration';
|
|
3
3
|
export type ZLinkCpuWorkerWork<T> = (signal: AbortSignal) => T;
|
|
4
4
|
export type ZLinkIoWorkerWork<T> = (signal: AbortSignal) => Promise<T>;
|
|
5
5
|
export interface ZLinkWorkerRuntimeOptions {
|
|
@@ -3,12 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DefaultZLinkWorkerCall = exports.ZLinkWorkerRuntime = void 0;
|
|
4
4
|
exports.resolveWorkerRuntimeOptions = resolveWorkerRuntimeOptions;
|
|
5
5
|
exports.deliverOnSerial = deliverOnSerial;
|
|
6
|
-
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
7
6
|
const node_worker_threads_1 = require("node:worker_threads");
|
|
8
|
-
const configuration_1 = require("../configuration");
|
|
9
7
|
const InternalDefaults_1 = require("../../contracts/Configuration/InternalDefaults");
|
|
10
8
|
const abort_1 = require("../abort");
|
|
9
|
+
const admission_1 = require("../admission");
|
|
10
|
+
const configuration_1 = require("../configuration");
|
|
11
11
|
const execution_1 = require("../execution");
|
|
12
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
12
13
|
function resolveWorkerRuntimeOptions(options) {
|
|
13
14
|
const resolved = {
|
|
14
15
|
minThreads: options?.minThreads ?? InternalDefaults_1.DEFAULT_WORKER_MIN_THREADS,
|
|
@@ -264,7 +265,7 @@ class ZLinkCpuWorkerPool {
|
|
|
264
265
|
this.queue.length = 0;
|
|
265
266
|
this.queueHead = 0;
|
|
266
267
|
}
|
|
267
|
-
else if (
|
|
268
|
+
else if ((0, admission_1.shouldCompactBackingArray)(this.queueHead, this.queue.length)) {
|
|
268
269
|
this.queue.splice(0, this.queueHead);
|
|
269
270
|
this.queueHead = 0;
|
|
270
271
|
}
|
|
@@ -284,7 +285,7 @@ class ZLinkCpuWorkerPool {
|
|
|
284
285
|
while (this.queueHead < this.queue.length && this.queue[this.queueHead] === undefined) {
|
|
285
286
|
this.queueHead += 1;
|
|
286
287
|
}
|
|
287
|
-
if (
|
|
288
|
+
if ((0, admission_1.shouldCompactBackingArray)(this.queueHead, this.queue.length)) {
|
|
288
289
|
this.queue.splice(0, this.queueHead);
|
|
289
290
|
this.queueHead = 0;
|
|
290
291
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zlink-systems/framework",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.0",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@opentelemetry/api": "^1.9.1",
|
|
21
21
|
"@opentelemetry/api-logs": "^0.221.0",
|
|
22
|
-
"@zlink-systems/stream-wire": "0.
|
|
23
|
-
"@zlink-systems/zlink": "1.
|
|
22
|
+
"@zlink-systems/stream-wire": "0.27.0",
|
|
23
|
+
"@zlink-systems/zlink": "1.14.0"
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import type { ZLinkFanoutPublishCall } from './Calls';
|
|
2
2
|
|
|
3
|
-
export interface ZLinkFanoutListenerStatus {
|
|
4
|
-
readonly channelName: string;
|
|
5
|
-
readonly endpoint: string;
|
|
6
|
-
readonly observedAt: Date;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
3
|
export interface ZLinkFanoutClient {
|
|
10
4
|
publish(channelName: string, event: unknown): ZLinkFanoutPublishCall;
|
|
11
5
|
publish(channelName: string, topic: string, event: unknown): ZLinkFanoutPublishCall;
|
|
12
|
-
getListenerStatus(channelName: string): ZLinkFanoutListenerStatus;
|
|
13
6
|
}
|
|
@@ -4,3 +4,10 @@ export type RoutingId = string;
|
|
|
4
4
|
export type ActorId = string;
|
|
5
5
|
/** Global logical Spot identity. It is not a transport RoutingId. */
|
|
6
6
|
export type SpotId = string;
|
|
7
|
+
|
|
8
|
+
export const ZLINK_MAX_ACTOR_ID_BYTES = 255;
|
|
9
|
+
export const ZLINK_MAX_SPOT_ID_BYTES = 255;
|
|
10
|
+
export const ZLINK_MAX_ROUTING_ID_BYTES = 255;
|
|
11
|
+
export const ZLINK_MAX_STABLE_TYPE_BYTES = 255;
|
|
12
|
+
export const ZLINK_MAX_MESH_NAME_BYTES = 255;
|
|
13
|
+
export const ZLINK_MAX_IDENTITY_TEXT_BYTES = 255;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from './ActorRef';
|
|
2
|
-
export
|
|
2
|
+
export type { Type, RoutingId, ActorId, SpotId } from './CoreTypes';
|
|
3
3
|
export * from './ZLinkEncodedPayload';
|
|
4
4
|
export * from './ZLinkMessageMetadata';
|
|
5
5
|
export { ZLinkMessage, isZLinkMessage } from './ZLinkMessage';
|
|
@@ -3,6 +3,12 @@ import * as os from 'node:os';
|
|
|
3
3
|
/** Default complete header plus payload size accepted by a StreamNode. */
|
|
4
4
|
export const DEFAULT_STREAM_NODE_MAX_MESSAGE_SIZE = 64 * 1024;
|
|
5
5
|
|
|
6
|
+
/** service-wire 스키마가 정한 relocation chunk payload의 바이트 상한입니다. */
|
|
7
|
+
export const RELOCATION_STATE_CHUNK_DATA_MAX_BYTES = 67_108_864;
|
|
8
|
+
|
|
9
|
+
/** Default MeshNode pending activation limit (spec 03-mesh-node §5.1). */
|
|
10
|
+
export const DEFAULT_ACTIVATION_CONCURRENCY_LIMIT = 128;
|
|
11
|
+
|
|
6
12
|
/** Defaults shared by registration normalization and the runtime worker pool. */
|
|
7
13
|
export const DEFAULT_WORKER_MIN_THREADS = 0;
|
|
8
14
|
export const DEFAULT_WORKER_IDLE_TIMEOUT_MS = 30_000;
|
|
@@ -10,3 +16,9 @@ export const DEFAULT_WORKER_IDLE_TIMEOUT_MS = 30_000;
|
|
|
10
16
|
export function defaultWorkerMaxThreads(): number {
|
|
11
17
|
return Math.max(2, os.availableParallelism());
|
|
12
18
|
}
|
|
19
|
+
|
|
20
|
+
export const ZLINK_RELOCATION_MAX_BLOB_REFERENCE_BYTES = 4096;
|
|
21
|
+
|
|
22
|
+
export const AUTHORITY_ENVELOPE_MAX_BYTES = 1024 * 1024;
|
|
23
|
+
export const CREATION_INTENT_MAX_BYTES = 1024 * 1024;
|
|
24
|
+
export const CREATION_TERMINAL_ENVELOPE_MAX_BYTES = 1024 * 1024;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { AutoHwmProfile } from '@zlink-systems/zlink';
|
|
1
2
|
import type { ZLinkFrameworkOptions } from '../../contracts';
|
|
3
|
+
import { ZLINK_MAX_IDENTITY_TEXT_BYTES } from '../Common/CoreTypes';
|
|
2
4
|
import { ZLinkApplicationJobQueueProfile } from '../Dispatch';
|
|
3
|
-
|
|
5
|
+
import { zlinkDefaultLocationOptions } from '../Locations/Options';
|
|
4
6
|
import { createFrameworkOptions } from './RegistrationBuilders';
|
|
5
|
-
export { createFrameworkOptions } from './RegistrationBuilders';
|
|
6
7
|
import { createCodecRegistry } from './RegistrationCodecRegistry';
|
|
7
8
|
import {
|
|
8
9
|
actorFactoriesFromSpotNodes,
|
|
@@ -19,18 +20,22 @@ import {
|
|
|
19
20
|
toSpotPublisherClientSet,
|
|
20
21
|
toStreamNodeMap
|
|
21
22
|
} from './RegistrationNormalizers';
|
|
23
|
+
import type {
|
|
24
|
+
ZLinkFrameworkRegistration,
|
|
25
|
+
ZLinkFrameworkRegistrationOptions
|
|
26
|
+
} from './RegistrationTypes';
|
|
27
|
+
import { validateFrameworkRegistration } from './RegistrationValidators';
|
|
28
|
+
|
|
29
|
+
export const DEFAULT_REQUEST_TIMEOUT_MS = 30_000;
|
|
30
|
+
export { ZLinkConfigurationException } from './ConfigurationException';
|
|
31
|
+
export { createFrameworkOptions } from './RegistrationBuilders';
|
|
22
32
|
export {
|
|
23
33
|
hasActorManager,
|
|
24
34
|
hasSpotNode,
|
|
25
35
|
hasSpotPublisherClient,
|
|
26
36
|
requirePositiveInteger
|
|
27
37
|
} from './RegistrationNormalizers';
|
|
28
|
-
import type {
|
|
29
|
-
ZLinkFrameworkRegistration,
|
|
30
|
-
ZLinkFrameworkRegistrationOptions
|
|
31
|
-
} from './RegistrationTypes';
|
|
32
38
|
export * from './RegistrationTypes';
|
|
33
|
-
import { validateFrameworkRegistration } from './RegistrationValidators';
|
|
34
39
|
export { validateFrameworkRegistration };
|
|
35
40
|
export {
|
|
36
41
|
normalizeEndpoint,
|
|
@@ -38,11 +43,18 @@ export {
|
|
|
38
43
|
parseEndpointHostPort
|
|
39
44
|
} from './EndpointNotation';
|
|
40
45
|
|
|
41
|
-
const
|
|
42
|
-
const DEFAULT_SESSION_REPLACEMENT_CALLBACK_TIMEOUT_MS = 30_000;
|
|
46
|
+
export const DEFAULT_SESSION_REPLACEMENT_CALLBACK_TIMEOUT_MS = 30_000;
|
|
43
47
|
|
|
44
48
|
export function createFrameworkRegistration(
|
|
45
49
|
options: ZLinkFrameworkRegistrationOptions = {}
|
|
50
|
+
): ZLinkFrameworkRegistration {
|
|
51
|
+
const registration = normalizeFrameworkRegistration(options);
|
|
52
|
+
validateFrameworkRegistration(registration, options);
|
|
53
|
+
return registration;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function normalizeFrameworkRegistration(
|
|
57
|
+
options: ZLinkFrameworkRegistrationOptions
|
|
46
58
|
): ZLinkFrameworkRegistration {
|
|
47
59
|
const codecRegistry = createCodecRegistry(options.codecs);
|
|
48
60
|
const network = normalizeNetworkOptions(options.network);
|
|
@@ -66,7 +78,7 @@ export function createFrameworkRegistration(
|
|
|
66
78
|
messageFollowDurationMs: normalizeNonNegativeInteger(
|
|
67
79
|
options.messageFollowDurationMs,
|
|
68
80
|
'messageFollowDurationMs',
|
|
69
|
-
|
|
81
|
+
zlinkDefaultLocationOptions.messageFollowDurationMs
|
|
70
82
|
),
|
|
71
83
|
sessionReplacementCallbackTimeoutMs: normalizePositiveInteger(
|
|
72
84
|
options.sessionReplacementCallbackTimeoutMs,
|
|
@@ -94,53 +106,75 @@ export function createFrameworkRegistration(
|
|
|
94
106
|
applicationJobQueue: normalizeApplicationJobQueue(options.applicationJobQueue),
|
|
95
107
|
locations: normalizeLocationRegistration(options.locations)
|
|
96
108
|
};
|
|
97
|
-
validateFrameworkRegistration(registration, options);
|
|
98
109
|
return registration;
|
|
99
110
|
}
|
|
100
111
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
112
|
+
export const MAX_QUEUED_APPLICATION_JOBS = 2_147_483_647n;
|
|
113
|
+
export const DEFAULT_PAUSE_THRESHOLD_PERCENT = 80;
|
|
114
|
+
export const DEFAULT_RESUME_THRESHOLD_PERCENT = 60;
|
|
115
|
+
export const APPLICATION_JOB_QUEUE_PERCENT_SCALE = 100;
|
|
116
|
+
|
|
117
|
+
export function isKnownApplicationJobQueueProfile(
|
|
118
|
+
value: unknown
|
|
119
|
+
): value is ZLinkApplicationJobQueueProfile {
|
|
120
|
+
return Object.values(ZLinkApplicationJobQueueProfile).includes(
|
|
121
|
+
value as ZLinkApplicationJobQueueProfile
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export function validateApplicationJobQueueMaximum(
|
|
126
|
+
value: bigint | undefined,
|
|
127
|
+
createError: (message: string) => Error
|
|
128
|
+
): void {
|
|
109
129
|
if (
|
|
110
|
-
|
|
111
|
-
(typeof
|
|
112
|
-
maxQueuedApplicationJobs < 1n ||
|
|
113
|
-
maxQueuedApplicationJobs > 2_147_483_647n)
|
|
130
|
+
value !== undefined &&
|
|
131
|
+
(typeof value !== 'bigint' || value < 1n || value > MAX_QUEUED_APPLICATION_JOBS)
|
|
114
132
|
) {
|
|
115
|
-
throw
|
|
116
|
-
|
|
133
|
+
throw createError(
|
|
134
|
+
`maxQueuedApplicationJobs must be a bigint in the range 1..${MAX_QUEUED_APPLICATION_JOBS}.`
|
|
117
135
|
);
|
|
118
136
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export function validateApplicationJobQueuePressureThresholds(
|
|
140
|
+
pause: number,
|
|
141
|
+
resume: number,
|
|
142
|
+
createError: (message: string) => Error
|
|
143
|
+
): void {
|
|
144
|
+
if (!Number.isInteger(pause) || pause < 1 || pause > APPLICATION_JOB_QUEUE_PERCENT_SCALE) {
|
|
145
|
+
throw createError(
|
|
146
|
+
`pauseThresholdPercent must be an integer in the range 1..${APPLICATION_JOB_QUEUE_PERCENT_SCALE}.`
|
|
128
147
|
);
|
|
129
148
|
}
|
|
130
|
-
if (
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
resumeThresholdPercent > 99
|
|
134
|
-
) {
|
|
135
|
-
throw new TypeError(
|
|
136
|
-
'applicationJobQueue.resumeThresholdPercent must be an integer in the range 0..99.'
|
|
149
|
+
if (!Number.isInteger(resume) || resume < 0 || resume >= APPLICATION_JOB_QUEUE_PERCENT_SCALE) {
|
|
150
|
+
throw createError(
|
|
151
|
+
`resumeThresholdPercent must be an integer in the range 0..${APPLICATION_JOB_QUEUE_PERCENT_SCALE - 1}.`
|
|
137
152
|
);
|
|
138
153
|
}
|
|
139
|
-
if (
|
|
140
|
-
throw
|
|
141
|
-
'applicationJobQueue.resumeThresholdPercent must be less than pauseThresholdPercent.'
|
|
142
|
-
);
|
|
154
|
+
if (resume >= pause) {
|
|
155
|
+
throw createError('resumeThresholdPercent must be less than pauseThresholdPercent.');
|
|
143
156
|
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
function normalizeApplicationJobQueue(
|
|
160
|
+
value: ZLinkFrameworkRegistrationOptions['applicationJobQueue']
|
|
161
|
+
): NonNullable<ZLinkFrameworkRegistrationOptions['applicationJobQueue']> {
|
|
162
|
+
const profile = value?.profile ?? ZLinkApplicationJobQueueProfile.Balanced;
|
|
163
|
+
if (!isKnownApplicationJobQueueProfile(profile)) {
|
|
164
|
+
throw new TypeError('applicationJobQueue.profile must be a supported profile.');
|
|
165
|
+
}
|
|
166
|
+
const maxQueuedApplicationJobs = value?.maxQueuedApplicationJobs;
|
|
167
|
+
validateApplicationJobQueueMaximum(
|
|
168
|
+
maxQueuedApplicationJobs,
|
|
169
|
+
(message) => new TypeError(`applicationJobQueue.${message}`)
|
|
170
|
+
);
|
|
171
|
+
const pauseThresholdPercent = value?.pauseThresholdPercent ?? DEFAULT_PAUSE_THRESHOLD_PERCENT;
|
|
172
|
+
const resumeThresholdPercent = value?.resumeThresholdPercent ?? DEFAULT_RESUME_THRESHOLD_PERCENT;
|
|
173
|
+
validateApplicationJobQueuePressureThresholds(
|
|
174
|
+
pauseThresholdPercent,
|
|
175
|
+
resumeThresholdPercent,
|
|
176
|
+
(message) => new TypeError(`applicationJobQueue.${message}`)
|
|
177
|
+
);
|
|
144
178
|
return Object.freeze({
|
|
145
179
|
profile,
|
|
146
180
|
maxQueuedApplicationJobs,
|
|
@@ -154,7 +188,10 @@ function normalizeCoreHwm(
|
|
|
154
188
|
): ZLinkFrameworkRegistrationOptions['coreHwm'] {
|
|
155
189
|
if (value === undefined) return undefined;
|
|
156
190
|
const { profile, memoryLimitBytes, budgetBytes } = value;
|
|
157
|
-
if (
|
|
191
|
+
if (
|
|
192
|
+
profile !== undefined &&
|
|
193
|
+
(!Number.isInteger(profile) || profile < 0 || profile > AutoHwmProfile.Throughput)
|
|
194
|
+
) {
|
|
158
195
|
throw new TypeError('coreHwm.profile must be a Core Auto HWM profile value.');
|
|
159
196
|
}
|
|
160
197
|
for (const [name, bytes] of [
|
|
@@ -183,8 +220,15 @@ function normalizeApplicationVersion(value: bigint | undefined): bigint {
|
|
|
183
220
|
function normalizeMaintenanceWave(value: string | undefined): string | undefined {
|
|
184
221
|
if (value === undefined) return undefined;
|
|
185
222
|
const byteLength = typeof value === 'string' ? new TextEncoder().encode(value).byteLength : 0;
|
|
186
|
-
if (
|
|
187
|
-
|
|
223
|
+
if (
|
|
224
|
+
typeof value !== 'string' ||
|
|
225
|
+
byteLength === 0 ||
|
|
226
|
+
byteLength > ZLINK_MAX_IDENTITY_TEXT_BYTES ||
|
|
227
|
+
value.includes('\0')
|
|
228
|
+
) {
|
|
229
|
+
throw new TypeError(
|
|
230
|
+
`maintenanceWave must be a 1..${ZLINK_MAX_IDENTITY_TEXT_BYTES} byte UTF-8 string without NUL.`
|
|
231
|
+
);
|
|
188
232
|
}
|
|
189
233
|
return value;
|
|
190
234
|
}
|
|
@@ -1,5 +1,44 @@
|
|
|
1
|
-
import type { Type, ZLinkEntrySpot, ZLinkSpot } from '../../contracts';
|
|
1
|
+
import type { Type, ZLinkEntrySpot, ZLinkSpot, ZLinkRelocationStore } from '../../contracts';
|
|
2
|
+
import { ZLINK_MAX_ROUTING_ID_BYTES } from '../Common/CoreTypes';
|
|
2
3
|
import { ZLinkConfigurationException } from './ConfigurationException';
|
|
4
|
+
export const MAX_LISTENER_PORT = 65_535;
|
|
5
|
+
|
|
6
|
+
export function registerRelocationStore(
|
|
7
|
+
options: { relocationStoreInstance?: ZLinkRelocationStore },
|
|
8
|
+
store: ZLinkRelocationStore
|
|
9
|
+
): void {
|
|
10
|
+
if (options.relocationStoreInstance !== undefined) {
|
|
11
|
+
throw new ZLinkConfigurationException('Relocation Store is already registered.');
|
|
12
|
+
}
|
|
13
|
+
options.relocationStoreInstance = store;
|
|
14
|
+
}
|
|
15
|
+
export function isValidListenerPort(value: number): boolean {
|
|
16
|
+
return Number.isInteger(value) && value >= 0 && value <= MAX_LISTENER_PORT;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const ZLINK_MAX_CAPACITY = 0x7fff_ffff;
|
|
20
|
+
export function isValidPositiveCapacity(value: number): boolean {
|
|
21
|
+
return Number.isSafeInteger(value) && value > 0 && value <= ZLINK_MAX_CAPACITY;
|
|
22
|
+
}
|
|
23
|
+
export function isValidCapacity(value: number): boolean {
|
|
24
|
+
return Number.isSafeInteger(value) && value >= 0 && value <= ZLINK_MAX_CAPACITY;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export const ZLINK_DEFAULT_PUBLIC_WEIGHT = 100;
|
|
28
|
+
export const ZLINK_MAX_PUBLIC_WEIGHT = 10_000;
|
|
29
|
+
|
|
30
|
+
export function isValidPublicWeight(value: number): boolean {
|
|
31
|
+
return Number.isInteger(value) && value >= 0 && value <= ZLINK_MAX_PUBLIC_WEIGHT;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function requirePublicWeight(value: number, label: string): number {
|
|
35
|
+
if (!isValidPublicWeight(value)) {
|
|
36
|
+
throw new ZLinkConfigurationException(
|
|
37
|
+
`${label} must be an integer in 0..${ZLINK_MAX_PUBLIC_WEIGHT}.`
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
3
42
|
|
|
4
43
|
export function validateMessageFollowDuration(timeoutMs: number): number {
|
|
5
44
|
if (!Number.isSafeInteger(timeoutMs) || timeoutMs < 0) {
|
|
@@ -69,7 +108,10 @@ export function validateRoutingIdPrefix(prefix: string): string {
|
|
|
69
108
|
if (prefix.trim().length === 0 || prefix !== prefix.trim()) {
|
|
70
109
|
throw new ZLinkConfigurationException('Routing-id prefix must not be empty or padded.');
|
|
71
110
|
}
|
|
72
|
-
if (
|
|
111
|
+
if (
|
|
112
|
+
Buffer.byteLength(`${prefix}-00000000-0000-0000-0000-000000000000`, 'utf8') >
|
|
113
|
+
ZLINK_MAX_ROUTING_ID_BYTES
|
|
114
|
+
) {
|
|
73
115
|
throw new ZLinkConfigurationException(
|
|
74
116
|
'Routing-id prefix is too long for a generated routing id.'
|
|
75
117
|
);
|