@zlink-systems/framework 0.21.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Common/ZLinkMessage.js +5 -5
- package/dist/contracts/Configuration/CodecContentType.js +5 -7
- package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
- package/dist/contracts/Configuration/EndpointNotation.js +4 -8
- package/dist/contracts/Configuration/Registration.js +14 -11
- package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
- package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
- package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
- package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -0
- package/dist/contracts/Handlers/JsonContract.js +23 -11
- package/dist/contracts/Spots/SpotKind.js +16 -8
- package/dist/contracts/Streams/IZLinkSession.d.ts +2 -1
- package/dist/location-store-integration.js +16 -16
- package/dist/nest-integration.js +17 -11
- package/dist/runtime/abort.js +9 -5
- package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
- package/dist/runtime/actors/actor-authority-publication.js +18 -17
- package/dist/runtime/actors/actor-client.js +83 -63
- package/dist/runtime/actors/actor-context.js +28 -22
- package/dist/runtime/actors/actor-creation.js +4 -3
- package/dist/runtime/actors/actor-handoff.js +89 -92
- package/dist/runtime/actors/actor-join-deferred-scope.d.ts +0 -1
- package/dist/runtime/actors/actor-join-deferred-scope.js +0 -18
- package/dist/runtime/actors/actor-local-native-join.js +18 -19
- package/dist/runtime/actors/actor-mailbox.js +1 -1
- package/dist/runtime/actors/actor-message-follow-context.js +24 -21
- package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
- package/dist/runtime/actors/actor-remote-joiner.js +20 -17
- package/dist/runtime/actors/actor-remote-wire.js +6 -7
- package/dist/runtime/actors/actor-runtime-state.js +87 -81
- package/dist/runtime/actors/actor-transfer-registry.js +3 -5
- package/dist/runtime/actors/bound-session-wire.js +14 -9
- package/dist/runtime/actors/deferred-join-accepted-journal.js +160 -130
- package/dist/runtime/actors/index.js +2 -5
- package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
- package/dist/runtime/actors/post-commit-actor-location.js +1 -1
- package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
- package/dist/runtime/admission.js +2 -6
- package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
- package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
- package/dist/runtime/backend/contracts/index.d.ts +1 -0
- package/dist/runtime/backend/mesh-completion-table.js +1 -3
- package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
- package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
- package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
- package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +3 -0
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +134 -118
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
- package/dist/runtime/backend/runtime-message.js +3 -3
- package/dist/runtime/backend/runtime-values.d.ts +2 -2
- package/dist/runtime/backend/runtime-values.js +4 -5
- package/dist/runtime/channels/channel-clients.js +27 -24
- package/dist/runtime/channels/channel-dispatch-pipeline.js +12 -20
- package/dist/runtime/channels/channel-dispatch-services.js +7 -4
- package/dist/runtime/channels/channel-dispatchers.js +9 -9
- package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
- package/dist/runtime/channels/channel-envelope.js +83 -47
- package/dist/runtime/channels/channel-outbound-operations.js +8 -8
- package/dist/runtime/channels/channel-receive-loops.js +20 -22
- package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
- package/dist/runtime/channels/channel-runtime-manager.js +18 -9
- package/dist/runtime/channels/channel-socket-registry.js +126 -123
- package/dist/runtime/channels/channel-transports.js +46 -42
- package/dist/runtime/channels/client-server-location-runtime.js +32 -40
- package/dist/runtime/channels/client-server-service-wire.js +29 -22
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -0
- package/dist/runtime/channels/dispatch-error-reporter.js +9 -39
- package/dist/runtime/channels/fanout-location-runtime.js +34 -47
- package/dist/runtime/channels/fanout-service-wire.js +3 -5
- package/dist/runtime/channels/local-spot-route-transport.js +7 -1
- package/dist/runtime/channels/route-member-snapshot.js +3 -3
- package/dist/runtime/channels/source-spot-router.js +6 -2
- package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
- package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +6 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +55 -0
- package/dist/runtime/diagnostics/flow-context.d.ts +2 -1
- package/dist/runtime/diagnostics/flow-context.js +2 -2
- package/dist/runtime/diagnostics/index.js +38 -10
- package/dist/runtime/diagnostics/message-flow.js +58 -42
- package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
- package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
- package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
- package/dist/runtime/execution/index.js +7 -6
- package/dist/runtime/execution/serial-execution-queue.js +12 -18
- package/dist/runtime/execution/state-lane.js +2 -2
- package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -27
- package/dist/runtime/foundation/event-loop-resources.js +4 -4
- package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +4 -2
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +169 -144
- package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
- package/dist/runtime/foundation/runtime-state-projections.js +22 -11
- package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
- package/dist/runtime/foundation/service-discovery-registry.js +35 -33
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
- package/dist/runtime/foundation/service-liveness-registry.js +16 -12
- package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
- package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
- package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
- package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +1 -0
- package/dist/runtime/foundation/service-stateful-registry.js +24 -23
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +4 -0
- package/dist/runtime/foundation/service-stateful-runtime.js +461 -439
- package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -0
- package/dist/runtime/foundation/service-topology-registry.js +105 -96
- package/dist/runtime/foundation/service-weighted-selection.js +6 -11
- package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
- package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
- package/dist/runtime/framework-errors-internal.js +7 -10
- package/dist/runtime/handlers/handler-instance-scope.js +4 -5
- package/dist/runtime/handlers/index.js +3 -1
- package/dist/runtime/host/actor-packet-relay.js +74 -70
- package/dist/runtime/host/actor-placement-coordinator.js +29 -31
- package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
- package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
- package/dist/runtime/host/actor-transfer-runtime.js +176 -153
- package/dist/runtime/host/application-job-queue.js +18 -22
- package/dist/runtime/host/bound-session-relay.js +3 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
- package/dist/runtime/host/host-capacity-status.js +8 -4
- package/dist/runtime/host/index.js +245 -228
- package/dist/runtime/host/instance-activation-authority.js +93 -96
- package/dist/runtime/host/location-runtime-owner.js +16 -14
- package/dist/runtime/host/mesh-router-resolver.js +11 -13
- package/dist/runtime/host/relocation-direct-transfer.js +10 -9
- package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
- package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
- package/dist/runtime/host/remote-bound-session-relay.js +97 -73
- package/dist/runtime/host/route-mesh-runtime.js +64 -69
- package/dist/runtime/host/runtime-shutdown.js +1 -2
- package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
- package/dist/runtime/host/spot-address-transport.js +69 -71
- package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
- package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
- package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
- package/dist/runtime/locations/actor-location-claims.js +26 -20
- package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
- package/dist/runtime/locations/authority-key-codec.js +7 -7
- package/dist/runtime/locations/auto-connect-loop.js +3 -3
- package/dist/runtime/locations/auto-connect-planner.js +25 -19
- package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
- package/dist/runtime/locations/in-memory-authority-store.js +128 -118
- package/dist/runtime/locations/in-memory-location-store.js +195 -168
- package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
- package/dist/runtime/locations/key-codec.js +1 -1
- package/dist/runtime/locations/lease-tracker.js +23 -21
- package/dist/runtime/locations/lifecycle.js +4 -5
- package/dist/runtime/locations/location-store-repository.js +368 -324
- package/dist/runtime/locations/opaque-record-key.js +2 -2
- package/dist/runtime/locations/resolvers.js +73 -82
- package/dist/runtime/locations/runtime.js +68 -63
- package/dist/runtime/locations/spot-location-claims.js +39 -35
- package/dist/runtime/messaging/framework-json-v1.js +7 -7
- package/dist/runtime/messaging/packet-name.js +7 -6
- package/dist/runtime/messaging/payload-codec.js +21 -18
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
- package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +20 -18
- package/dist/runtime/routing-id.js +3 -5
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
- package/dist/runtime/spots/index.js +209 -220
- package/dist/runtime/spots/spot-activation-registry.js +15 -14
- package/dist/runtime/spots/spot-activation-state.js +17 -15
- package/dist/runtime/spots/spot-activation.js +33 -16
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
- package/dist/runtime/spots/spot-actor-membership.js +1 -3
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +2 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +29 -21
- package/dist/runtime/spots/spot-actor-packet-drain.js +14 -10
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
- package/dist/runtime/spots/spot-closing.js +3 -7
- package/dist/runtime/spots/spot-context.js +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +13 -14
- package/dist/runtime/spots/spot-handle.js +6 -3
- package/dist/runtime/spots/spot-handler-registry.js +12 -12
- package/dist/runtime/spots/spot-manager-public.js +5 -6
- package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
- package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +79 -86
- package/dist/runtime/spots/spot-outbound.js +10 -14
- package/dist/runtime/spots/spot-remote-codec.js +22 -26
- package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
- package/dist/runtime/spots/spot-route-packet-dispatch.js +17 -15
- package/dist/runtime/spots/spot-route-replies.js +4 -6
- package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
- package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +2 -3
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
- package/dist/runtime/spots/spot-serial-executor.js +5 -8
- package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
- package/dist/runtime/spots/spot-subscription-dispatch.js +6 -6
- package/dist/runtime/spots/spot-timer.js +26 -30
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +21 -8
- package/dist/runtime/streams/actor-session-binding-registry.js +168 -148
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -0
- package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +20 -17
- package/dist/runtime/streams/bound-session-response-target.js +8 -1
- package/dist/runtime/streams/bound-session-service.d.ts +1 -0
- package/dist/runtime/streams/bound-session-service.js +14 -12
- package/dist/runtime/streams/index.js +28 -20
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +52 -31
- package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
- package/dist/runtime/streams/protocol.d.ts +5 -1
- package/dist/runtime/streams/protocol.js +68 -20
- package/dist/runtime/streams/session-actor-coordinator.js +37 -41
- package/dist/runtime/streams/session-context.d.ts +9 -2
- package/dist/runtime/streams/session-context.js +50 -32
- package/dist/runtime/streams/session-local-actors.d.ts +3 -1
- package/dist/runtime/streams/session-local-actors.js +17 -2
- package/dist/runtime/streams/session-provider.js +2 -2
- package/dist/runtime/streams/session-serial-executor.js +1 -2
- package/dist/runtime/streams/stream-frame-factory.d.ts +1 -1
- package/dist/runtime/streams/stream-frame-factory.js +14 -7
- package/dist/runtime/streams/stream-session-runtime.js +112 -78
- package/dist/runtime/workers/index.js +15 -4
- package/package.json +3 -3
- package/src/contracts/Channels/RouteCalls.ts +6 -1
- package/src/contracts/Common/ZLinkMessage.ts +5 -5
- package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
- package/src/contracts/Configuration/Builders.ts +14 -14
- package/src/contracts/Configuration/CodecContentType.ts +8 -10
- package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
- package/src/contracts/Configuration/EndpointNotation.ts +11 -11
- package/src/contracts/Configuration/ObjectRoles.ts +1 -3
- package/src/contracts/Configuration/Registration.ts +46 -17
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
- package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
- package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
- package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
- package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
- package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
- package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
- package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
- package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -6
- package/src/contracts/Errors/index.ts +1 -4
- package/src/contracts/Handlers/Attributes.ts +15 -9
- package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
- package/src/contracts/Handlers/JsonContract.ts +53 -19
- package/src/contracts/Locations/ActorTransfer.ts +1 -5
- package/src/contracts/Locations/Authority.ts +4 -11
- package/src/contracts/Locations/Keys.ts +6 -1
- package/src/contracts/Locations/Options.ts +3 -2
- package/src/contracts/Locations/RelocationStore.ts +1 -4
- package/src/contracts/Locations/Resolvers.ts +5 -5
- package/src/contracts/Locations/RuntimeQuery.ts +6 -2
- package/src/contracts/Locations/Stores.ts +1 -2
- package/src/contracts/Locations/index.ts +2 -8
- package/src/contracts/RouteMesh/Contracts.ts +1 -7
- package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
- package/src/contracts/Spots/Contracts.ts +2 -8
- package/src/contracts/Spots/SpotKind.ts +16 -8
- package/src/contracts/Spots/ZLinkSpot.ts +8 -11
- package/src/contracts/Streams/IZLinkSession.ts +2 -2
- package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
- package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
- package/src/internal.ts +5 -4
- package/src/location-store-integration.ts +24 -16
- package/src/nest-integration.ts +40 -25
- package/src/runtime/abort.ts +10 -4
- package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
- package/src/runtime/actors/actor-authority-publication.ts +92 -77
- package/src/runtime/actors/actor-client.ts +162 -133
- package/src/runtime/actors/actor-context.ts +142 -134
- package/src/runtime/actors/actor-creation.ts +47 -44
- package/src/runtime/actors/actor-execution-context.ts +6 -4
- package/src/runtime/actors/actor-handoff.ts +269 -293
- package/src/runtime/actors/actor-join-deferred-scope.ts +1 -32
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
- package/src/runtime/actors/actor-local-native-join.ts +131 -159
- package/src/runtime/actors/actor-mailbox.ts +16 -19
- package/src/runtime/actors/actor-message-follow-context.ts +46 -36
- package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
- package/src/runtime/actors/actor-remote-joiner.ts +50 -54
- package/src/runtime/actors/actor-remote-wire.ts +9 -13
- package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
- package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
- package/src/runtime/actors/actor-runtime-state.ts +127 -124
- package/src/runtime/actors/actor-transfer-registry.ts +9 -14
- package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
- package/src/runtime/actors/bound-session-wire.ts +37 -17
- package/src/runtime/actors/deferred-join-accepted-journal.ts +353 -326
- package/src/runtime/actors/index.ts +43 -86
- package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
- package/src/runtime/actors/post-commit-actor-location.ts +30 -23
- package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
- package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
- package/src/runtime/admission.ts +9 -9
- package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
- package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
- package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
- package/src/runtime/backend/contracts/index.ts +77 -52
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
- package/src/runtime/backend/mesh-completion-table.ts +6 -9
- package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
- package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
- package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
- package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
- package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +370 -390
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
- package/src/runtime/backend/runtime-message.ts +5 -3
- package/src/runtime/backend/runtime-values.ts +10 -7
- package/src/runtime/channels/channel-autoconnect.ts +1 -4
- package/src/runtime/channels/channel-clients.ts +93 -73
- package/src/runtime/channels/channel-dispatch-pipeline.ts +44 -44
- package/src/runtime/channels/channel-dispatch-services.ts +51 -49
- package/src/runtime/channels/channel-dispatchers.ts +152 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
- package/src/runtime/channels/channel-envelope.ts +256 -150
- package/src/runtime/channels/channel-multipart.ts +13 -5
- package/src/runtime/channels/channel-outbound-operations.ts +37 -41
- package/src/runtime/channels/channel-receive-loops.ts +102 -98
- package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
- package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
- package/src/runtime/channels/channel-runtime-manager.ts +63 -37
- package/src/runtime/channels/channel-socket-options.ts +3 -10
- package/src/runtime/channels/channel-socket-registry.ts +331 -273
- package/src/runtime/channels/channel-transports.ts +218 -206
- package/src/runtime/channels/client-server-location-runtime.ts +116 -100
- package/src/runtime/channels/client-server-service-wire.ts +37 -36
- package/src/runtime/channels/dispatch-error-reporter.ts +12 -47
- package/src/runtime/channels/fanout-location-runtime.ts +91 -94
- package/src/runtime/channels/fanout-service-wire.ts +5 -12
- package/src/runtime/channels/handler-filter-scope.ts +1 -4
- package/src/runtime/channels/index.ts +1 -4
- package/src/runtime/channels/local-spot-route-transport.ts +20 -5
- package/src/runtime/channels/route-member-snapshot.ts +11 -5
- package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
- package/src/runtime/channels/source-spot-router.ts +26 -22
- package/src/runtime/channels/spot-direct-envelope.ts +10 -8
- package/src/runtime/channels/spot-node-route-transport.ts +13 -16
- package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
- package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
- package/src/runtime/codecs/index.ts +3 -2
- package/src/runtime/diagnostics/dispatch-error-details.ts +62 -0
- package/src/runtime/diagnostics/flow-context.ts +18 -7
- package/src/runtime/diagnostics/index.ts +96 -61
- package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
- package/src/runtime/diagnostics/message-flow.ts +107 -79
- package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
- package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
- package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
- package/src/runtime/execution/index.ts +18 -26
- package/src/runtime/execution/serial-execution-queue.ts +31 -40
- package/src/runtime/execution/state-lane.ts +2 -2
- package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -55
- package/src/runtime/foundation/event-loop-resources.ts +8 -4
- package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
- package/src/runtime/foundation/operation-identity.ts +1 -2
- package/src/runtime/foundation/operation-registry.ts +8 -2
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +364 -396
- package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
- package/src/runtime/foundation/runtime-state-projections.ts +24 -23
- package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
- package/src/runtime/foundation/service-discovery-registry.ts +67 -59
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
- package/src/runtime/foundation/service-liveness-registry.ts +18 -13
- package/src/runtime/foundation/service-mailbox.ts +14 -14
- package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
- package/src/runtime/foundation/service-metadata-codec.ts +2 -9
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
- package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
- package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
- package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
- package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -4
- package/src/runtime/foundation/service-stateful-registry.ts +69 -59
- package/src/runtime/foundation/service-stateful-runtime.ts +1233 -1112
- package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
- package/src/runtime/foundation/service-topology-registry.ts +170 -159
- package/src/runtime/foundation/service-weighted-selection.ts +9 -15
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
- package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
- package/src/runtime/framework-errors-internal.ts +31 -30
- package/src/runtime/handlers/handler-instance-scope.ts +18 -29
- package/src/runtime/handlers/index.ts +18 -8
- package/src/runtime/host/actor-packet-relay.ts +290 -261
- package/src/runtime/host/actor-placement-coordinator.ts +165 -150
- package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
- package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
- package/src/runtime/host/actor-transfer-runtime.ts +391 -395
- package/src/runtime/host/application-job-queue.ts +32 -48
- package/src/runtime/host/bound-session-relay.ts +7 -9
- package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
- package/src/runtime/host/host-capacity-status.ts +10 -9
- package/src/runtime/host/index.ts +861 -789
- package/src/runtime/host/instance-activation-authority.ts +125 -143
- package/src/runtime/host/location-runtime-owner.ts +38 -26
- package/src/runtime/host/mesh-router-resolver.ts +30 -23
- package/src/runtime/host/relocation-direct-transfer.ts +15 -15
- package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
- package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
- package/src/runtime/host/remote-bound-session-relay.ts +274 -247
- package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
- package/src/runtime/host/route-mesh-runtime.ts +227 -181
- package/src/runtime/host/runtime-shutdown.ts +4 -3
- package/src/runtime/host/service-relocation-control.ts +14 -5
- package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
- package/src/runtime/host/spot-address-transport.ts +284 -237
- package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
- package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
- package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
- package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
- package/src/runtime/locations/actor-location-claims.ts +61 -49
- package/src/runtime/locations/actor-session-route-claims.ts +1 -4
- package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
- package/src/runtime/locations/authority-key-codec.ts +13 -10
- package/src/runtime/locations/auto-connect-loop.ts +14 -11
- package/src/runtime/locations/auto-connect-planner.ts +42 -31
- package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
- package/src/runtime/locations/canonical-codec.ts +3 -1
- package/src/runtime/locations/creation-operation-id.ts +4 -3
- package/src/runtime/locations/domain-store-contract.ts +13 -7
- package/src/runtime/locations/in-memory-authority-store.ts +232 -199
- package/src/runtime/locations/in-memory-location-store.ts +432 -250
- package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
- package/src/runtime/locations/internal-store-contracts.ts +95 -38
- package/src/runtime/locations/key-codec.ts +3 -4
- package/src/runtime/locations/lease-tracker.ts +36 -27
- package/src/runtime/locations/lifecycle-runtime.ts +15 -3
- package/src/runtime/locations/lifecycle.ts +33 -28
- package/src/runtime/locations/location-store-repository.ts +1329 -1185
- package/src/runtime/locations/opaque-record-key.ts +4 -9
- package/src/runtime/locations/resolvers.ts +201 -178
- package/src/runtime/locations/runtime.ts +251 -159
- package/src/runtime/locations/spot-location-claims.ts +110 -112
- package/src/runtime/messaging/creation-payload-codec.ts +4 -1
- package/src/runtime/messaging/framework-json-v1.ts +34 -15
- package/src/runtime/messaging/packet-name.ts +8 -6
- package/src/runtime/messaging/payload-codec.ts +70 -50
- package/src/runtime/messaging/submission-result.ts +6 -9
- package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +19 -18
- package/src/runtime/routing-id.ts +10 -7
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
- package/src/runtime/spots/index.ts +595 -564
- package/src/runtime/spots/spot-activation-registry.ts +38 -34
- package/src/runtime/spots/spot-activation-state.ts +43 -51
- package/src/runtime/spots/spot-activation.ts +179 -116
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
- package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
- package/src/runtime/spots/spot-actor-membership.ts +25 -27
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +196 -148
- package/src/runtime/spots/spot-actor-packet-drain.ts +56 -42
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
- package/src/runtime/spots/spot-closing.ts +11 -12
- package/src/runtime/spots/spot-context.ts +46 -26
- package/src/runtime/spots/spot-entry-activation.ts +84 -65
- package/src/runtime/spots/spot-handle.ts +17 -15
- package/src/runtime/spots/spot-handler-registry.ts +44 -31
- package/src/runtime/spots/spot-location-claim.ts +5 -4
- package/src/runtime/spots/spot-manager-public.ts +62 -82
- package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
- package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
- package/src/runtime/spots/spot-node-runtime-manager.ts +235 -222
- package/src/runtime/spots/spot-outbound.ts +47 -59
- package/src/runtime/spots/spot-publisher-transport.ts +5 -4
- package/src/runtime/spots/spot-remote-codec.ts +66 -65
- package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
- package/src/runtime/spots/spot-route-packet-dispatch.ts +129 -95
- package/src/runtime/spots/spot-route-replies.ts +23 -24
- package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
- package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
- package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +13 -18
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
- package/src/runtime/spots/spot-routing-internal.ts +1 -4
- package/src/runtime/spots/spot-runtime-ports.ts +5 -5
- package/src/runtime/spots/spot-serial-executor.ts +5 -9
- package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
- package/src/runtime/spots/spot-subscription-dispatch.ts +58 -47
- package/src/runtime/spots/spot-timer.ts +103 -91
- package/src/runtime/streams/actor-session-binding-registry.ts +421 -292
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +8 -4
- package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
- package/src/runtime/streams/bound-actor-relay-sender.ts +60 -50
- package/src/runtime/streams/bound-session-response-target.ts +39 -9
- package/src/runtime/streams/bound-session-service.ts +52 -42
- package/src/runtime/streams/index.ts +183 -100
- package/src/runtime/streams/managed-stream.ts +123 -90
- package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
- package/src/runtime/streams/protocol.ts +115 -46
- package/src/runtime/streams/session-actor-coordinator.ts +109 -93
- package/src/runtime/streams/session-calls.ts +2 -8
- package/src/runtime/streams/session-context.ts +96 -51
- package/src/runtime/streams/session-local-actors.ts +19 -3
- package/src/runtime/streams/session-provider.ts +5 -7
- package/src/runtime/streams/session-serial-executor.ts +7 -6
- package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
- package/src/runtime/streams/stream-frame-factory.ts +59 -40
- package/src/runtime/streams/stream-session-runtime.ts +317 -214
- package/src/runtime/workers/index.ts +68 -29
|
@@ -40,7 +40,10 @@ function encodeChannelEnvelopeParts(kind, channelName, packetName, payload, time
|
|
|
40
40
|
const encoded = encodePayload(payload, (0, channel_framework_packets_1.codecsForFrameworkPacket)(messageName, codecs), messageName, 'payload');
|
|
41
41
|
const flow = createFlow ? (0, flow_context_1.currentOrCreateFlow)('Application') : undefined;
|
|
42
42
|
const envelopeCorrelationId = correlationIdForOutboundKind(kind, correlationId);
|
|
43
|
-
return [
|
|
43
|
+
return [
|
|
44
|
+
encodeChannelHeader(kind, channelName, messageName, encoded.contentType, envelopeCorrelationId, timeoutMs === undefined ? null : new Date(Date.now() + timeoutMs).toISOString(), topic ?? null, null, null, undefined, applicationMetadataRecord(metadata), flow?.flowId, flow?.flowOrigin),
|
|
45
|
+
encoded.message
|
|
46
|
+
];
|
|
44
47
|
}
|
|
45
48
|
/**
|
|
46
49
|
* Encodes an outbound channel envelope with a deadline that was established
|
|
@@ -56,17 +59,26 @@ function encodeChannelEnvelopePartsAtDeadline(kind, channelName, packetName, pay
|
|
|
56
59
|
const encoded = encodePayload(payload, (0, channel_framework_packets_1.codecsForFrameworkPacket)(messageName, codecs), messageName, 'payload');
|
|
57
60
|
const flow = createFlow ? (0, flow_context_1.currentOrCreateFlow)('Application') : undefined;
|
|
58
61
|
const envelopeCorrelationId = correlationIdForOutboundKind(kind, correlationId);
|
|
59
|
-
return [
|
|
62
|
+
return [
|
|
63
|
+
encodeChannelHeader(kind, channelName, messageName, encoded.contentType, envelopeCorrelationId, new Date(deadlineUnixMs).toISOString(), topic ?? null, null, null, undefined, applicationMetadataRecord(metadata), flow?.flowId, flow?.flowOrigin),
|
|
64
|
+
encoded.message
|
|
65
|
+
];
|
|
60
66
|
}
|
|
61
67
|
function encodeChannelPublishEnvelopeParts(channelName, topic, packetName, payload, codecs, createFlow = true, metadata = EMPTY_OUTBOUND_METADATA) {
|
|
62
68
|
const messageName = (0, packet_name_1.resolveFrameworkPacketName)(payload, packetName, 'Channel');
|
|
63
69
|
const encoded = encodePayload(payload, (0, channel_framework_packets_1.codecsForFrameworkPacket)(messageName, codecs), messageName, 'payload');
|
|
64
70
|
const flow = createFlow ? (0, flow_context_1.currentOrCreateFlow)('Application') : undefined;
|
|
65
|
-
return [
|
|
71
|
+
return [
|
|
72
|
+
encodeChannelHeader(4 /* ZLinkChannelMessageKind.Publish */, channelName, messageName, encoded.contentType, null, null, topic, null, null, undefined, applicationMetadataRecord(metadata), flow?.flowId, flow?.flowOrigin),
|
|
73
|
+
encoded.message
|
|
74
|
+
];
|
|
66
75
|
}
|
|
67
76
|
function encodeChannelReplyParts(request, payload, codecs) {
|
|
68
77
|
const encoded = encodePayload(payload ?? Buffer.alloc(0), (0, channel_framework_packets_1.codecsForFrameworkPacket)(request.messageName, codecs), request.messageName, 'reply');
|
|
69
|
-
return [
|
|
78
|
+
return [
|
|
79
|
+
encodeChannelHeader(2 /* ZLinkChannelMessageKind.Response */, request.channelName, request.messageName, encoded.contentType, request.correlationId, null, null, undefined, undefined, undefined, EMPTY_APPLICATION_METADATA, request.flowId, request.flowOrigin),
|
|
80
|
+
encoded.message
|
|
81
|
+
];
|
|
70
82
|
}
|
|
71
83
|
/**
|
|
72
84
|
* Reply metadata marker for errors the framework generated itself (never for
|
|
@@ -101,11 +113,12 @@ function channelErrorCodeName(kind) {
|
|
|
101
113
|
return ERROR_KIND_WIRE_NAMES[kind] ?? 'internal_failure';
|
|
102
114
|
}
|
|
103
115
|
function encodeChannelErrorReplyParts(request, error, metadata = {}) {
|
|
104
|
-
const errorCode = channelErrorCodeName(error instanceof contracts_1.ZLinkFrameworkException
|
|
105
|
-
? error.kind
|
|
106
|
-
: contracts_1.ZLinkFrameworkErrorKind.InternalFailure);
|
|
116
|
+
const errorCode = channelErrorCodeName(error instanceof contracts_1.ZLinkFrameworkException ? error.kind : contracts_1.ZLinkFrameworkErrorKind.InternalFailure);
|
|
107
117
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
108
|
-
return [
|
|
118
|
+
return [
|
|
119
|
+
encodeChannelHeader(5 /* ZLinkChannelMessageKind.Error */, request.channelName, request.messageName, exports.JSON_CONTENT_TYPE, request.correlationId, null, null, errorCode, errorMessage, undefined, metadata, request.flowId, request.flowOrigin),
|
|
120
|
+
encodeJsonBytes(null)
|
|
121
|
+
];
|
|
109
122
|
}
|
|
110
123
|
function decodeChannelReply(parts, codecs) {
|
|
111
124
|
const header = decodeChannelHeader(parts);
|
|
@@ -119,9 +132,9 @@ function decodeChannelReply(parts, codecs) {
|
|
|
119
132
|
throw unsupportedChannelContentType(header.contentType);
|
|
120
133
|
}
|
|
121
134
|
const serializer = codecs?.serializers.get(header.contentType);
|
|
122
|
-
if (serializer === undefined
|
|
123
|
-
|
|
124
|
-
|
|
135
|
+
if (serializer === undefined &&
|
|
136
|
+
header.contentType !== exports.BINARY_CONTENT_TYPE &&
|
|
137
|
+
header.contentType !== exports.JSON_CONTENT_TYPE) {
|
|
125
138
|
throw unsupportedChannelContentType(header.contentType);
|
|
126
139
|
}
|
|
127
140
|
if (parts.length < 2 || parts[1].data().length === 0) {
|
|
@@ -146,8 +159,7 @@ function decodeChannelError(header) {
|
|
|
146
159
|
// Cross-language contract: errorCode carries the snake_case wire name.
|
|
147
160
|
// An unknown name degrades to InternalFailure, matching the C++
|
|
148
161
|
// request_failure_mapper fallback for unrecognized codes.
|
|
149
|
-
const publicKind = ERROR_KIND_BY_WIRE_NAME.get(code)
|
|
150
|
-
?? contracts_1.ZLinkFrameworkErrorKind.InternalFailure;
|
|
162
|
+
const publicKind = ERROR_KIND_BY_WIRE_NAME.get(code) ?? contracts_1.ZLinkFrameworkErrorKind.InternalFailure;
|
|
151
163
|
failure = new contracts_1.ZLinkFrameworkException(publicKind, message);
|
|
152
164
|
}
|
|
153
165
|
// Cross-language contract (.NET ZLinkErrorOriginWire.RemoteReplyOrigin /
|
|
@@ -160,10 +172,10 @@ function decodeChannelError(header) {
|
|
|
160
172
|
// reached for bytes that DID come back over the wire) are unaffected and
|
|
161
173
|
// stay unclassified (`origin: undefined`, i.e. "unspecified") because
|
|
162
174
|
// they never call this function at all.
|
|
163
|
-
failure.origin =
|
|
164
|
-
=== exports.ZLINK_FRAMEWORK_ORIGIN_METADATA_VALUE
|
|
165
|
-
|
|
166
|
-
|
|
175
|
+
failure.origin =
|
|
176
|
+
header.metadata[exports.ZLINK_FRAMEWORK_ORIGIN_METADATA_KEY] === exports.ZLINK_FRAMEWORK_ORIGIN_METADATA_VALUE
|
|
177
|
+
? exports.ZLINK_FRAMEWORK_ORIGIN_METADATA_VALUE
|
|
178
|
+
: 'application';
|
|
167
179
|
return failure;
|
|
168
180
|
}
|
|
169
181
|
function decodeChannelEnvelope(parts, decodedHeader, flowEnabled = true) {
|
|
@@ -226,13 +238,12 @@ function encodePayload(value, codecs, packetName, contractPart) {
|
|
|
226
238
|
message: (0, encoded_payload_storage_1.borrowEncodedPayload)(payload) ?? payload.data()
|
|
227
239
|
};
|
|
228
240
|
}
|
|
229
|
-
const declaredType = (0, ZLinkMessage_1.isZLinkMessage)(value)
|
|
230
|
-
? (0, ZLinkMessage_1.readZLinkMessageDeclaredType)(value)
|
|
231
|
-
: undefined;
|
|
241
|
+
const declaredType = (0, ZLinkMessage_1.isZLinkMessage)(value) ? (0, ZLinkMessage_1.readZLinkMessageDeclaredType)(value) : undefined;
|
|
232
242
|
if ((0, ZLinkMessage_1.isZLinkMessage)(value))
|
|
233
243
|
value = value.decode();
|
|
234
244
|
const selected = (0, payload_codec_1.selectSerializerWithContentType)(value, codecs, declaredType);
|
|
235
|
-
if (selected !== undefined &&
|
|
245
|
+
if (selected !== undefined &&
|
|
246
|
+
!(Buffer.isBuffer(value) || value instanceof Uint8Array || isMessage(value))) {
|
|
236
247
|
const payload = selected.serializer.serialize(value);
|
|
237
248
|
return {
|
|
238
249
|
contentType: selected.contentType,
|
|
@@ -256,7 +267,9 @@ function contentTypeOf(value) {
|
|
|
256
267
|
: exports.JSON_CONTENT_TYPE;
|
|
257
268
|
}
|
|
258
269
|
function isMessage(value) {
|
|
259
|
-
return typeof value === 'object' &&
|
|
270
|
+
return (typeof value === 'object' &&
|
|
271
|
+
value !== null &&
|
|
272
|
+
typeof value.data === 'function');
|
|
260
273
|
}
|
|
261
274
|
function encodeJsonBytes(value, schema) {
|
|
262
275
|
return Buffer.from((0, framework_json_v1_1.stringifyFrameworkJsonV1)(value, schema));
|
|
@@ -403,10 +416,14 @@ class ChannelHeaderWriter {
|
|
|
403
416
|
}
|
|
404
417
|
function encodeFlowOrigin(origin) {
|
|
405
418
|
switch (origin) {
|
|
406
|
-
case 'Inbound':
|
|
407
|
-
|
|
408
|
-
case '
|
|
409
|
-
|
|
419
|
+
case 'Inbound':
|
|
420
|
+
return 1;
|
|
421
|
+
case 'Timer':
|
|
422
|
+
return 2;
|
|
423
|
+
case 'Application':
|
|
424
|
+
return 3;
|
|
425
|
+
case 'Lifecycle':
|
|
426
|
+
return 4;
|
|
410
427
|
}
|
|
411
428
|
}
|
|
412
429
|
function decodeChannelHeader(parts, flowEnabled = true) {
|
|
@@ -534,9 +551,14 @@ class CanonicalChannelHeaderReader {
|
|
|
534
551
|
return undefined;
|
|
535
552
|
}
|
|
536
553
|
}
|
|
537
|
-
else if (escaped !== 0x22 &&
|
|
538
|
-
|
|
539
|
-
|
|
554
|
+
else if (escaped !== 0x22 &&
|
|
555
|
+
escaped !== 0x5c &&
|
|
556
|
+
escaped !== 0x2f &&
|
|
557
|
+
escaped !== 0x62 &&
|
|
558
|
+
escaped !== 0x66 &&
|
|
559
|
+
escaped !== 0x6e &&
|
|
560
|
+
escaped !== 0x72 &&
|
|
561
|
+
escaped !== 0x74) {
|
|
540
562
|
return undefined;
|
|
541
563
|
}
|
|
542
564
|
}
|
|
@@ -576,9 +598,9 @@ class CanonicalChannelHeaderReader {
|
|
|
576
598
|
}
|
|
577
599
|
}
|
|
578
600
|
function isHexDigit(value) {
|
|
579
|
-
return (value >= 0x30 && value <= 0x39)
|
|
580
|
-
|
|
581
|
-
|
|
601
|
+
return ((value >= 0x30 && value <= 0x39) ||
|
|
602
|
+
(value >= 0x41 && value <= 0x46) ||
|
|
603
|
+
(value >= 0x61 && value <= 0x66));
|
|
582
604
|
}
|
|
583
605
|
function schemaForInboundChannelEnvelope(header) {
|
|
584
606
|
const contract = (0, Attributes_1.readZLinkPacketJsonContract)(header.messageName);
|
|
@@ -613,9 +635,14 @@ function validateChannelHeader(value, flowEnabled = true) {
|
|
|
613
635
|
requireNullableString(header.topic, 'topic');
|
|
614
636
|
// Parsing already gives this receive operation an owned object. Validate
|
|
615
637
|
// and normalize it here instead of allocating a second header per record.
|
|
616
|
-
header.errorCode =
|
|
617
|
-
|
|
618
|
-
header.
|
|
638
|
+
header.errorCode =
|
|
639
|
+
header.errorCode === undefined ? null : requireNullableString(header.errorCode, 'errorCode');
|
|
640
|
+
header.errorMessage =
|
|
641
|
+
header.errorMessage === undefined
|
|
642
|
+
? null
|
|
643
|
+
: requireNullableString(header.errorMessage, 'errorMessage');
|
|
644
|
+
header.source =
|
|
645
|
+
header.source === undefined ? undefined : requireNullableString(header.source, 'source');
|
|
619
646
|
header.metadata = requireApplicationMetadata(header.metadata);
|
|
620
647
|
header.flowId = flowId;
|
|
621
648
|
header.flowOrigin = flowOrigin;
|
|
@@ -638,9 +665,9 @@ function correlationIdForOutboundKind(kind, correlationId) {
|
|
|
638
665
|
return selected;
|
|
639
666
|
}
|
|
640
667
|
function validateCorrelationForKind(kind, correlationId) {
|
|
641
|
-
if (kind === 1 /* ZLinkChannelMessageKind.Request */
|
|
642
|
-
|
|
643
|
-
|
|
668
|
+
if (kind === 1 /* ZLinkChannelMessageKind.Request */ ||
|
|
669
|
+
kind === 2 /* ZLinkChannelMessageKind.Response */ ||
|
|
670
|
+
kind === 5 /* ZLinkChannelMessageKind.Error */) {
|
|
644
671
|
if (correlationId === null) {
|
|
645
672
|
throw new configuration_1.ZLinkConfigurationException(`Channel ${channelKindName(kind)} requires correlationId.`);
|
|
646
673
|
}
|
|
@@ -659,11 +686,16 @@ function validateCorrelationValue(correlationId) {
|
|
|
659
686
|
}
|
|
660
687
|
function channelKindName(kind) {
|
|
661
688
|
switch (kind) {
|
|
662
|
-
case 1 /* ZLinkChannelMessageKind.Request */:
|
|
663
|
-
|
|
664
|
-
case
|
|
665
|
-
|
|
666
|
-
case
|
|
689
|
+
case 1 /* ZLinkChannelMessageKind.Request */:
|
|
690
|
+
return 'request';
|
|
691
|
+
case 2 /* ZLinkChannelMessageKind.Response */:
|
|
692
|
+
return 'response';
|
|
693
|
+
case 3 /* ZLinkChannelMessageKind.Command */:
|
|
694
|
+
return 'send';
|
|
695
|
+
case 4 /* ZLinkChannelMessageKind.Publish */:
|
|
696
|
+
return 'publish';
|
|
697
|
+
case 5 /* ZLinkChannelMessageKind.Error */:
|
|
698
|
+
return 'error';
|
|
667
699
|
}
|
|
668
700
|
}
|
|
669
701
|
const EMPTY_APPLICATION_METADATA = Object.freeze({});
|
|
@@ -712,10 +744,14 @@ function requireFlowId(value) {
|
|
|
712
744
|
}
|
|
713
745
|
function requireFlowOrigin(value) {
|
|
714
746
|
switch (value) {
|
|
715
|
-
case 1:
|
|
716
|
-
|
|
717
|
-
case
|
|
718
|
-
|
|
747
|
+
case 1:
|
|
748
|
+
return 'Inbound';
|
|
749
|
+
case 2:
|
|
750
|
+
return 'Timer';
|
|
751
|
+
case 3:
|
|
752
|
+
return 'Application';
|
|
753
|
+
case 4:
|
|
754
|
+
return 'Lifecycle';
|
|
719
755
|
}
|
|
720
756
|
throw new configuration_1.ZLinkConfigurationException('Channel envelope flowOrigin is invalid.');
|
|
721
757
|
}
|
|
@@ -76,7 +76,7 @@ class ZLinkChannelOutboundOperations {
|
|
|
76
76
|
channelRouteKind: 'client_server',
|
|
77
77
|
serverRid,
|
|
78
78
|
packetName,
|
|
79
|
-
correlationId: undefined
|
|
79
|
+
correlationId: undefined
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
82
|
request(channelName, packetName, request, timeoutMs, signal, metadata) {
|
|
@@ -287,8 +287,8 @@ class ZLinkChannelOutboundOperations {
|
|
|
287
287
|
if (!isRemoteChannelErrorReply(error)) {
|
|
288
288
|
traceTerminal(requestTerminalResult(error, signal));
|
|
289
289
|
}
|
|
290
|
-
if (this.sockets.routeMemberStatus(routerChannelId, targetNodeRid) === 'disconnected'
|
|
291
|
-
|
|
290
|
+
if (this.sockets.routeMemberStatus(routerChannelId, targetNodeRid) === 'disconnected' &&
|
|
291
|
+
(isSubmitDeadline(error) || error instanceof route_disconnected_error_1.ZLinkRouteDisconnectedError)) {
|
|
292
292
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, `Route channel '${routerChannelId}' member '${targetNodeRid}' is not connected.`, true, error);
|
|
293
293
|
}
|
|
294
294
|
throw error;
|
|
@@ -319,8 +319,8 @@ function keepChannelRequestAlive(request) {
|
|
|
319
319
|
return request.finally(() => clearTimeout(keepalive));
|
|
320
320
|
}
|
|
321
321
|
function isSubmitDeadline(error) {
|
|
322
|
-
return error instanceof contracts_1.ZLinkFrameworkException
|
|
323
|
-
|
|
322
|
+
return (error instanceof contracts_1.ZLinkFrameworkException &&
|
|
323
|
+
(0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.DeadlineExceeded);
|
|
324
324
|
}
|
|
325
325
|
function publishResult(status) {
|
|
326
326
|
return { status };
|
|
@@ -335,7 +335,7 @@ function requestTerminalResult(error, signal) {
|
|
|
335
335
|
return 'failed';
|
|
336
336
|
}
|
|
337
337
|
function isRemoteChannelErrorReply(error) {
|
|
338
|
-
return error instanceof contracts_1.ZLinkFrameworkException
|
|
339
|
-
|
|
340
|
-
|
|
338
|
+
return (error instanceof contracts_1.ZLinkFrameworkException &&
|
|
339
|
+
'origin' in error &&
|
|
340
|
+
error.origin !== undefined);
|
|
341
341
|
}
|
|
@@ -22,7 +22,7 @@ class ZLinkReceiveRoundRobinCoordinator {
|
|
|
22
22
|
return token;
|
|
23
23
|
}
|
|
24
24
|
setReady(token, ready) {
|
|
25
|
-
const owner = this.owners.find(candidate => candidate.token === token);
|
|
25
|
+
const owner = this.owners.find((candidate) => candidate.token === token);
|
|
26
26
|
if (owner !== undefined)
|
|
27
27
|
owner.ready = ready;
|
|
28
28
|
}
|
|
@@ -38,7 +38,7 @@ class ZLinkReceiveRoundRobinCoordinator {
|
|
|
38
38
|
release(token) {
|
|
39
39
|
if (this.active !== token)
|
|
40
40
|
return;
|
|
41
|
-
const index = this.owners.findIndex(owner => owner.token === token);
|
|
41
|
+
const index = this.owners.findIndex((owner) => owner.token === token);
|
|
42
42
|
this.active = undefined;
|
|
43
43
|
if (this.owners.length > 0)
|
|
44
44
|
this.cursor = (index + 1) % this.owners.length;
|
|
@@ -47,7 +47,7 @@ class ZLinkReceiveRoundRobinCoordinator {
|
|
|
47
47
|
return this.rawReceiveReservations.tryAcquire();
|
|
48
48
|
}
|
|
49
49
|
unregister(token) {
|
|
50
|
-
const index = this.owners.findIndex(owner => owner.token === token);
|
|
50
|
+
const index = this.owners.findIndex((owner) => owner.token === token);
|
|
51
51
|
if (index < 0)
|
|
52
52
|
return;
|
|
53
53
|
if (this.active === token)
|
|
@@ -152,7 +152,7 @@ class ZLinkChannelReceiveLoop {
|
|
|
152
152
|
this.roundRobin?.setReady(this.receiveOwner, false);
|
|
153
153
|
this.roundRobin?.release(this.receiveOwner);
|
|
154
154
|
batch.reset();
|
|
155
|
-
if (!await this.poller.waitForReadable(capacitySignal))
|
|
155
|
+
if (!(await this.poller.waitForReadable(capacitySignal)))
|
|
156
156
|
break;
|
|
157
157
|
continue;
|
|
158
158
|
}
|
|
@@ -184,7 +184,7 @@ class ZLinkChannelReceiveLoop {
|
|
|
184
184
|
this.roundRobin?.setReady(this.receiveOwner, false);
|
|
185
185
|
this.roundRobin?.release(this.receiveOwner);
|
|
186
186
|
batch.reset();
|
|
187
|
-
if (!await this.poller.waitForReadable(capacitySignal))
|
|
187
|
+
if (!(await this.poller.waitForReadable(capacitySignal)))
|
|
188
188
|
break;
|
|
189
189
|
continue;
|
|
190
190
|
}
|
|
@@ -277,8 +277,8 @@ class ZLinkChannelReceiveLoop {
|
|
|
277
277
|
return { kind: 'consumed', closeReceived: true };
|
|
278
278
|
}
|
|
279
279
|
const decodedHeader = (0, channel_envelope_inspection_1.tryDecodeChannelHeader)(received.parts, this.dispatcher.flowEnabled?.() ?? true);
|
|
280
|
-
if (decodedHeader === undefined
|
|
281
|
-
|
|
280
|
+
if (decodedHeader === undefined &&
|
|
281
|
+
this.spotRouteBridge?.handleRouterReceived(this.channelName, received.routingId, 0n, received.parts) === true) {
|
|
282
282
|
return { kind: 'consumed', closeReceived: false };
|
|
283
283
|
}
|
|
284
284
|
return { kind: 'application', decodedHeader };
|
|
@@ -342,7 +342,7 @@ class ZLinkSubscriberReceiveLoop {
|
|
|
342
342
|
this.roundRobin?.setReady(this.receiveOwner, false);
|
|
343
343
|
this.roundRobin?.release(this.receiveOwner);
|
|
344
344
|
batch.reset();
|
|
345
|
-
if (!await this.poller.waitForReadable(capacitySignal))
|
|
345
|
+
if (!(await this.poller.waitForReadable(capacitySignal)))
|
|
346
346
|
break;
|
|
347
347
|
continue;
|
|
348
348
|
}
|
|
@@ -373,7 +373,7 @@ class ZLinkSubscriberReceiveLoop {
|
|
|
373
373
|
this.roundRobin?.setReady(this.receiveOwner, false);
|
|
374
374
|
this.roundRobin?.release(this.receiveOwner);
|
|
375
375
|
batch.reset();
|
|
376
|
-
if (!await this.poller.waitForReadable(capacitySignal))
|
|
376
|
+
if (!(await this.poller.waitForReadable(capacitySignal)))
|
|
377
377
|
break;
|
|
378
378
|
continue;
|
|
379
379
|
}
|
|
@@ -454,11 +454,9 @@ class ZLinkSubscriberReceiveLoop {
|
|
|
454
454
|
}
|
|
455
455
|
classify(topicMessage) {
|
|
456
456
|
const infrastructureResult = this.infrastructureHandler?.(topicMessage);
|
|
457
|
-
const decodedHeader = typeof infrastructureResult === 'object'
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
if (infrastructureResult === true
|
|
461
|
-
|| (typeof infrastructureResult === 'object' && infrastructureResult.consumed)) {
|
|
457
|
+
const decodedHeader = typeof infrastructureResult === 'object' ? infrastructureResult.decodedHeader : undefined;
|
|
458
|
+
if (infrastructureResult === true ||
|
|
459
|
+
(typeof infrastructureResult === 'object' && infrastructureResult.consumed)) {
|
|
462
460
|
return { kind: 'consumed' };
|
|
463
461
|
}
|
|
464
462
|
return { kind: 'application', decodedHeader };
|
|
@@ -518,7 +516,7 @@ class ZLinkRouteReceiveLoop {
|
|
|
518
516
|
this.roundRobin?.setReady(this.receiveOwner, false);
|
|
519
517
|
this.roundRobin?.release(this.receiveOwner);
|
|
520
518
|
batch.reset();
|
|
521
|
-
if (!await this.poller.waitForReadable(capacitySignal))
|
|
519
|
+
if (!(await this.poller.waitForReadable(capacitySignal)))
|
|
522
520
|
break;
|
|
523
521
|
continue;
|
|
524
522
|
}
|
|
@@ -542,7 +540,7 @@ class ZLinkRouteReceiveLoop {
|
|
|
542
540
|
this.roundRobin?.setReady(this.receiveOwner, false);
|
|
543
541
|
this.roundRobin?.release(this.receiveOwner);
|
|
544
542
|
batch.reset();
|
|
545
|
-
if (!await this.poller.waitForReadable(capacitySignal))
|
|
543
|
+
if (!(await this.poller.waitForReadable(capacitySignal)))
|
|
546
544
|
break;
|
|
547
545
|
continue;
|
|
548
546
|
}
|
|
@@ -566,7 +564,7 @@ class ZLinkRouteReceiveLoop {
|
|
|
566
564
|
// Promise. Track that terminal without serializing the single route
|
|
567
565
|
// receiver; the held reservation bounds pending infrastructure sends.
|
|
568
566
|
this.inFlight.track(infrastructure
|
|
569
|
-
.catch(error => {
|
|
567
|
+
.catch((error) => {
|
|
570
568
|
received.close();
|
|
571
569
|
throw error;
|
|
572
570
|
})
|
|
@@ -656,12 +654,12 @@ class ZLinkReceiveBatchBudget {
|
|
|
656
654
|
record(bytes) {
|
|
657
655
|
this.messages += 1;
|
|
658
656
|
this.bytes += bytes;
|
|
659
|
-
return this.messages >= RECEIVE_BATCH_MESSAGE_LIMIT
|
|
660
|
-
|
|
661
|
-
|
|
657
|
+
return (this.messages >= RECEIVE_BATCH_MESSAGE_LIMIT ||
|
|
658
|
+
this.bytes >= RECEIVE_BATCH_BYTE_LIMIT ||
|
|
659
|
+
performance.now() - this.startedAt >= RECEIVE_BATCH_TIME_LIMIT_MS);
|
|
662
660
|
}
|
|
663
661
|
async yieldAndReset() {
|
|
664
|
-
await new Promise(resolve => setImmediate(resolve));
|
|
662
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
665
663
|
this.reset();
|
|
666
664
|
}
|
|
667
665
|
reset() {
|
|
@@ -671,7 +669,7 @@ class ZLinkReceiveBatchBudget {
|
|
|
671
669
|
}
|
|
672
670
|
}
|
|
673
671
|
function waitReceiveLoopTurn() {
|
|
674
|
-
return new Promise(resolve => setImmediate(resolve));
|
|
672
|
+
return new Promise((resolve) => setImmediate(resolve));
|
|
675
673
|
}
|
|
676
674
|
function messageBytes(parts) {
|
|
677
675
|
return parts.reduce((sum, part) => sum + messagePartBytes(part), 0);
|
|
@@ -15,7 +15,7 @@ class ZLinkReceiveTaskTracker {
|
|
|
15
15
|
}
|
|
16
16
|
track(task, consumeError = true) {
|
|
17
17
|
this.tasks.add(task);
|
|
18
|
-
void task.then(() => this.complete(task), error => {
|
|
18
|
+
void task.then(() => this.complete(task), (error) => {
|
|
19
19
|
this.complete(task);
|
|
20
20
|
if (consumeError) {
|
|
21
21
|
try {
|