@zlink-systems/framework 0.26.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +4 -0
- package/dist/internal.js +15 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +1 -2
- package/dist/runtime/activation-admission.js +2 -6
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +42 -143
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +13 -11
- package/dist/runtime/actors/actor-handoff.d.ts +4 -4
- package/dist/runtime/actors/actor-handoff.js +8 -8
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +83 -105
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
- package/dist/runtime/actors/actor-remote-joiner.js +5 -9
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
- package/dist/runtime/actors/actor-request-deadline.js +31 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
- package/dist/runtime/actors/deferred-join-completion.js +1 -0
- package/dist/runtime/actors/index.d.ts +9 -7
- package/dist/runtime/actors/index.js +87 -69
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +2 -0
- package/dist/runtime/admission.js +7 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +6 -23
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +1 -1
- package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
- package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -8
- package/dist/runtime/channels/channel-clients.js +68 -52
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.js +47 -29
- package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
- package/dist/runtime/channels/channel-outbound-operations.js +9 -10
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.js +5 -2
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
- package/dist/runtime/channels/channel-socket-registry.js +248 -174
- package/dist/runtime/channels/channel-transports.d.ts +11 -17
- package/dist/runtime/channels/channel-transports.js +68 -47
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +130 -72
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.js +3 -2
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +12 -9
- package/dist/runtime/execution/index.js +58 -14
- package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
- package/dist/runtime/execution/serial-execution-queue.js +54 -15
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
- package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
- package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
- package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
- package/dist/runtime/foundation/service-topology-registry.js +17 -32
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
- package/dist/runtime/host/actor-packet-relay.js +48 -91
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
- package/dist/runtime/host/actor-transfer-runtime.js +143 -176
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +14 -13
- package/dist/runtime/host/index.js +190 -157
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +7 -20
- package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
- package/dist/runtime/host/route-mesh-runtime.js +171 -252
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
- package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
- package/dist/runtime/host/spot-address-transport.d.ts +2 -3
- package/dist/runtime/host/spot-address-transport.js +34 -136
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
- package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
- package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +4 -9
- package/dist/runtime/locations/lifecycle.js +2 -31
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +303 -332
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +37 -28
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
- package/dist/runtime/locations/spot-location-claims.js +42 -1
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/submission-result.d.ts +3 -0
- package/dist/runtime/messaging/submission-result.js +48 -0
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
- package/dist/runtime/spots/index.d.ts +14 -20
- package/dist/runtime/spots/index.js +302 -176
- package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
- package/dist/runtime/spots/spot-activation-registry.js +14 -50
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +2 -2
- package/dist/runtime/spots/spot-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-activation.js +49 -32
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
- package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
- package/dist/runtime/spots/spot-actor-membership.js +22 -45
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +9 -20
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +5 -4
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +9 -8
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
- package/dist/runtime/spots/spot-serial-executor.js +2 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
- package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +11 -1
- package/dist/runtime/streams/index.d.ts +14 -15
- package/dist/runtime/streams/index.js +20 -21
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +17 -8
- package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +1 -1
- package/dist/runtime/streams/session-calls.js +5 -4
- package/dist/runtime/streams/session-context.d.ts +6 -6
- package/dist/runtime/streams/session-context.js +22 -4
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- package/src/internal.ts +14 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +2 -8
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +77 -204
- package/src/runtime/actors/actor-context.ts +39 -33
- package/src/runtime/actors/actor-handoff.ts +24 -22
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +172 -174
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +9 -11
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +10 -6
- package/src/runtime/actors/index.ts +100 -79
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +8 -1
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +13 -29
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
- package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
- package/src/runtime/backend/raw-binding-port.ts +1 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -85
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +58 -29
- package/src/runtime/channels/channel-outbound-operations.ts +10 -23
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +6 -2
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +301 -192
- package/src/runtime/channels/channel-transports.ts +161 -112
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +172 -91
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +5 -2
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +60 -20
- package/src/runtime/execution/serial-execution-queue.ts +131 -18
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
- package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
- package/src/runtime/foundation/service-topology-registry.ts +23 -32
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +57 -147
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +180 -260
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +327 -296
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +8 -41
- package/src/runtime/host/route-mesh-runtime.ts +228 -271
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
- package/src/runtime/host/spot-address-transport.ts +73 -195
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
- package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +13 -43
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +450 -478
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +75 -49
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +58 -1
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/submission-result.ts +57 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
- package/src/runtime/spots/index.ts +433 -229
- package/src/runtime/spots/spot-activation-registry.ts +30 -69
- package/src/runtime/spots/spot-activation-state.ts +2 -2
- package/src/runtime/spots/spot-activation.ts +67 -37
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
- package/src/runtime/spots/spot-actor-membership.ts +40 -72
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -30
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +21 -17
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
- package/src/runtime/spots/spot-outbound.ts +45 -23
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +5 -27
- package/src/runtime/spots/spot-serial-executor.ts +2 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +21 -1
- package/src/runtime/streams/index.ts +76 -64
- package/src/runtime/streams/managed-stream.ts +29 -10
- package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +6 -5
- package/src/runtime/streams/session-context.ts +54 -10
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -41,7 +41,10 @@ export declare class ZLinkBackendResultError extends Error {
|
|
|
41
41
|
readonly operation: 'request' | 'submit';
|
|
42
42
|
readonly result: number;
|
|
43
43
|
readonly nativeErrno?: number | undefined;
|
|
44
|
-
constructor(operation: 'request' | 'submit', result: number, nativeErrno?: number | undefined, options?: ErrorOptions
|
|
44
|
+
constructor(operation: 'request' | 'submit', result: number, nativeErrno?: number | undefined, options?: ErrorOptions & {
|
|
45
|
+
readonly phase?: 'submit' | 'completion';
|
|
46
|
+
});
|
|
47
|
+
readonly phase: 'submit' | 'completion';
|
|
45
48
|
}
|
|
46
49
|
export declare function isZLinkBackendResultError(error: unknown): error is ZLinkBackendResultError;
|
|
47
50
|
export declare function isBackendNotConnectedError(error: unknown): boolean;
|
|
@@ -48,7 +48,9 @@ class ZLinkBackendResultError extends Error {
|
|
|
48
48
|
this.result = result;
|
|
49
49
|
this.nativeErrno = nativeErrno;
|
|
50
50
|
this.name = 'ZLinkBackendResultError';
|
|
51
|
+
this.phase = options?.phase ?? 'completion';
|
|
51
52
|
}
|
|
53
|
+
phase;
|
|
52
54
|
}
|
|
53
55
|
exports.ZLinkBackendResultError = ZLinkBackendResultError;
|
|
54
56
|
function isZLinkBackendResultError(error) {
|
|
@@ -2,15 +2,24 @@ import type { ZLinkChannelClient, ZLinkChannelRequestCall, ZLinkFanoutClient, ZL
|
|
|
2
2
|
import type { SpotHandle } from '../spots/spot-handle';
|
|
3
3
|
import { type ZLinkFrameworkRegistration } from '../configuration';
|
|
4
4
|
import type { ZLinkChannelClientTransportSource, ZLinkRouteClientTransport, ZLinkSpotPublisherClientTransport } from './channel-transports';
|
|
5
|
+
type RouteMeshChannelMatch = {
|
|
6
|
+
readonly meshName: string;
|
|
7
|
+
readonly mesh: NonNullable<ReturnType<ZLinkFrameworkRegistration['spotNodes']['get']>>;
|
|
8
|
+
};
|
|
9
|
+
type ChannelRouteResolution = {
|
|
10
|
+
readonly kind: 'client-server';
|
|
11
|
+
readonly channel: NonNullable<ReturnType<ZLinkFrameworkRegistration['channels']['get']>>;
|
|
12
|
+
} | {
|
|
13
|
+
readonly kind: 'route-mesh';
|
|
14
|
+
readonly matches: readonly RouteMeshChannelMatch[];
|
|
15
|
+
};
|
|
16
|
+
export declare function resolveChannelRoute(registration: ZLinkFrameworkRegistration, channelName: string): ChannelRouteResolution | undefined;
|
|
17
|
+
export declare function requireUniqueRouteMeshChannel(matches: readonly RouteMeshChannelMatch[], duplicateMessage: string): RouteMeshChannelMatch;
|
|
5
18
|
export declare class DefaultZLinkChannelClient implements ZLinkChannelClient {
|
|
6
|
-
private readonly
|
|
7
|
-
|
|
8
|
-
constructor(registration: ZLinkFrameworkRegistration, transport?: ZLinkChannelClientTransportSource | undefined);
|
|
19
|
+
private readonly routeClient;
|
|
20
|
+
constructor(registration: ZLinkFrameworkRegistration, channelTransport?: ZLinkChannelClientTransportSource, routeTransport?: ZLinkRouteClientTransport, spotRouterChannelIdForMesh?: (meshName: string) => string);
|
|
9
21
|
sendToChannel(channelName: string, message: unknown): ZLinkSendCall;
|
|
10
22
|
requestToChannel(channelName: string, request: unknown): ZLinkChannelRequestCall;
|
|
11
|
-
private defaultRequestTimeout;
|
|
12
|
-
private requireChannel;
|
|
13
|
-
private requireTransport;
|
|
14
23
|
}
|
|
15
24
|
export declare class DefaultZLinkFanoutClient implements ZLinkFanoutClient {
|
|
16
25
|
private readonly registration;
|
|
@@ -25,7 +34,8 @@ export declare class DefaultZLinkRouteClient implements ZLinkRouteClient {
|
|
|
25
34
|
private readonly registration;
|
|
26
35
|
private readonly transport?;
|
|
27
36
|
private readonly spotRouterChannelIdForMesh;
|
|
28
|
-
|
|
37
|
+
private readonly channelTransport?;
|
|
38
|
+
constructor(registration: ZLinkFrameworkRegistration, transport?: ZLinkRouteClientTransport | undefined, spotRouterChannelIdForMesh?: (meshName: string) => string, channelTransport?: ZLinkChannelClientTransportSource | undefined);
|
|
29
39
|
sendToNode(meshName: string, targetNodeRid: string, message: unknown): ZLinkSendCall;
|
|
30
40
|
requestToNode(meshName: string, targetNodeRid: string, request: unknown): ZLinkRequestCall;
|
|
31
41
|
sendToChannel(channelName: string, message: unknown): ZLinkSendCall;
|
|
@@ -34,9 +44,10 @@ export declare class DefaultZLinkRouteClient implements ZLinkRouteClient {
|
|
|
34
44
|
requestToSpot(spot: SpotHandle, request: unknown): ZLinkRequestCall;
|
|
35
45
|
private defaultRequestTimeout;
|
|
36
46
|
private requireMesh;
|
|
37
|
-
private
|
|
47
|
+
private requireChannelRoute;
|
|
38
48
|
private defaultRequestTimeoutForChannel;
|
|
39
49
|
private requireTransport;
|
|
50
|
+
private requireChannelTransport;
|
|
40
51
|
private requireSpotTransport;
|
|
41
52
|
}
|
|
42
53
|
export declare class DefaultZLinkSpotPublisherClient implements ZLinkSpotPublisherClient {
|
|
@@ -47,3 +58,4 @@ export declare class DefaultZLinkSpotPublisherClient implements ZLinkSpotPublish
|
|
|
47
58
|
private requireMeshChannel;
|
|
48
59
|
private requireTransport;
|
|
49
60
|
}
|
|
61
|
+
export {};
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DefaultZLinkSpotPublisherClient = exports.DefaultZLinkRouteClient = exports.DefaultZLinkFanoutClient = exports.DefaultZLinkChannelClient = void 0;
|
|
4
|
+
exports.resolveChannelRoute = resolveChannelRoute;
|
|
5
|
+
exports.requireUniqueRouteMeshChannel = requireUniqueRouteMeshChannel;
|
|
6
|
+
const Registration_1 = require("../../contracts/Configuration/Registration");
|
|
4
7
|
const configuration_1 = require("../configuration");
|
|
5
8
|
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
6
9
|
const submission_result_1 = require("../messaging/submission-result");
|
|
@@ -9,39 +12,32 @@ const execution_1 = require("../execution");
|
|
|
9
12
|
const fanout_service_wire_1 = require("./fanout-service-wire");
|
|
10
13
|
const spot_outbound_1 = require("../spots/spot-outbound");
|
|
11
14
|
const packet_name_1 = require("../messaging/packet-name");
|
|
15
|
+
function resolveChannelRoute(registration, channelName) {
|
|
16
|
+
const clientServerChannel = registration.channels.get(channelName);
|
|
17
|
+
if (clientServerChannel !== undefined) {
|
|
18
|
+
return { kind: 'client-server', channel: clientServerChannel };
|
|
19
|
+
}
|
|
20
|
+
const matches = [...registration.spotNodes.entries()]
|
|
21
|
+
.filter(([, mesh]) => Object.prototype.hasOwnProperty.call(mesh.meshChannels ?? {}, channelName))
|
|
22
|
+
.map(([meshName, mesh]) => ({ meshName, mesh }));
|
|
23
|
+
return matches.length === 0 ? undefined : { kind: 'route-mesh', matches };
|
|
24
|
+
}
|
|
25
|
+
function requireUniqueRouteMeshChannel(matches, duplicateMessage) {
|
|
26
|
+
if (matches.length !== 1) {
|
|
27
|
+
throw new configuration_1.ZLinkConfigurationException(duplicateMessage);
|
|
28
|
+
}
|
|
29
|
+
return matches[0];
|
|
30
|
+
}
|
|
12
31
|
class DefaultZLinkChannelClient {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
this.registration = registration;
|
|
17
|
-
this.transport = transport;
|
|
32
|
+
routeClient;
|
|
33
|
+
constructor(registration, channelTransport, routeTransport, spotRouterChannelIdForMesh = (meshName) => meshName) {
|
|
34
|
+
this.routeClient = new DefaultZLinkRouteClient(registration, routeTransport, spotRouterChannelIdForMesh, channelTransport);
|
|
18
35
|
}
|
|
19
36
|
sendToChannel(channelName, message) {
|
|
20
|
-
return
|
|
37
|
+
return this.routeClient.sendToChannel(channelName, message);
|
|
21
38
|
}
|
|
22
39
|
requestToChannel(channelName, request) {
|
|
23
|
-
return
|
|
24
|
-
}
|
|
25
|
-
defaultRequestTimeout(channelName) {
|
|
26
|
-
return (this.registration.channels.get(channelName)?.requestTimeoutMs ??
|
|
27
|
-
this.registration.requestTimeoutMs ??
|
|
28
|
-
30_000);
|
|
29
|
-
}
|
|
30
|
-
requireChannel(channelName) {
|
|
31
|
-
const channel = this.registration.channels.get(channelName);
|
|
32
|
-
if (channel === undefined) {
|
|
33
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound, `Channel client '${channelName}' is not registered.`);
|
|
34
|
-
}
|
|
35
|
-
if (channel.client === undefined) {
|
|
36
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidConfiguration, `Channel client role '${channelName}' is not configured.`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
requireTransport() {
|
|
40
|
-
const transport = typeof this.transport === 'function' ? this.transport() : this.transport;
|
|
41
|
-
if (transport === undefined) {
|
|
42
|
-
throw new configuration_1.ZLinkConfigurationException('Channel runtime is not started.');
|
|
43
|
-
}
|
|
44
|
-
return transport;
|
|
40
|
+
return this.routeClient.requestToChannel(channelName, request);
|
|
45
41
|
}
|
|
46
42
|
}
|
|
47
43
|
exports.DefaultZLinkChannelClient = DefaultZLinkChannelClient;
|
|
@@ -82,10 +78,12 @@ class DefaultZLinkRouteClient {
|
|
|
82
78
|
registration;
|
|
83
79
|
transport;
|
|
84
80
|
spotRouterChannelIdForMesh;
|
|
85
|
-
|
|
81
|
+
channelTransport;
|
|
82
|
+
constructor(registration, transport, spotRouterChannelIdForMesh = (meshName) => meshName, channelTransport) {
|
|
86
83
|
this.registration = registration;
|
|
87
84
|
this.transport = transport;
|
|
88
85
|
this.spotRouterChannelIdForMesh = spotRouterChannelIdForMesh;
|
|
86
|
+
this.channelTransport = channelTransport;
|
|
89
87
|
}
|
|
90
88
|
sendToNode(meshName, targetNodeRid, message) {
|
|
91
89
|
return new DefaultZLinkSendCall(() => this.requireMesh(meshName), async (packetName, metadata, signal) => normalizeSubmitResult(await this.requireTransport().submit(meshName, targetNodeRid, packetName, message, signal, metadata)));
|
|
@@ -94,19 +92,21 @@ class DefaultZLinkRouteClient {
|
|
|
94
92
|
return new DefaultZLinkRequestCall(() => this.requireMesh(meshName), (packetName, timeoutMs, metadata, signal) => this.requireTransport().request(meshName, targetNodeRid, packetName, request, timeoutMs, signal, metadata), this.defaultRequestTimeout(meshName));
|
|
95
93
|
}
|
|
96
94
|
sendToChannel(channelName, message) {
|
|
97
|
-
return new DefaultZLinkSendCall(() => {
|
|
98
|
-
this.
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
95
|
+
return new DefaultZLinkSendCall(() => this.requireChannelRoute(channelName), async (packetName, metadata, signal) => {
|
|
96
|
+
const route = this.requireChannelRoute(channelName);
|
|
97
|
+
if (route.kind === 'route-mesh') {
|
|
98
|
+
return normalizeSubmitResult(await this.requireTransport().submitToChannel(route.meshName, channelName, packetName, message, signal, metadata));
|
|
99
|
+
}
|
|
100
|
+
return normalizeSubmitResult(await this.requireChannelTransport().send(channelName, packetName, message, signal, metadata));
|
|
102
101
|
});
|
|
103
102
|
}
|
|
104
103
|
requestToChannel(channelName, request) {
|
|
105
|
-
return new DefaultZLinkRequestCall(() => {
|
|
106
|
-
this.
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
104
|
+
return new DefaultZLinkRequestCall(() => this.requireChannelRoute(channelName), (packetName, timeoutMs, metadata, signal) => {
|
|
105
|
+
const route = this.requireChannelRoute(channelName);
|
|
106
|
+
if (route.kind === 'route-mesh') {
|
|
107
|
+
return this.requireTransport().requestToChannel(route.meshName, channelName, packetName, request, timeoutMs, signal, metadata);
|
|
108
|
+
}
|
|
109
|
+
return this.requireChannelTransport().request(channelName, packetName, request, timeoutMs, signal, metadata);
|
|
110
110
|
}, this.defaultRequestTimeoutForChannel(channelName));
|
|
111
111
|
}
|
|
112
112
|
sendToSpot(spot, message) {
|
|
@@ -129,13 +129,13 @@ class DefaultZLinkRouteClient {
|
|
|
129
129
|
signal,
|
|
130
130
|
metadata,
|
|
131
131
|
spotRouterChannelIdForMesh: this.spotRouterChannelIdForMesh
|
|
132
|
-
}), this.registration.requestTimeoutMs ??
|
|
132
|
+
}), this.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS);
|
|
133
133
|
}
|
|
134
134
|
defaultRequestTimeout(meshName) {
|
|
135
135
|
return (this.registration.spotNodes.get(meshName)?.requestTimeoutMs ??
|
|
136
136
|
this.registration.routeChannelOptions.get(meshName)?.requestTimeoutMs ??
|
|
137
137
|
this.registration.requestTimeoutMs ??
|
|
138
|
-
|
|
138
|
+
Registration_1.DEFAULT_REQUEST_TIMEOUT_MS);
|
|
139
139
|
}
|
|
140
140
|
requireMesh(meshName) {
|
|
141
141
|
if (!this.registration.spotNodes.has(meshName) &&
|
|
@@ -143,21 +143,30 @@ class DefaultZLinkRouteClient {
|
|
|
143
143
|
throw new configuration_1.ZLinkConfigurationException(`RouteMesh '${meshName}' is not registered.`);
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
|
-
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
.
|
|
150
|
-
if (matches.length === 0) {
|
|
151
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound, `RouteMesh channel '${channelName}' is not registered.`);
|
|
146
|
+
requireChannelRoute(channelName) {
|
|
147
|
+
const resolution = resolveChannelRoute(this.registration, channelName);
|
|
148
|
+
if (resolution === undefined) {
|
|
149
|
+
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound, `ChannelName '${channelName}' is not registered.`);
|
|
152
150
|
}
|
|
153
|
-
if (
|
|
154
|
-
|
|
151
|
+
if (resolution.kind === 'client-server') {
|
|
152
|
+
if (resolution.channel.client === undefined) {
|
|
153
|
+
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidConfiguration, `Channel client role '${channelName}' is not configured.`);
|
|
154
|
+
}
|
|
155
|
+
return resolution;
|
|
155
156
|
}
|
|
156
|
-
return
|
|
157
|
+
return {
|
|
158
|
+
kind: 'route-mesh',
|
|
159
|
+
...requireUniqueRouteMeshChannel(resolution.matches, `RouteMesh channel '${channelName}' must be unique across the Framework host.`)
|
|
160
|
+
};
|
|
157
161
|
}
|
|
158
162
|
defaultRequestTimeoutForChannel(channelName) {
|
|
159
|
-
const
|
|
160
|
-
|
|
163
|
+
const route = resolveChannelRoute(this.registration, channelName);
|
|
164
|
+
const timeoutMs = route?.kind === 'client-server'
|
|
165
|
+
? route.channel.requestTimeoutMs
|
|
166
|
+
: route?.kind === 'route-mesh'
|
|
167
|
+
? route.matches[0]?.mesh.requestTimeoutMs
|
|
168
|
+
: undefined;
|
|
169
|
+
return timeoutMs ?? this.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS;
|
|
161
170
|
}
|
|
162
171
|
requireTransport() {
|
|
163
172
|
if (this.transport === undefined) {
|
|
@@ -165,6 +174,13 @@ class DefaultZLinkRouteClient {
|
|
|
165
174
|
}
|
|
166
175
|
return this.transport;
|
|
167
176
|
}
|
|
177
|
+
requireChannelTransport() {
|
|
178
|
+
const transport = typeof this.channelTransport === 'function' ? this.channelTransport() : this.channelTransport;
|
|
179
|
+
if (transport === undefined) {
|
|
180
|
+
throw new configuration_1.ZLinkConfigurationException('Channel runtime is not started.');
|
|
181
|
+
}
|
|
182
|
+
return transport;
|
|
183
|
+
}
|
|
168
184
|
requireSpotTransport() {
|
|
169
185
|
const transport = this.requireTransport();
|
|
170
186
|
if (transport.sendToSpot === undefined || transport.requestToSpot === undefined) {
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.tryDecodeChannelHeader = tryDecodeChannelHeader;
|
|
4
4
|
exports.inspectMalformedChannelHeader = inspectMalformedChannelHeader;
|
|
5
5
|
exports.malformedProtocolErrorRequestHeader = malformedProtocolErrorRequestHeader;
|
|
6
|
+
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
6
7
|
const channel_envelope_1 = require("./channel-envelope");
|
|
7
8
|
function tryDecodeChannelHeader(parts, flowEnabled = true) {
|
|
8
9
|
if (parts.length < 2 || parts[0].data().length === 0) {
|
|
@@ -55,7 +56,7 @@ function malformedProtocolErrorRequestHeader(channelName, info) {
|
|
|
55
56
|
kind: 1 /* ZLinkChannelMessageKind.Request */,
|
|
56
57
|
channelName,
|
|
57
58
|
messageName: info.messageName ?? '',
|
|
58
|
-
contentType:
|
|
59
|
+
contentType: stream_wire_1.ZlinkStreamContentType.Json,
|
|
59
60
|
correlationId: info.correlationId ?? null,
|
|
60
61
|
deadline: null,
|
|
61
62
|
topic: null,
|
|
@@ -14,6 +14,7 @@ exports.decodeChannelPayload = decodeChannelPayload;
|
|
|
14
14
|
exports.closeMessages = closeMessages;
|
|
15
15
|
exports.decodeChannelHeader = decodeChannelHeader;
|
|
16
16
|
const node_crypto_1 = require("node:crypto");
|
|
17
|
+
const node_buffer_1 = require("node:buffer");
|
|
17
18
|
const contracts_1 = require("../../contracts");
|
|
18
19
|
const encoded_payload_storage_1 = require("../../contracts/Common/encoded-payload-storage");
|
|
19
20
|
const ZLinkMessage_1 = require("../../contracts/Common/ZLinkMessage");
|
|
@@ -24,6 +25,7 @@ const payload_codec_1 = require("../messaging/payload-codec");
|
|
|
24
25
|
const CodecContentType_1 = require("../../contracts/Configuration/CodecContentType");
|
|
25
26
|
const framework_json_v1_1 = require("../messaging/framework-json-v1");
|
|
26
27
|
const flow_context_1 = require("../diagnostics/flow-context");
|
|
28
|
+
const service_wire_constants_generated_1 = require("../foundation/service-wire-constants.generated");
|
|
27
29
|
const channel_framework_packets_1 = require("./channel-framework-packets");
|
|
28
30
|
const Attributes_1 = require("../../contracts/Handlers/Attributes");
|
|
29
31
|
exports.ZLINK_CHANNEL_FORMAT_MARKER = 0xf2;
|
|
@@ -314,7 +316,20 @@ function writeChannelHeader(writer, kind, channelName, messageName, contentType,
|
|
|
314
316
|
writer.append(',"source":');
|
|
315
317
|
writer.nullableString(source);
|
|
316
318
|
}
|
|
317
|
-
writer.append(',"metadata":
|
|
319
|
+
writer.append(',"metadata":');
|
|
320
|
+
writeApplicationMetadata(writer, metadata);
|
|
321
|
+
if (flowId !== undefined) {
|
|
322
|
+
writer.append(',"flowId":');
|
|
323
|
+
writer.string(flowId);
|
|
324
|
+
}
|
|
325
|
+
if (flowOrigin !== undefined) {
|
|
326
|
+
writer.append(',"flowOrigin":');
|
|
327
|
+
writer.append(String(encodeFlowOrigin(flowOrigin)));
|
|
328
|
+
}
|
|
329
|
+
writer.append('}');
|
|
330
|
+
}
|
|
331
|
+
function writeApplicationMetadata(writer, metadata) {
|
|
332
|
+
writer.append('{');
|
|
318
333
|
let first = true;
|
|
319
334
|
for (const name in metadata) {
|
|
320
335
|
if (!Object.prototype.hasOwnProperty.call(metadata, name))
|
|
@@ -327,15 +342,6 @@ function writeChannelHeader(writer, kind, channelName, messageName, contentType,
|
|
|
327
342
|
writer.string(metadata[name]);
|
|
328
343
|
}
|
|
329
344
|
writer.append('}');
|
|
330
|
-
if (flowId !== undefined) {
|
|
331
|
-
writer.append(',"flowId":');
|
|
332
|
-
writer.string(flowId);
|
|
333
|
-
}
|
|
334
|
-
if (flowOrigin !== undefined) {
|
|
335
|
-
writer.append(',"flowOrigin":');
|
|
336
|
-
writer.append(String(encodeFlowOrigin(flowOrigin)));
|
|
337
|
-
}
|
|
338
|
-
writer.append('}');
|
|
339
345
|
}
|
|
340
346
|
class ChannelHeaderWriter {
|
|
341
347
|
output;
|
|
@@ -438,13 +444,16 @@ function parseWireJson(payload, schema) {
|
|
|
438
444
|
}, schema);
|
|
439
445
|
}
|
|
440
446
|
function parseChannelHeaderBytes(payload) {
|
|
441
|
-
|
|
447
|
+
if (!(0, node_buffer_1.isUtf8)(payload)) {
|
|
448
|
+
throw new contracts_1.ZLinkFrameworkException(contracts_1.ZLinkFrameworkErrorKind.ProtocolError, 'Channel envelope header must contain valid UTF-8.');
|
|
449
|
+
}
|
|
450
|
+
return tryParseCanonicalChannelHeader(payload) ?? (0, framework_json_v1_1.parseFrameworkJsonV1)(payload.toString());
|
|
442
451
|
}
|
|
443
452
|
/**
|
|
444
453
|
* Accept the byte layout emitted by writeChannelHeader without materializing
|
|
445
454
|
* the enclosing JSON text. Any variation falls through to the established
|
|
446
455
|
* framework-json-v1 parser, which remains the sole authority for JSON
|
|
447
|
-
* failures
|
|
456
|
+
* failures and unknown properties. Header metadata accepts every valid string key.
|
|
448
457
|
*/
|
|
449
458
|
function tryParseCanonicalChannelHeader(payload) {
|
|
450
459
|
const reader = new CanonicalChannelHeaderReader(payload);
|
|
@@ -700,34 +709,43 @@ function channelKindName(kind) {
|
|
|
700
709
|
}
|
|
701
710
|
const EMPTY_APPLICATION_METADATA = Object.freeze({});
|
|
702
711
|
function applicationMetadataRecord(metadata) {
|
|
703
|
-
// The common case carries no metadata; skip the record + JSON.stringify
|
|
704
|
-
// byte-limit walk entirely.
|
|
705
712
|
if (metadata.size === 0)
|
|
706
713
|
return EMPTY_APPLICATION_METADATA;
|
|
707
|
-
const record =
|
|
708
|
-
for (const [key, value] of metadata)
|
|
709
|
-
if (key.length === 0 || key.includes('\0') || value.includes('\0')) {
|
|
710
|
-
throw new configuration_1.ZLinkConfigurationException('Channel application metadata keys must be non-empty and keys and values must not contain NUL.');
|
|
711
|
-
}
|
|
714
|
+
const record = Object.create(null);
|
|
715
|
+
for (const [key, value] of metadata)
|
|
712
716
|
record[key] = value;
|
|
717
|
+
return validateApplicationMetadata(record);
|
|
718
|
+
}
|
|
719
|
+
const INVALID_METADATA_UNICODE = /[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/u;
|
|
720
|
+
function validateApplicationMetadata(metadata) {
|
|
721
|
+
const keys = Object.keys(metadata);
|
|
722
|
+
if (keys.length === 0)
|
|
723
|
+
return EMPTY_APPLICATION_METADATA;
|
|
724
|
+
for (const key of keys) {
|
|
725
|
+
const value = requireString(metadata[key], `metadata.${key}`);
|
|
726
|
+
if (key.length === 0 ||
|
|
727
|
+
key.includes('\0') ||
|
|
728
|
+
value.includes('\0') ||
|
|
729
|
+
INVALID_METADATA_UNICODE.test(key) ||
|
|
730
|
+
INVALID_METADATA_UNICODE.test(value)) {
|
|
731
|
+
throw new configuration_1.ZLinkConfigurationException('Channel application metadata keys must be non-empty and keys and values must be valid Unicode without NUL.');
|
|
732
|
+
}
|
|
713
733
|
}
|
|
714
|
-
|
|
715
|
-
|
|
734
|
+
const record = metadata;
|
|
735
|
+
const writer = new ChannelHeaderWriter();
|
|
736
|
+
writeApplicationMetadata(writer, record);
|
|
737
|
+
if (writer.byteLength > service_wire_constants_generated_1.SERVICE_WIRE_METADATA_BYTES) {
|
|
738
|
+
throw new configuration_1.ZLinkConfigurationException(`Channel application metadata exceeds the ${service_wire_constants_generated_1.SERVICE_WIRE_METADATA_BYTES}-byte limit.`);
|
|
716
739
|
}
|
|
717
740
|
return Object.freeze(record);
|
|
718
741
|
}
|
|
719
742
|
function requireApplicationMetadata(value) {
|
|
720
|
-
if (value === undefined)
|
|
721
|
-
return
|
|
722
|
-
}
|
|
743
|
+
if (value === undefined)
|
|
744
|
+
return EMPTY_APPLICATION_METADATA;
|
|
723
745
|
if (!isRecord(value)) {
|
|
724
746
|
throw new configuration_1.ZLinkConfigurationException('Channel application metadata must be a JSON object.');
|
|
725
747
|
}
|
|
726
|
-
|
|
727
|
-
for (const [key, selectedValue] of Object.entries(value)) {
|
|
728
|
-
metadata.set(key, requireString(selectedValue, `metadata.${key}`));
|
|
729
|
-
}
|
|
730
|
-
return applicationMetadataRecord(metadata);
|
|
748
|
+
return validateApplicationMetadata(value);
|
|
731
749
|
}
|
|
732
750
|
function optionalFlowId(value) {
|
|
733
751
|
return value === undefined || value === null ? undefined : requireFlowId(value);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ZLinkSubmitResult } from '../messaging/submission-result';
|
|
2
|
+
import { type ZLinkRuntimeMessageFlowResult } from '../../contracts/Dispatch/ZLinkDispatchOptions';
|
|
2
3
|
import { type ZLinkChannelEnvelopeCodecRegistry } from './channel-envelope';
|
|
3
4
|
import { ZLinkChannelDispatchServices } from './channel-dispatch-services';
|
|
4
5
|
import { ZLinkChannelSocketRegistry } from './channel-socket-registry';
|
|
@@ -31,3 +32,5 @@ export declare class ZLinkChannelOutboundOperations {
|
|
|
31
32
|
* ref'ed handle until reply, cancellation, timeout, or failure settles it.
|
|
32
33
|
*/
|
|
33
34
|
export declare function keepChannelRequestAlive<T>(request: Promise<T>): Promise<T>;
|
|
35
|
+
export declare function requestTerminalResult(error: unknown, signal: AbortSignal | undefined): ZLinkRuntimeMessageFlowResult;
|
|
36
|
+
export declare function isRemoteChannelErrorReply(error: unknown): boolean;
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkChannelOutboundOperations = void 0;
|
|
4
4
|
exports.keepChannelRequestAlive = keepChannelRequestAlive;
|
|
5
|
+
exports.requestTerminalResult = requestTerminalResult;
|
|
6
|
+
exports.isRemoteChannelErrorReply = isRemoteChannelErrorReply;
|
|
5
7
|
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
6
8
|
const runtime_values_1 = require("../backend/runtime-values");
|
|
7
9
|
const submission_result_1 = require("../messaging/submission-result");
|
|
@@ -39,7 +41,7 @@ class ZLinkChannelOutboundOperations {
|
|
|
39
41
|
(0, abort_1.throwIfAborted)(signal);
|
|
40
42
|
const dealer = await this.sockets.awaitClientDealerForOutbound(channelName, signal);
|
|
41
43
|
if (dealer === undefined) {
|
|
42
|
-
return { status: submission_result_1.ZLinkSubmitStatus.
|
|
44
|
+
return { status: submission_result_1.ZLinkSubmitStatus.TimedOut };
|
|
43
45
|
}
|
|
44
46
|
const parts = (0, channel_envelope_1.encodeChannelEnvelopeParts)(3 /* ZLinkChannelMessageKind.Command */, channelName, packetName, message, undefined, undefined, this.codecs, undefined, this.dispatchServices.flowCreationEnabled(), metadata);
|
|
45
47
|
try {
|
|
@@ -79,7 +81,6 @@ class ZLinkChannelOutboundOperations {
|
|
|
79
81
|
return keepChannelRequestAlive((0, flow_context_1.runWithOutboundFlow)(this.dispatchServices.flowCreationEnabled(), () => this.requestScoped(channelName, packetName, request, timeoutMs, signal, metadata)));
|
|
80
82
|
}
|
|
81
83
|
async requestScoped(channelName, packetName, request, timeoutMs, signal, metadata) {
|
|
82
|
-
const deadlineAtMs = timeoutMs === undefined ? undefined : performance.now() + timeoutMs;
|
|
83
84
|
let correlationId;
|
|
84
85
|
let selectedServerRid;
|
|
85
86
|
let terminalRecorded = false;
|
|
@@ -100,16 +101,14 @@ class ZLinkChannelOutboundOperations {
|
|
|
100
101
|
};
|
|
101
102
|
try {
|
|
102
103
|
(0, abort_1.throwIfAborted)(signal);
|
|
103
|
-
const dealer = await this.sockets.awaitClientDealerForOutbound(channelName, signal
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if (dealer === undefined || (remainingMs !== undefined && remainingMs <= 0)) {
|
|
107
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, `Channel '${channelName}' has no ready ClientServer server.`);
|
|
104
|
+
const dealer = await this.sockets.awaitClientDealerForOutbound(channelName, signal);
|
|
105
|
+
if (dealer === undefined) {
|
|
106
|
+
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.DeadlineExceeded, `Channel '${channelName}' has no ready ClientServer server before its admission deadline.`);
|
|
108
107
|
}
|
|
109
108
|
const serverRid = this.sockets.selectedClientServerRid(channelName, dealer);
|
|
110
109
|
selectedServerRid = serverRid;
|
|
111
110
|
correlationId = (0, channel_envelope_1.newChannelCorrelationId)();
|
|
112
|
-
const parts = (0, channel_envelope_1.encodeChannelEnvelopeParts)(1 /* ZLinkChannelMessageKind.Request */, channelName, packetName, request,
|
|
111
|
+
const parts = (0, channel_envelope_1.encodeChannelEnvelopeParts)(1 /* ZLinkChannelMessageKind.Request */, channelName, packetName, request, timeoutMs, undefined, this.codecs, correlationId, this.dispatchServices.flowCreationEnabled(), metadata);
|
|
113
112
|
this.dispatchServices.beginOutbound(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent)?.trace({
|
|
114
113
|
surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.Channel,
|
|
115
114
|
messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request,
|
|
@@ -123,7 +122,7 @@ class ZLinkChannelOutboundOperations {
|
|
|
123
122
|
let replyParts = [];
|
|
124
123
|
try {
|
|
125
124
|
try {
|
|
126
|
-
replyParts = await (0, abort_1.awaitWithAbort)(dealer.request(parts,
|
|
125
|
+
replyParts = await (0, abort_1.awaitWithAbort)(dealer.request(parts, timeoutMs), signal);
|
|
127
126
|
}
|
|
128
127
|
catch (error) {
|
|
129
128
|
if (signal?.aborted === true)
|
|
@@ -134,7 +133,7 @@ class ZLinkChannelOutboundOperations {
|
|
|
134
133
|
if ((0, runtime_values_1.isZLinkBackendResultError)(error) && error.operation === 'request') {
|
|
135
134
|
throw new contracts_1.ZLinkFrameworkException((0, framework_errors_internal_1.requestResultToPublicErrorKind)(error.result), `Channel '${channelName}' request failed with result ${error.result}.`, error);
|
|
136
135
|
}
|
|
137
|
-
throw
|
|
136
|
+
throw error;
|
|
138
137
|
}
|
|
139
138
|
return (0, channel_envelope_1.decodeChannelReply)(replyParts, this.codecs);
|
|
140
139
|
}
|
|
@@ -5,6 +5,8 @@ import type { ZLinkMultipartAsyncSubmitOperation } from './channel-multipart';
|
|
|
5
5
|
import type { ZLinkChannelEnvelopeHeader } from './channel-envelope';
|
|
6
6
|
import { type ZLinkReceiveTaskErrorReporter } from './channel-receive-task-tracker';
|
|
7
7
|
import { ApplicationJobQueue } from '../host/application-job-queue';
|
|
8
|
+
import { ZLinkSerialExecutionQueue } from '../execution/serial-execution-queue';
|
|
9
|
+
export declare function createChannelApplicationDispatchQueue(): ZLinkSerialExecutionQueue;
|
|
8
10
|
interface ZLinkMultipartOperation<TNext> {
|
|
9
11
|
message(message: MessageLike): TNext;
|
|
10
12
|
}
|
|
@@ -84,6 +86,7 @@ export declare class ZLinkChannelReceiveLoop {
|
|
|
84
86
|
private readonly poller;
|
|
85
87
|
private readonly applicationJobQueue;
|
|
86
88
|
private readonly roundRobin?;
|
|
89
|
+
private readonly applicationDispatchQueue;
|
|
87
90
|
private stoppedFlag;
|
|
88
91
|
private isStopped;
|
|
89
92
|
private running?;
|
|
@@ -93,7 +96,7 @@ export declare class ZLinkChannelReceiveLoop {
|
|
|
93
96
|
private readonly capacityStop;
|
|
94
97
|
constructor(channelName: string, router: ZLinkBackendRouterSocket & {
|
|
95
98
|
reply(routingId: unknown, replyToken: unknown): ZLinkMultipartReplyOperation;
|
|
96
|
-
}, dispatcher: ZLinkChannelRequestDispatchLoop, spotRouteBridge: ZLinkBackendSpotRouteBridge | undefined, infrastructureHandler: ZLinkChannelInfrastructureHandler | undefined, poller: ZLinkBackendReadablePoller, applicationJobQueue: ApplicationJobQueue, reportError?: ZLinkReceiveTaskErrorReporter, roundRobin?: ZLinkReceiveRoundRobinCoordinator | undefined);
|
|
99
|
+
}, dispatcher: ZLinkChannelRequestDispatchLoop, spotRouteBridge: ZLinkBackendSpotRouteBridge | undefined, infrastructureHandler: ZLinkChannelInfrastructureHandler | undefined, poller: ZLinkBackendReadablePoller, applicationJobQueue: ApplicationJobQueue, reportError?: ZLinkReceiveTaskErrorReporter, roundRobin?: ZLinkReceiveRoundRobinCoordinator | undefined, applicationDispatchQueue?: ZLinkSerialExecutionQueue);
|
|
97
100
|
run(signal?: AbortSignal): Promise<void>;
|
|
98
101
|
private runLoop;
|
|
99
102
|
stop(): Promise<void>;
|
|
@@ -108,6 +111,7 @@ export declare class ZLinkSubscriberReceiveLoop {
|
|
|
108
111
|
private readonly applicationJobQueue;
|
|
109
112
|
private readonly infrastructureHandler?;
|
|
110
113
|
private readonly roundRobin?;
|
|
114
|
+
private readonly applicationDispatchQueue;
|
|
111
115
|
private stoppedFlag;
|
|
112
116
|
private isStopped;
|
|
113
117
|
private running?;
|
|
@@ -115,7 +119,7 @@ export declare class ZLinkSubscriberReceiveLoop {
|
|
|
115
119
|
private readonly receiveOwner;
|
|
116
120
|
private readonly rawReceiveReservations;
|
|
117
121
|
private readonly capacityStop;
|
|
118
|
-
constructor(adapter: ZLinkChannelBackendAdapter, subscriber: ZLinkBackendSubscriberSocket, dispatcher: ZLinkChannelPublishDispatchLoop, applicationJobQueue: ApplicationJobQueue, infrastructureHandler?: ((topicMessage: ReturnType<ZLinkChannelBackendAdapter["createTopicMessage"]>) => boolean | ZLinkSubscriberInfrastructureResult) | undefined, roundRobin?: ZLinkReceiveRoundRobinCoordinator | undefined, reportError?: ZLinkReceiveTaskErrorReporter);
|
|
122
|
+
constructor(adapter: ZLinkChannelBackendAdapter, subscriber: ZLinkBackendSubscriberSocket, dispatcher: ZLinkChannelPublishDispatchLoop, applicationJobQueue: ApplicationJobQueue, infrastructureHandler?: ((topicMessage: ReturnType<ZLinkChannelBackendAdapter["createTopicMessage"]>) => boolean | ZLinkSubscriberInfrastructureResult) | undefined, roundRobin?: ZLinkReceiveRoundRobinCoordinator | undefined, reportError?: ZLinkReceiveTaskErrorReporter, applicationDispatchQueue?: ZLinkSerialExecutionQueue);
|
|
119
123
|
private readonly poller;
|
|
120
124
|
run(signal?: AbortSignal): Promise<void>;
|
|
121
125
|
private runLoop;
|
|
@@ -130,6 +134,7 @@ export declare class ZLinkRouteReceiveLoop {
|
|
|
130
134
|
private readonly poller;
|
|
131
135
|
private readonly applicationJobQueue;
|
|
132
136
|
private readonly roundRobin?;
|
|
137
|
+
private readonly applicationDispatchQueue;
|
|
133
138
|
private stoppedFlag;
|
|
134
139
|
private isStopped;
|
|
135
140
|
private running?;
|
|
@@ -139,7 +144,7 @@ export declare class ZLinkRouteReceiveLoop {
|
|
|
139
144
|
private readonly capacityStop;
|
|
140
145
|
constructor(router: ZLinkBackendRouterSocket & {
|
|
141
146
|
reply(routingId: unknown, replyToken: unknown): ZLinkMultipartReplyOperation;
|
|
142
|
-
}, dispatcher: ZLinkRoutePacketDispatchLoop, poller: ZLinkBackendReadablePoller, applicationJobQueue: ApplicationJobQueue, roundRobin?: ZLinkReceiveRoundRobinCoordinator | undefined, reportError?: ZLinkReceiveTaskErrorReporter);
|
|
147
|
+
}, dispatcher: ZLinkRoutePacketDispatchLoop, poller: ZLinkBackendReadablePoller, applicationJobQueue: ApplicationJobQueue, roundRobin?: ZLinkReceiveRoundRobinCoordinator | undefined, reportError?: ZLinkReceiveTaskErrorReporter, applicationDispatchQueue?: ZLinkSerialExecutionQueue);
|
|
143
148
|
run(signal?: AbortSignal): Promise<void>;
|
|
144
149
|
private runLoop;
|
|
145
150
|
stop(): Promise<void>;
|