@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,46 +1,65 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ZLinkFrameworkInternalErrorKind,
|
|
3
|
-
createInternalFrameworkException,
|
|
4
|
-
internalFrameworkErrorKind,
|
|
5
|
-
internalFrameworkErrorKindFromWireReply,
|
|
6
|
-
isCanonicalWireReplyTerminal
|
|
7
|
-
} from '../framework-errors-internal';
|
|
8
|
-
import { ZLinkBufferMessage } from '../backend/runtime-message';
|
|
9
|
-
import {
|
|
10
|
-
RequestResult,
|
|
11
|
-
SubmitResult,
|
|
12
|
-
isZLinkBackendResultError,
|
|
13
|
-
type ZLinkBackendMessageLike as MessageLike
|
|
14
|
-
} from '../backend/runtime-values';
|
|
15
|
-
import type { ZLinkBackendMeshNode, ZLinkBackendSpot } from '../backend/contracts';
|
|
16
|
-
import type { ZLinkFrameworkInternalErrorKind as ZLinkFrameworkInternalErrorKindType } from '../framework-errors-internal';
|
|
17
1
|
import { ZLinkFrameworkException } from '../../contracts';
|
|
18
|
-
import type { ZLinkFanoutListenerStatus } from '../../contracts';
|
|
19
2
|
import type { Message } from '../../contracts/Common/Message';
|
|
20
|
-
import {
|
|
21
|
-
import { ZLinkConfigurationException } from '../configuration';
|
|
22
|
-
import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
|
|
3
|
+
import { DEFAULT_REQUEST_TIMEOUT_MS } from '../../contracts/Configuration/Registration';
|
|
23
4
|
import { ZLinkSpotKind } from '../../contracts/Spots';
|
|
24
5
|
import { throwIfAborted } from '../abort';
|
|
25
|
-
import type {
|
|
6
|
+
import type { ZLinkBackendMeshNode, ZLinkBackendSpot } from '../backend/contracts';
|
|
26
7
|
import {
|
|
27
8
|
closeMeshCompletion,
|
|
28
9
|
type ZLinkMeshCompletion,
|
|
29
10
|
type ZLinkMeshCompletionTable
|
|
30
11
|
} from '../backend/mesh-completion-table';
|
|
31
|
-
import {
|
|
12
|
+
import { ZLinkBufferMessage } from '../backend/runtime-message';
|
|
32
13
|
import {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
type
|
|
36
|
-
|
|
37
|
-
} from '
|
|
14
|
+
RequestResult,
|
|
15
|
+
isZLinkBackendResultError,
|
|
16
|
+
type ZLinkBackendMessageLike as MessageLike
|
|
17
|
+
} from '../backend/runtime-values';
|
|
18
|
+
import { ZLinkConfigurationException } from '../configuration';
|
|
19
|
+
import type { ZLinkRuntimeMetrics } from '../diagnostics';
|
|
20
|
+
import { runWithOutboundFlow } from '../diagnostics/flow-context';
|
|
21
|
+
import { flowIfEnabled, type ZLinkMessageFlowTracer } from '../diagnostics';
|
|
22
|
+
import {
|
|
23
|
+
ZLinkDispatchErrorSurface,
|
|
24
|
+
ZLinkDispatchMessageKind,
|
|
25
|
+
ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome,
|
|
26
|
+
type ZLinkRuntimeMessageFlowResult
|
|
27
|
+
} from '../../contracts/Dispatch/ZLinkDispatchOptions';
|
|
28
|
+
import { isRemoteChannelErrorReply, requestTerminalResult } from './channel-outbound-operations';
|
|
29
|
+
import { ServiceStaleGenerationError } from '../foundation/service-stateful-registry';
|
|
38
30
|
import type {
|
|
39
31
|
ServiceDirectSpotRouteFence,
|
|
40
32
|
ServiceInstanceRouteFence
|
|
41
33
|
} from '../foundation/service-stateful-wire-codec';
|
|
42
|
-
import {
|
|
43
|
-
|
|
34
|
+
import {
|
|
35
|
+
type ZLinkFrameworkInternalErrorKind as ZLinkFrameworkInternalErrorKindType,
|
|
36
|
+
ZLinkFrameworkInternalErrorKind,
|
|
37
|
+
createInternalFrameworkException,
|
|
38
|
+
internalFrameworkErrorKind,
|
|
39
|
+
internalFrameworkErrorKindFromWireReply,
|
|
40
|
+
isCanonicalWireReplyTerminal,
|
|
41
|
+
requestResultToPublicErrorKind
|
|
42
|
+
} from '../framework-errors-internal';
|
|
43
|
+
|
|
44
|
+
import {
|
|
45
|
+
classifySubmitResult,
|
|
46
|
+
submitToRequestResult,
|
|
47
|
+
ZLinkSubmitStatus,
|
|
48
|
+
type ZLinkSubmitResult
|
|
49
|
+
} from '../messaging/submission-result';
|
|
50
|
+
import { routingIdsEqual, toBackendRoutingId } from '../routing-id';
|
|
51
|
+
import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
|
|
52
|
+
import type {
|
|
53
|
+
ZLinkSpotRoutedSendOptions,
|
|
54
|
+
ZLinkSpotRoutedRequestOptions
|
|
55
|
+
} from '../spots/spot-outbound';
|
|
56
|
+
import {
|
|
57
|
+
ZLinkChannelMessageKind,
|
|
58
|
+
decodeChannelReply,
|
|
59
|
+
encodeChannelEnvelopeParts,
|
|
60
|
+
newChannelCorrelationId,
|
|
61
|
+
type ZLinkChannelEnvelopeCodecRegistry
|
|
62
|
+
} from './channel-envelope';
|
|
44
63
|
|
|
45
64
|
export interface ZLinkChannelClientTransport {
|
|
46
65
|
send(
|
|
@@ -73,7 +92,6 @@ export interface ZLinkChannelClientTransport {
|
|
|
73
92
|
signal?: AbortSignal,
|
|
74
93
|
metadata?: ReadonlyMap<string, string>
|
|
75
94
|
): ZLinkSubmitResult | Promise<ZLinkSubmitResult>;
|
|
76
|
-
getFanoutListenerStatus?(channelName: string): ZLinkFanoutListenerStatus;
|
|
77
95
|
}
|
|
78
96
|
|
|
79
97
|
export type ZLinkChannelClientTransportSource =
|
|
@@ -187,7 +205,6 @@ interface ZLinkChannelTransportRuntime {
|
|
|
187
205
|
signal?: AbortSignal,
|
|
188
206
|
metadata?: ReadonlyMap<string, string>
|
|
189
207
|
): Promise<ZLinkSubmitResult>;
|
|
190
|
-
getFanoutListenerStatus(channelName: string): ZLinkFanoutListenerStatus;
|
|
191
208
|
canRouteChannel(routerChannelId: string): boolean;
|
|
192
209
|
canRoutePacketChannel(routerChannelId: string): boolean;
|
|
193
210
|
routeSubmit(
|
|
@@ -281,7 +298,8 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
281
298
|
parts: readonly MessageLike[]
|
|
282
299
|
) => ZLinkSubmitResult,
|
|
283
300
|
private readonly metrics?: ZLinkRuntimeMetrics,
|
|
284
|
-
private readonly flowCreationEnabled: () => boolean = () => true
|
|
301
|
+
private readonly flowCreationEnabled: () => boolean = () => true,
|
|
302
|
+
private readonly outboundFlow: () => ZLinkMessageFlowTracer | undefined = () => undefined
|
|
285
303
|
) {}
|
|
286
304
|
|
|
287
305
|
canRouteChannel(routerChannelId: string): boolean {
|
|
@@ -425,33 +443,92 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
425
443
|
metadata
|
|
426
444
|
);
|
|
427
445
|
}
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
446
|
+
const correlationId = newChannelCorrelationId();
|
|
447
|
+
try {
|
|
448
|
+
throwIfAborted(signal);
|
|
449
|
+
if (node.isObjectClientNodeDirectTarget?.(toBackendRoutingId(targetNodeRid)) === true) {
|
|
450
|
+
throw createInternalFrameworkException(
|
|
451
|
+
ZLinkFrameworkInternalErrorKind.RequestTargetNotFound,
|
|
452
|
+
`MeshNode '${meshName}' target '${targetNodeRid}' is an Object Client.`
|
|
453
|
+
);
|
|
454
|
+
}
|
|
455
|
+
const parts = this.encodeMessage(
|
|
456
|
+
ZLinkChannelMessageKind.Request,
|
|
457
|
+
meshName,
|
|
458
|
+
packetName,
|
|
459
|
+
request,
|
|
460
|
+
timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
|
|
461
|
+
metadata,
|
|
462
|
+
correlationId
|
|
463
|
+
);
|
|
464
|
+
const completion = await this.submitRequestOperation(
|
|
465
|
+
meshName,
|
|
466
|
+
timeoutMs,
|
|
467
|
+
signal,
|
|
468
|
+
`MeshNode '${meshName}' request to node '${targetNodeRid}'`,
|
|
469
|
+
(remainingTimeoutMs) => {
|
|
470
|
+
const operationId = node.requestToNode(toBackendRoutingId(targetNodeRid), parts, {
|
|
471
|
+
flags: 1,
|
|
472
|
+
timeoutMs: remainingTimeoutMs
|
|
473
|
+
});
|
|
474
|
+
this.traceNodeRequest(
|
|
475
|
+
ZLinkMessageFlowOutcome.Sent,
|
|
476
|
+
undefined,
|
|
477
|
+
meshName,
|
|
478
|
+
targetNodeRid,
|
|
479
|
+
packetName,
|
|
480
|
+
correlationId
|
|
481
|
+
);
|
|
482
|
+
return operationId;
|
|
483
|
+
}
|
|
484
|
+
);
|
|
485
|
+
const reply = this.decodeMeshReply<TReply>(meshName, completion);
|
|
486
|
+
this.traceNodeRequest(
|
|
487
|
+
ZLinkMessageFlowOutcome.ReplyReceived,
|
|
488
|
+
'succeeded',
|
|
489
|
+
meshName,
|
|
490
|
+
targetNodeRid,
|
|
491
|
+
packetName,
|
|
492
|
+
correlationId
|
|
433
493
|
);
|
|
494
|
+
return reply;
|
|
495
|
+
} catch (error) {
|
|
496
|
+
if (!isRemoteChannelErrorReply(error)) {
|
|
497
|
+
this.traceNodeRequest(
|
|
498
|
+
ZLinkMessageFlowOutcome.ReplyReceived,
|
|
499
|
+
requestTerminalResult(error, signal),
|
|
500
|
+
meshName,
|
|
501
|
+
targetNodeRid,
|
|
502
|
+
packetName,
|
|
503
|
+
correlationId,
|
|
504
|
+
error
|
|
505
|
+
);
|
|
506
|
+
}
|
|
507
|
+
throw error;
|
|
434
508
|
}
|
|
435
|
-
|
|
436
|
-
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
private traceNodeRequest(
|
|
512
|
+
outcome: ZLinkMessageFlowOutcome,
|
|
513
|
+
result: ZLinkRuntimeMessageFlowResult | undefined,
|
|
514
|
+
meshName: string,
|
|
515
|
+
targetRid: string,
|
|
516
|
+
packetName: string | undefined,
|
|
517
|
+
correlationId: string,
|
|
518
|
+
error?: unknown
|
|
519
|
+
): void {
|
|
520
|
+
if (!this.flowCreationEnabled()) return;
|
|
521
|
+
flowIfEnabled(this.outboundFlow(), outcome, result)?.trace({
|
|
522
|
+
outcome,
|
|
523
|
+
result,
|
|
524
|
+
surface: ZLinkDispatchErrorSurface.Node,
|
|
525
|
+
messageKind: ZLinkDispatchMessageKind.Request,
|
|
437
526
|
meshName,
|
|
527
|
+
targetRid,
|
|
438
528
|
packetName,
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
);
|
|
443
|
-
const completion = await this.submitRequestOperation(
|
|
444
|
-
meshName,
|
|
445
|
-
timeoutMs,
|
|
446
|
-
signal,
|
|
447
|
-
`MeshNode '${meshName}' request to node '${targetNodeRid}'`,
|
|
448
|
-
(remainingTimeoutMs) =>
|
|
449
|
-
node.requestToNode(toBackendRoutingId(targetNodeRid), parts, {
|
|
450
|
-
flags: 1,
|
|
451
|
-
timeoutMs: remainingTimeoutMs
|
|
452
|
-
})
|
|
453
|
-
);
|
|
454
|
-
return this.decodeMeshReply(meshName, completion);
|
|
529
|
+
correlationId,
|
|
530
|
+
...(error instanceof Error ? { errorType: error.name, errorMessage: error.message } : {})
|
|
531
|
+
});
|
|
455
532
|
}
|
|
456
533
|
|
|
457
534
|
submitToChannel(
|
|
@@ -537,7 +614,7 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
537
614
|
channelName,
|
|
538
615
|
packetName,
|
|
539
616
|
request,
|
|
540
|
-
timeoutMs ??
|
|
617
|
+
timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
|
|
541
618
|
metadata
|
|
542
619
|
);
|
|
543
620
|
const metric = this.metrics?.startRequest(meshName, 'channel');
|
|
@@ -571,7 +648,7 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
571
648
|
remainingTimeoutMs: number
|
|
572
649
|
) => ReturnType<Parameters<ZLinkMeshCompletionTable['submit']>[0]>
|
|
573
650
|
): Promise<ZLinkMeshCompletion> {
|
|
574
|
-
const effectiveTimeoutMs = Math.max(1, timeoutMs ??
|
|
651
|
+
const effectiveTimeoutMs = Math.max(1, timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS);
|
|
575
652
|
const deadlineMs = performance.now() + effectiveTimeoutMs;
|
|
576
653
|
const remainingTimeoutMs = deadlineMs - performance.now();
|
|
577
654
|
if (remainingTimeoutMs <= 0) {
|
|
@@ -593,12 +670,7 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
593
670
|
sendToSpot(
|
|
594
671
|
spotRouteTarget: ZLinkSpotRouteTarget,
|
|
595
672
|
message: unknown,
|
|
596
|
-
options:
|
|
597
|
-
readonly packetName?: string;
|
|
598
|
-
readonly timeoutMs?: number;
|
|
599
|
-
readonly signal?: AbortSignal;
|
|
600
|
-
readonly metadata?: ReadonlyMap<string, string>;
|
|
601
|
-
}
|
|
673
|
+
options: ZLinkSpotRoutedSendOptions
|
|
602
674
|
): Promise<ZLinkSubmitResult> {
|
|
603
675
|
return runWithOutboundFlow(this.flowCreationEnabled(), () =>
|
|
604
676
|
this.sendToSpotScoped(spotRouteTarget, message, options)
|
|
@@ -608,12 +680,7 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
608
680
|
private async sendToSpotScoped(
|
|
609
681
|
spotRouteTarget: ZLinkSpotRouteTarget,
|
|
610
682
|
message: unknown,
|
|
611
|
-
options:
|
|
612
|
-
readonly packetName?: string;
|
|
613
|
-
readonly timeoutMs?: number;
|
|
614
|
-
readonly signal?: AbortSignal;
|
|
615
|
-
readonly metadata?: ReadonlyMap<string, string>;
|
|
616
|
-
}
|
|
683
|
+
options: ZLinkSpotRoutedSendOptions
|
|
617
684
|
): Promise<ZLinkSubmitResult> {
|
|
618
685
|
const node = this.meshNode(spotRouteTarget.routerChannelId);
|
|
619
686
|
if (node === undefined) {
|
|
@@ -649,7 +716,8 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
649
716
|
instanceSpotRouteFence(spotRouteTarget),
|
|
650
717
|
encoded,
|
|
651
718
|
undefined,
|
|
652
|
-
options.metadata
|
|
719
|
+
options.metadata,
|
|
720
|
+
options.instanceSpot
|
|
653
721
|
)
|
|
654
722
|
);
|
|
655
723
|
}
|
|
@@ -699,12 +767,7 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
699
767
|
requestToSpot<TReply = unknown>(
|
|
700
768
|
spotRouteTarget: ZLinkSpotRouteTarget,
|
|
701
769
|
request: unknown,
|
|
702
|
-
options:
|
|
703
|
-
readonly packetName?: string;
|
|
704
|
-
readonly timeoutMs?: number;
|
|
705
|
-
readonly signal?: AbortSignal;
|
|
706
|
-
readonly metadata?: ReadonlyMap<string, string>;
|
|
707
|
-
}
|
|
770
|
+
options: ZLinkSpotRoutedRequestOptions
|
|
708
771
|
): Promise<TReply> {
|
|
709
772
|
return runWithOutboundFlow(this.flowCreationEnabled(), () =>
|
|
710
773
|
this.requestToSpotScoped<TReply>(spotRouteTarget, request, options)
|
|
@@ -714,12 +777,7 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
714
777
|
private async requestToSpotScoped<TReply = unknown>(
|
|
715
778
|
spotRouteTarget: ZLinkSpotRouteTarget,
|
|
716
779
|
request: unknown,
|
|
717
|
-
options:
|
|
718
|
-
readonly packetName?: string;
|
|
719
|
-
readonly timeoutMs?: number;
|
|
720
|
-
readonly signal?: AbortSignal;
|
|
721
|
-
readonly metadata?: ReadonlyMap<string, string>;
|
|
722
|
-
}
|
|
780
|
+
options: ZLinkSpotRoutedRequestOptions
|
|
723
781
|
): Promise<TReply> {
|
|
724
782
|
const meshName = spotRouteTarget.routerChannelId;
|
|
725
783
|
const node = this.meshNode(meshName);
|
|
@@ -757,7 +815,8 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
757
815
|
encoded,
|
|
758
816
|
options.timeoutMs,
|
|
759
817
|
undefined,
|
|
760
|
-
options.metadata
|
|
818
|
+
options.metadata,
|
|
819
|
+
options.instanceSpot
|
|
761
820
|
)
|
|
762
821
|
: node
|
|
763
822
|
.entrySpot()
|
|
@@ -970,7 +1029,8 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
970
1029
|
packetName: string | undefined,
|
|
971
1030
|
message: unknown,
|
|
972
1031
|
timeoutMs?: number,
|
|
973
|
-
metadata?: ReadonlyMap<string, string
|
|
1032
|
+
metadata?: ReadonlyMap<string, string>,
|
|
1033
|
+
correlationId?: string
|
|
974
1034
|
): readonly MessageLike[] {
|
|
975
1035
|
return encodeChannelEnvelopeParts(
|
|
976
1036
|
kind,
|
|
@@ -980,7 +1040,7 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
980
1040
|
timeoutMs,
|
|
981
1041
|
undefined,
|
|
982
1042
|
this.codecs,
|
|
983
|
-
|
|
1043
|
+
correlationId,
|
|
984
1044
|
this.flowCreationEnabled(),
|
|
985
1045
|
metadata
|
|
986
1046
|
);
|
|
@@ -1024,7 +1084,7 @@ function directSpotRouteFence(
|
|
|
1024
1084
|
target.authorityStoreVersion === undefined
|
|
1025
1085
|
) {
|
|
1026
1086
|
throw createInternalFrameworkException(
|
|
1027
|
-
ZLinkFrameworkInternalErrorKind.
|
|
1087
|
+
ZLinkFrameworkInternalErrorKind.RouteNotConnected,
|
|
1028
1088
|
`Spot '${String(target.spotId)}' has no complete Ready authority fence.`
|
|
1029
1089
|
);
|
|
1030
1090
|
}
|
|
@@ -1068,24 +1128,7 @@ function instanceSpotRouteFence(target: ZLinkSpotRouteTarget): ServiceInstanceRo
|
|
|
1068
1128
|
}
|
|
1069
1129
|
|
|
1070
1130
|
function mapMeshSubmitResult(result: number): ZLinkSubmitResult {
|
|
1071
|
-
|
|
1072
|
-
case SubmitResult.Ok:
|
|
1073
|
-
return { status: ZLinkSubmitStatus.Submitted };
|
|
1074
|
-
case SubmitResult.Backpressured:
|
|
1075
|
-
case SubmitResult.NotAdmitted:
|
|
1076
|
-
return { status: ZLinkSubmitStatus.Backpressured };
|
|
1077
|
-
case SubmitResult.NotFound:
|
|
1078
|
-
return { status: ZLinkSubmitStatus.TargetNotFound };
|
|
1079
|
-
case SubmitResult.NotConnected:
|
|
1080
|
-
return { status: ZLinkSubmitStatus.RouteNotConnected };
|
|
1081
|
-
case SubmitResult.Terminated:
|
|
1082
|
-
return { status: ZLinkSubmitStatus.Shutdown };
|
|
1083
|
-
default:
|
|
1084
|
-
throw createInternalFrameworkException(
|
|
1085
|
-
ZLinkFrameworkInternalErrorKind.RequestFailed,
|
|
1086
|
-
`Mesh submission failed with result ${result}.`
|
|
1087
|
-
);
|
|
1088
|
-
}
|
|
1131
|
+
return classifySubmitResult(result, 'Mesh submission');
|
|
1089
1132
|
}
|
|
1090
1133
|
|
|
1091
1134
|
function mapMeshSubmissionError(error: unknown, operation: string): Error {
|
|
@@ -1106,18 +1149,21 @@ function mapMeshSubmissionError(error: unknown, operation: string): Error {
|
|
|
1106
1149
|
);
|
|
1107
1150
|
}
|
|
1108
1151
|
if (isZLinkBackendResultError(error)) {
|
|
1109
|
-
const
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1152
|
+
const terminal =
|
|
1153
|
+
error.operation === 'request'
|
|
1154
|
+
? error.result
|
|
1155
|
+
: submitToRequestResult(error.result, error.phase);
|
|
1156
|
+
if (terminal === RequestResult.NotFound) {
|
|
1157
|
+
return createInternalFrameworkException(
|
|
1158
|
+
ZLinkFrameworkInternalErrorKind.RequestTargetNotFound,
|
|
1159
|
+
`${operation} failed with result ${error.result}.`,
|
|
1160
|
+
false,
|
|
1161
|
+
error
|
|
1162
|
+
);
|
|
1163
|
+
}
|
|
1164
|
+
return new ZLinkFrameworkException(
|
|
1165
|
+
requestResultToPublicErrorKind(terminal),
|
|
1119
1166
|
`${operation} failed with result ${error.result}.`,
|
|
1120
|
-
retriable,
|
|
1121
1167
|
error
|
|
1122
1168
|
);
|
|
1123
1169
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { Message } from '../../contracts/Common/Message';
|
|
2
|
+
import { ZLINK_DEFAULT_PUBLIC_WEIGHT } from '../../contracts/Configuration/RegistrationBuilderPolicy';
|
|
1
3
|
import {
|
|
2
4
|
ZLinkFrameworkRuntimeState,
|
|
3
5
|
ZLinkLocationWriteIntent,
|
|
@@ -5,26 +7,28 @@ import {
|
|
|
5
7
|
type ZLinkClientServerServerDescriptor,
|
|
6
8
|
type ZLinkLocationOwnerToken
|
|
7
9
|
} from '../../contracts/Locations';
|
|
8
|
-
import type { ZLinkClientServerLocationStore } from '../locations/internal-store-contracts';
|
|
9
10
|
import {
|
|
10
11
|
zlinkRuntimeDefaultLocationOptions,
|
|
11
12
|
type ZLinkLocationOptionOverrides
|
|
12
13
|
} from '../../contracts/Locations/Options';
|
|
13
|
-
import
|
|
14
|
-
import { ZLinkConfigurationException } from '../configuration';
|
|
15
|
-
import type { ZLinkLocationRuntime, ZLinkLocationRuntimeStores } from '../locations';
|
|
16
|
-
import { ZLinkChannelSocketRegistry } from './channel-socket-registry';
|
|
14
|
+
import { ZLINK_PROVIDER_MAX_PAGE_SIZE } from '../../contracts/Locations/Stores';
|
|
17
15
|
import type { ZLinkBackendDealerSocket } from '../backend/contracts';
|
|
18
16
|
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
19
|
-
import
|
|
17
|
+
import { isBackendRequestTimeoutError } from '../backend/runtime-values';
|
|
18
|
+
import { type ZLinkFrameworkRegistration, ZLinkConfigurationException } from '../configuration';
|
|
19
|
+
|
|
20
|
+
import { ZLinkStateLane } from '../execution/state-lane';
|
|
21
|
+
import { discoveryAvailabilityForRuntimeState } from '../foundation/runtime-state-projections';
|
|
22
|
+
import type { ZLinkLocationRuntime, ZLinkLocationRuntimeStores } from '../locations';
|
|
23
|
+
import type { ZLinkClientServerLocationStore } from '../locations/internal-store-contracts';
|
|
24
|
+
import { ZLinkChannelSocketRegistry } from './channel-socket-registry';
|
|
20
25
|
import {
|
|
21
26
|
decodeClientServerControl,
|
|
27
|
+
DEFAULT_CLIENT_SERVER_MESSAGE_LIMIT,
|
|
22
28
|
encodeClientServerHello,
|
|
29
|
+
normalizeClientServerMessageLimit,
|
|
23
30
|
type ZLinkClientServerAdmission
|
|
24
31
|
} from './client-server-service-wire';
|
|
25
|
-
import { discoveryAvailabilityForRuntimeState } from '../foundation/runtime-state-projections';
|
|
26
|
-
import { ZLinkStateLane } from '../execution/state-lane';
|
|
27
|
-
import { isBackendRequestTimeoutError } from '../backend/runtime-values';
|
|
28
32
|
|
|
29
33
|
interface ActiveClientServerTarget {
|
|
30
34
|
descriptor: ZLinkClientServerServerDescriptor;
|
|
@@ -170,7 +174,7 @@ export class ZLinkClientServerLocationRuntime {
|
|
|
170
174
|
lifecycleGeneration: identity.lifecycleGeneration,
|
|
171
175
|
descriptorRevision: 1n,
|
|
172
176
|
endpoint: identity.endpoint,
|
|
173
|
-
weight: channel.server.weight ??
|
|
177
|
+
weight: channel.server.weight ?? ZLINK_DEFAULT_PUBLIC_WEIGHT,
|
|
174
178
|
state: ZLinkFrameworkRuntimeState.Serving,
|
|
175
179
|
securityIdentity: 'default',
|
|
176
180
|
ownerId: owner.ownerId,
|
|
@@ -250,7 +254,7 @@ export class ZLinkClientServerLocationRuntime {
|
|
|
250
254
|
do {
|
|
251
255
|
const page = await this.store.listClientServers(
|
|
252
256
|
channelName,
|
|
253
|
-
{ pageSize:
|
|
257
|
+
{ pageSize: ZLINK_PROVIDER_MAX_PAGE_SIZE, continuationToken },
|
|
254
258
|
signal
|
|
255
259
|
);
|
|
256
260
|
rows.push(...page.items);
|
|
@@ -517,7 +521,7 @@ function sameDescriptor(
|
|
|
517
521
|
|
|
518
522
|
function toDiscoveryDescriptor(
|
|
519
523
|
descriptor: ZLinkClientServerServerDescriptor,
|
|
520
|
-
effectiveMaxMessageBytes =
|
|
524
|
+
effectiveMaxMessageBytes: number = DEFAULT_CLIENT_SERVER_MESSAGE_LIMIT
|
|
521
525
|
) {
|
|
522
526
|
return {
|
|
523
527
|
channelName: descriptor.channelName,
|
|
@@ -541,7 +545,7 @@ function requestAdmission(
|
|
|
541
545
|
encodeClientServerHello({
|
|
542
546
|
channelName: descriptor.channelName,
|
|
543
547
|
securityIdentity: descriptor.securityIdentity,
|
|
544
|
-
normalizedEffectiveMaxMessageBytes:
|
|
548
|
+
normalizedEffectiveMaxMessageBytes: normalizeClientServerMessageLimit(dealer.maxMessageSize)
|
|
545
549
|
})
|
|
546
550
|
);
|
|
547
551
|
return dealer.request(message, timeoutMs).then(
|
|
@@ -600,7 +604,3 @@ function requireMatchingAdmission(
|
|
|
600
604
|
function closeMessages(parts: readonly Message[]): void {
|
|
601
605
|
for (const part of parts) part.close();
|
|
602
606
|
}
|
|
603
|
-
|
|
604
|
-
function normalizedMessageLimit(value: number): number {
|
|
605
|
-
return Number.isSafeInteger(value) && value > 0 ? Math.min(value, 0xffff_ffff) : 0x7fff_ffff;
|
|
606
|
-
}
|
|
@@ -1,16 +1,40 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import { UINT32_MAX } from '@zlink-systems/stream-wire';
|
|
2
|
+
import { normalizeEndpoint } from '../../contracts/Configuration/EndpointNotation';
|
|
3
|
+
import { isValidPublicWeight } from '../../contracts/Configuration/RegistrationBuilderPolicy';
|
|
4
|
+
import {
|
|
5
|
+
type ZLinkClientServerServerDescriptor,
|
|
6
|
+
ZLinkFrameworkRuntimeState
|
|
7
|
+
} from '../../contracts/Locations';
|
|
8
|
+
|
|
3
9
|
import {
|
|
4
10
|
decodeCanonicalServiceWireText,
|
|
5
11
|
decodeServiceWireRoutingId,
|
|
6
12
|
encodeCanonicalServiceWireText,
|
|
7
13
|
encodeServiceWireRoutingId
|
|
8
14
|
} from '../foundation/service-wire-binary-primitives';
|
|
9
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
SERVICE_WIRE_MAGIC,
|
|
17
|
+
SERVICE_WIRE_MAJOR
|
|
18
|
+
} from '../foundation/service-wire-constants.generated';
|
|
19
|
+
export const DEFAULT_CLIENT_SERVER_MESSAGE_LIMIT = 0x7fff_ffff;
|
|
20
|
+
export function normalizeClientServerMessageLimit(value: number): number {
|
|
21
|
+
return Number.isSafeInteger(value) && value > 0
|
|
22
|
+
? Math.min(value, UINT32_MAX)
|
|
23
|
+
: DEFAULT_CLIENT_SERVER_MESSAGE_LIMIT;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const CLIENT_SERVER_PREFIX_BYTES = 5;
|
|
27
|
+
const CLIENT_SERVER_ROLE_BODY_MAX_BYTES = 0xffff;
|
|
28
|
+
const CLIENT_SERVER_TEXT_MAX_BYTES = 4096;
|
|
29
|
+
|
|
30
|
+
export enum ClientServerRejectReason {
|
|
31
|
+
ProtocolVersionUnsupported = 1,
|
|
32
|
+
AdmissionMismatch = 3
|
|
33
|
+
}
|
|
10
34
|
|
|
11
|
-
const MAGIC_0 =
|
|
12
|
-
const MAGIC_1 =
|
|
13
|
-
const WIRE_MAJOR =
|
|
35
|
+
const MAGIC_0 = SERVICE_WIRE_MAGIC[0];
|
|
36
|
+
const MAGIC_1 = SERVICE_WIRE_MAGIC[1];
|
|
37
|
+
const WIRE_MAJOR = SERVICE_WIRE_MAJOR;
|
|
14
38
|
const TOPOLOGY_CLIENT_SERVER = 2;
|
|
15
39
|
const ROLE_CLIENT = 1;
|
|
16
40
|
const ROLE_SERVER = 2;
|
|
@@ -22,7 +46,7 @@ const COMMAND_UPDATE = 4;
|
|
|
22
46
|
const COMMAND_LIVENESS_PROBE = 5;
|
|
23
47
|
const COMMAND_LIVENESS_ACK = 6;
|
|
24
48
|
const MAX_DESCRIPTOR_BYTES = 1024 * 1024;
|
|
25
|
-
const MAX_U32 =
|
|
49
|
+
const MAX_U32 = UINT32_MAX;
|
|
26
50
|
const MAX_GENERATION = 0x7fff_ffff_ffff_ffffn;
|
|
27
51
|
|
|
28
52
|
export interface ZLinkClientServerHello {
|
|
@@ -99,7 +123,10 @@ export function encodeClientServerLivenessAck(probeId: bigint): Buffer {
|
|
|
99
123
|
|
|
100
124
|
export function isClientServerControlFrame(frame: Uint8Array): boolean {
|
|
101
125
|
return (
|
|
102
|
-
frame.byteLength >=
|
|
126
|
+
frame.byteLength >= CLIENT_SERVER_PREFIX_BYTES &&
|
|
127
|
+
frame[0] === MAGIC_0 &&
|
|
128
|
+
frame[1] === MAGIC_1 &&
|
|
129
|
+
frame[2] === WIRE_MAJOR
|
|
103
130
|
);
|
|
104
131
|
}
|
|
105
132
|
|
|
@@ -177,7 +204,8 @@ function encodeServerAdmission(
|
|
|
177
204
|
}
|
|
178
205
|
|
|
179
206
|
function encodeAdmission(command: number, role: number, roleBody: Buffer): Buffer {
|
|
180
|
-
if (roleBody.byteLength >
|
|
207
|
+
if (roleBody.byteLength > CLIENT_SERVER_ROLE_BODY_MAX_BYTES)
|
|
208
|
+
fail('ClientServer role body is oversized.');
|
|
181
209
|
const admission = concat(Buffer.of(role), encodeU16(roleBody.byteLength), roleBody);
|
|
182
210
|
const result = concat(
|
|
183
211
|
prefix(command),
|
|
@@ -210,7 +238,7 @@ function decodeServerAdmission(reader: Reader): ZLinkClientServerAdmission {
|
|
|
210
238
|
const lifecycleGeneration = reader.nonZeroU64('lifecycleGeneration');
|
|
211
239
|
const descriptorRevision = reader.nonZeroU64('descriptorRevision');
|
|
212
240
|
const weight = reader.u32('weight');
|
|
213
|
-
if (weight
|
|
241
|
+
if (!isValidPublicWeight(weight)) fail('ClientServer weight is invalid.');
|
|
214
242
|
return {
|
|
215
243
|
channelName,
|
|
216
244
|
serverRid,
|
|
@@ -261,7 +289,7 @@ function encodeText8(value: string, field: string): Buffer {
|
|
|
261
289
|
}
|
|
262
290
|
|
|
263
291
|
function encodeText16(value: string, field: string): Buffer {
|
|
264
|
-
const bytes = encodeCanonicalServiceWireText(value, field,
|
|
292
|
+
const bytes = encodeCanonicalServiceWireText(value, field, CLIENT_SERVER_TEXT_MAX_BYTES, fail);
|
|
265
293
|
return concat(encodeU16(bytes.byteLength), bytes);
|
|
266
294
|
}
|
|
267
295
|
|
|
@@ -373,7 +401,7 @@ class Reader {
|
|
|
373
401
|
|
|
374
402
|
text16(field: string): string {
|
|
375
403
|
const length = this.u16(`${field}.length`);
|
|
376
|
-
if (length < 1 || length >
|
|
404
|
+
if (length < 1 || length > CLIENT_SERVER_TEXT_MAX_BYTES) fail(`${field} length is invalid.`);
|
|
377
405
|
return decodeText(this.bytes(length, field), field);
|
|
378
406
|
}
|
|
379
407
|
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
|
-
ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome,
|
|
3
2
|
ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
|
|
4
3
|
ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
|
|
5
4
|
ZLinkDispatchErrorSurface,
|
|
6
5
|
ZLinkDispatchMessageKind,
|
|
6
|
+
ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome,
|
|
7
7
|
type ZLinkDispatchFailure
|
|
8
8
|
} from '../../contracts/Dispatch/ZLinkDispatchOptions';
|
|
9
|
-
import type { ZLinkRuntimeMetrics } from '../diagnostics';
|
|
10
9
|
import {
|
|
11
|
-
|
|
10
|
+
type ZLinkRuntimeMetrics,
|
|
12
11
|
DEFAULT_ZLINK_DIAGNOSTICS,
|
|
12
|
+
ZLinkMessageFlowTracer,
|
|
13
13
|
type ZLinkDiagnosticsContext
|
|
14
14
|
} from '../diagnostics';
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
import { dispatchErrorDetails } from '../diagnostics/dispatch-error-details';
|
|
17
|
+
import type { ZLinkDispatchErrorSink } from '../diagnostics/dispatch-error-port';
|
|
18
|
+
import { METRIC_NAMES } from '../diagnostics/runtime-metrics';
|
|
17
19
|
|
|
18
20
|
export type { ZLinkDispatchErrorSink } from '../diagnostics/dispatch-error-port';
|
|
19
21
|
|
|
@@ -49,7 +51,7 @@ export class ZLinkDispatchErrorReporter {
|
|
|
49
51
|
const normalized = normalizeDispatchFailure(event);
|
|
50
52
|
const dropReason = channelDropReason(normalized);
|
|
51
53
|
if (dropReason !== undefined) {
|
|
52
|
-
this.metrics?.count(
|
|
54
|
+
this.metrics?.count(METRIC_NAMES.MeshNodeMessagesDropped, 1, {
|
|
53
55
|
surface: normalized.surface,
|
|
54
56
|
message_kind: normalized.messageKind,
|
|
55
57
|
reason: dropReason
|