@zlink-systems/framework 0.21.0 → 0.22.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/Handlers/JsonContract.js +23 -11
- package/dist/contracts/Spots/SpotKind.js +16 -8
- 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 +24 -18
- package/dist/runtime/actors/actor-creation.js +4 -3
- package/dist/runtime/actors/actor-handoff.js +89 -92
- 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 +158 -124
- 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/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.js +116 -113
- 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 +10 -18
- 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 +43 -33
- 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.js +9 -7
- 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/index.js +38 -10
- package/dist/runtime/diagnostics/message-flow.js +47 -39
- 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 -23
- 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.js +136 -136
- 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-stateful-registry.js +24 -23
- package/dist/runtime/foundation/service-stateful-runtime.js +416 -438
- package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
- package/dist/runtime/foundation/service-topology-registry.js +96 -95
- 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 +244 -227
- 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/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 +208 -219
- 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.js +23 -20
- package/dist/runtime/spots/spot-actor-packet-drain.js +12 -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 +74 -85
- 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 +16 -14
- 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 +1 -2
- 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 +5 -5
- package/dist/runtime/spots/spot-timer.js +25 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +98 -107
- package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +18 -16
- package/dist/runtime/streams/bound-session-service.js +8 -9
- package/dist/runtime/streams/index.js +20 -19
- package/dist/runtime/streams/managed-stream.js +32 -30
- package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
- package/dist/runtime/streams/protocol.js +29 -18
- package/dist/runtime/streams/session-actor-coordinator.js +34 -37
- package/dist/runtime/streams/session-context.js +30 -28
- 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.js +11 -5
- package/dist/runtime/streams/stream-session-runtime.js +70 -66
- package/dist/runtime/workers/index.js +15 -4
- package/package.json +2 -2
- 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 +1 -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 +0 -1
- 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 +138 -130
- 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 +5 -4
- 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 +351 -320
- 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 +73 -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 +335 -383
- 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 +40 -42
- 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 +215 -197
- 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 +11 -8
- 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/flow-context.ts +12 -3
- 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 +95 -76
- 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 -51
- 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 +312 -385
- 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 +1 -4
- package/src/runtime/foundation/service-stateful-registry.ts +69 -59
- package/src/runtime/foundation/service-stateful-runtime.ts +1174 -1112
- package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
- package/src/runtime/foundation/service-topology-registry.ts +157 -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 +1 -1
- 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 +593 -563
- 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 +184 -153
- package/src/runtime/spots/spot-actor-packet-drain.ts +54 -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 +230 -221
- 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 +128 -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 +11 -17
- 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 +56 -46
- package/src/runtime/spots/spot-timer.ts +98 -91
- package/src/runtime/streams/actor-session-binding-registry.ts +277 -235
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +7 -4
- package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
- package/src/runtime/streams/bound-actor-relay-sender.ts +53 -51
- package/src/runtime/streams/bound-session-response-target.ts +29 -8
- package/src/runtime/streams/bound-session-service.ts +39 -39
- package/src/runtime/streams/index.ts +176 -100
- package/src/runtime/streams/managed-stream.ts +98 -87
- package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
- package/src/runtime/streams/protocol.ts +73 -43
- package/src/runtime/streams/session-actor-coordinator.ts +97 -89
- package/src/runtime/streams/session-calls.ts +2 -8
- package/src/runtime/streams/session-context.ts +66 -48
- 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 +55 -38
- package/src/runtime/streams/stream-session-runtime.ts +268 -210
- package/src/runtime/workers/index.ts +68 -29
|
@@ -56,8 +56,7 @@ function isZLinkBackendResultError(error) {
|
|
|
56
56
|
}
|
|
57
57
|
function isBackendNotConnectedError(error) {
|
|
58
58
|
if (isZLinkBackendResultError(error)) {
|
|
59
|
-
return error.result === exports.SubmitResult.NotConnected
|
|
60
|
-
|| error.result === exports.RequestResult.NotConnected;
|
|
59
|
+
return (error.result === exports.SubmitResult.NotConnected || error.result === exports.RequestResult.NotConnected);
|
|
61
60
|
}
|
|
62
61
|
if (typeof error !== 'object' || error === null || !('result' in error)) {
|
|
63
62
|
return false;
|
|
@@ -66,7 +65,7 @@ function isBackendNotConnectedError(error) {
|
|
|
66
65
|
return result === exports.SubmitResult.NotConnected || result === exports.RequestResult.NotConnected;
|
|
67
66
|
}
|
|
68
67
|
function isBackendRequestTimeoutError(error) {
|
|
69
|
-
return isZLinkBackendResultError(error)
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
return (isZLinkBackendResultError(error) &&
|
|
69
|
+
error.operation === 'request' &&
|
|
70
|
+
error.result === exports.RequestResult.TimedOut);
|
|
72
71
|
}
|
|
@@ -23,9 +23,9 @@ class DefaultZLinkChannelClient {
|
|
|
23
23
|
return new DefaultZLinkRequestCall(() => this.requireChannel(channelName), (packetName, timeoutMs, metadata, signal) => this.requireTransport().request(channelName, packetName, request, timeoutMs, signal, metadata), this.defaultRequestTimeout(channelName));
|
|
24
24
|
}
|
|
25
25
|
defaultRequestTimeout(channelName) {
|
|
26
|
-
return this.registration.channels.get(channelName)?.requestTimeoutMs
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
return (this.registration.channels.get(channelName)?.requestTimeoutMs ??
|
|
27
|
+
this.registration.requestTimeoutMs ??
|
|
28
|
+
30_000);
|
|
29
29
|
}
|
|
30
30
|
requireChannel(channelName) {
|
|
31
31
|
const channel = this.registration.channels.get(channelName);
|
|
@@ -37,9 +37,7 @@ class DefaultZLinkChannelClient {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
requireTransport() {
|
|
40
|
-
const transport = typeof this.transport === 'function'
|
|
41
|
-
? this.transport()
|
|
42
|
-
: this.transport;
|
|
40
|
+
const transport = typeof this.transport === 'function' ? this.transport() : this.transport;
|
|
43
41
|
if (transport === undefined) {
|
|
44
42
|
throw new configuration_1.ZLinkConfigurationException('Channel runtime is not started.');
|
|
45
43
|
}
|
|
@@ -80,9 +78,7 @@ class DefaultZLinkFanoutClient {
|
|
|
80
78
|
}
|
|
81
79
|
}
|
|
82
80
|
requireTransport() {
|
|
83
|
-
const transport = typeof this.transport === 'function'
|
|
84
|
-
? this.transport()
|
|
85
|
-
: this.transport;
|
|
81
|
+
const transport = typeof this.transport === 'function' ? this.transport() : this.transport;
|
|
86
82
|
if (transport === undefined) {
|
|
87
83
|
throw new configuration_1.ZLinkConfigurationException('Channel runtime is not started.');
|
|
88
84
|
}
|
|
@@ -106,19 +102,25 @@ class DefaultZLinkRouteClient {
|
|
|
106
102
|
return new DefaultZLinkRequestCall(() => this.requireMesh(meshName), (packetName, timeoutMs, metadata, signal) => this.requireTransport().request(meshName, targetNodeRid, packetName, request, timeoutMs, signal, metadata), this.defaultRequestTimeout(meshName));
|
|
107
103
|
}
|
|
108
104
|
sendToChannel(channelName, message) {
|
|
109
|
-
return new DefaultZLinkSendCall(() => {
|
|
105
|
+
return new DefaultZLinkSendCall(() => {
|
|
106
|
+
this.resolveMeshChannel(channelName);
|
|
107
|
+
}, async (packetName, metadata, signal) => {
|
|
110
108
|
const meshName = this.resolveMeshChannel(channelName);
|
|
111
109
|
return normalizeSubmitResult(await this.requireTransport().submitToChannel(meshName, channelName, packetName, message, signal, metadata));
|
|
112
110
|
});
|
|
113
111
|
}
|
|
114
112
|
requestToChannel(channelName, request) {
|
|
115
|
-
return new DefaultZLinkRequestCall(() => {
|
|
113
|
+
return new DefaultZLinkRequestCall(() => {
|
|
114
|
+
this.resolveMeshChannel(channelName);
|
|
115
|
+
}, (packetName, timeoutMs, metadata, signal) => {
|
|
116
116
|
const meshName = this.resolveMeshChannel(channelName);
|
|
117
117
|
return this.requireTransport().requestToChannel(meshName, channelName, packetName, request, timeoutMs, signal, metadata);
|
|
118
118
|
}, this.defaultRequestTimeoutForChannel(channelName));
|
|
119
119
|
}
|
|
120
120
|
sendToSpot(spot, message) {
|
|
121
|
-
return new DefaultZLinkSendCall(() => {
|
|
121
|
+
return new DefaultZLinkSendCall(() => {
|
|
122
|
+
this.requireSpotTransport();
|
|
123
|
+
}, async (_packetName, metadata, signal) => {
|
|
122
124
|
await (0, spot_outbound_1.sendToSpotHandle)(this.requireSpotTransport(), spot, message, {
|
|
123
125
|
signal,
|
|
124
126
|
metadata,
|
|
@@ -128,7 +130,9 @@ class DefaultZLinkRouteClient {
|
|
|
128
130
|
});
|
|
129
131
|
}
|
|
130
132
|
requestToSpot(spot, request) {
|
|
131
|
-
return new DefaultZLinkRequestCall(() => {
|
|
133
|
+
return new DefaultZLinkRequestCall(() => {
|
|
134
|
+
this.requireSpotTransport();
|
|
135
|
+
}, (_packetName, timeoutMs, metadata, signal) => (0, spot_outbound_1.requestToSpotHandle)(this.requireSpotTransport(), spot, request, {
|
|
132
136
|
timeoutMs,
|
|
133
137
|
signal,
|
|
134
138
|
metadata,
|
|
@@ -136,13 +140,14 @@ class DefaultZLinkRouteClient {
|
|
|
136
140
|
}), this.registration.requestTimeoutMs ?? 30_000);
|
|
137
141
|
}
|
|
138
142
|
defaultRequestTimeout(meshName) {
|
|
139
|
-
return this.registration.spotNodes.get(meshName)?.requestTimeoutMs
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
+
return (this.registration.spotNodes.get(meshName)?.requestTimeoutMs ??
|
|
144
|
+
this.registration.routeChannelOptions.get(meshName)?.requestTimeoutMs ??
|
|
145
|
+
this.registration.requestTimeoutMs ??
|
|
146
|
+
30_000);
|
|
143
147
|
}
|
|
144
148
|
requireMesh(meshName) {
|
|
145
|
-
if (!this.registration.spotNodes.has(meshName) &&
|
|
149
|
+
if (!this.registration.spotNodes.has(meshName) &&
|
|
150
|
+
!this.registration.routeChannels.has(meshName)) {
|
|
146
151
|
throw new configuration_1.ZLinkConfigurationException(`RouteMesh '${meshName}' is not registered.`);
|
|
147
152
|
}
|
|
148
153
|
}
|
|
@@ -159,11 +164,8 @@ class DefaultZLinkRouteClient {
|
|
|
159
164
|
return matches[0];
|
|
160
165
|
}
|
|
161
166
|
defaultRequestTimeoutForChannel(channelName) {
|
|
162
|
-
const match = [...this.registration.spotNodes.entries()]
|
|
163
|
-
|
|
164
|
-
return match?.[1].requestTimeoutMs
|
|
165
|
-
?? this.registration.requestTimeoutMs
|
|
166
|
-
?? 30_000;
|
|
167
|
+
const match = [...this.registration.spotNodes.entries()].find(([, mesh]) => Object.prototype.hasOwnProperty.call(mesh.meshChannels ?? {}, channelName));
|
|
168
|
+
return match?.[1].requestTimeoutMs ?? this.registration.requestTimeoutMs ?? 30_000;
|
|
167
169
|
}
|
|
168
170
|
requireTransport() {
|
|
169
171
|
if (this.transport === undefined) {
|
|
@@ -192,7 +194,8 @@ class DefaultZLinkSpotPublisherClient {
|
|
|
192
194
|
}
|
|
193
195
|
requireMeshChannel(meshName, channelName) {
|
|
194
196
|
const mesh = this.registration.spotNodes.get(meshName);
|
|
195
|
-
if (mesh === undefined ||
|
|
197
|
+
if (mesh === undefined ||
|
|
198
|
+
!Object.prototype.hasOwnProperty.call(mesh.meshChannels ?? {}, channelName)) {
|
|
196
199
|
throw new configuration_1.ZLinkConfigurationException(`Channel '${channelName}' is not registered in RouteMesh '${meshName}'.`);
|
|
197
200
|
}
|
|
198
201
|
}
|
|
@@ -99,12 +99,10 @@ class ZLinkChannelDispatchPipeline {
|
|
|
99
99
|
*/
|
|
100
100
|
async dispatchMalformed(input) {
|
|
101
101
|
const { info } = input;
|
|
102
|
-
const isRequest = info.kind === 1 /* ZLinkChannelMessageKind.Request */
|
|
103
|
-
|
|
102
|
+
const isRequest = info.kind === 1 /* ZLinkChannelMessageKind.Request */ ||
|
|
103
|
+
(info.kind === undefined && input.transportRequest);
|
|
104
104
|
let replied = false;
|
|
105
|
-
if (isRequest
|
|
106
|
-
&& input.writeProtocolError !== undefined
|
|
107
|
-
&& info.correlationId !== undefined) {
|
|
105
|
+
if (isRequest && input.writeProtocolError !== undefined && info.correlationId !== undefined) {
|
|
108
106
|
const protocolError = new contracts_1.ZLinkFrameworkException(contracts_1.ZLinkFrameworkErrorKind.ProtocolError, `Channel '${this.options.channelName}' received a malformed envelope.`);
|
|
109
107
|
try {
|
|
110
108
|
await input.writeProtocolError(protocolError);
|
|
@@ -150,9 +148,7 @@ class ZLinkChannelDispatchPipeline {
|
|
|
150
148
|
createFilterContext(context, fields) {
|
|
151
149
|
const dispatchKind = this.dispatchKind(context, fields);
|
|
152
150
|
return {
|
|
153
|
-
meshName: dispatchKind === contracts_1.ZLinkHandlerDispatchKind.ClassicFanout
|
|
154
|
-
? undefined
|
|
155
|
-
: context.meshName,
|
|
151
|
+
meshName: dispatchKind === contracts_1.ZLinkHandlerDispatchKind.ClassicFanout ? undefined : context.meshName,
|
|
156
152
|
channelName: context.channelName,
|
|
157
153
|
packetName: context.packetName,
|
|
158
154
|
contentType: context.contentType,
|
|
@@ -165,8 +161,8 @@ class ZLinkChannelDispatchPipeline {
|
|
|
165
161
|
if (fields.messageKind === ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Publish) {
|
|
166
162
|
return contracts_1.ZLinkHandlerDispatchKind.ClassicFanout;
|
|
167
163
|
}
|
|
168
|
-
const nodeDirect = this.options.surface === ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.RouteMeshChannel
|
|
169
|
-
|
|
164
|
+
const nodeDirect = this.options.surface === ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.RouteMeshChannel &&
|
|
165
|
+
context.channelName === undefined;
|
|
170
166
|
if (fields.messageKind === ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request) {
|
|
171
167
|
return nodeDirect
|
|
172
168
|
? contracts_1.ZLinkHandlerDispatchKind.NodeDirectRequest
|
|
@@ -179,12 +175,8 @@ class ZLinkChannelDispatchPipeline {
|
|
|
179
175
|
report(fields, reason, action, error) {
|
|
180
176
|
const classicFanout = fields.messageKind === ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Publish;
|
|
181
177
|
this.options.dispatchErrors.report({
|
|
182
|
-
surface: classicFanout
|
|
183
|
-
|
|
184
|
-
: this.options.surface,
|
|
185
|
-
messageKind: classicFanout
|
|
186
|
-
? ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send
|
|
187
|
-
: fields.messageKind,
|
|
178
|
+
surface: classicFanout ? ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.ClassicFanout : this.options.surface,
|
|
179
|
+
messageKind: classicFanout ? ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send : fields.messageKind,
|
|
188
180
|
reason,
|
|
189
181
|
action,
|
|
190
182
|
packetName: fields.packetName,
|
|
@@ -218,8 +210,8 @@ class ZLinkChannelDispatchPipeline {
|
|
|
218
210
|
});
|
|
219
211
|
}
|
|
220
212
|
failureReason(error) {
|
|
221
|
-
return error instanceof contracts_1.ZLinkFrameworkException
|
|
222
|
-
|
|
213
|
+
return error instanceof contracts_1.ZLinkFrameworkException &&
|
|
214
|
+
(0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.PayloadDecodeFailed
|
|
223
215
|
? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.PayloadDecodeFailed
|
|
224
216
|
: ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerException;
|
|
225
217
|
}
|
|
@@ -41,9 +41,10 @@ class ZLinkChannelDispatchServices {
|
|
|
41
41
|
if (this.handlerFiltersValue !== undefined) {
|
|
42
42
|
return this.handlerFiltersValue;
|
|
43
43
|
}
|
|
44
|
-
this.handlerFiltersValue =
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
this.handlerFiltersValue =
|
|
45
|
+
this.registration.filterTypes.length === 0
|
|
46
|
+
? []
|
|
47
|
+
: [{ invoke: (context, next, signal) => this.invokeHandlerFilters(context, next, signal) }];
|
|
47
48
|
return this.handlerFiltersValue;
|
|
48
49
|
}
|
|
49
50
|
channelRequestHandler(handlerType) {
|
|
@@ -125,7 +126,9 @@ class ZLinkChannelDispatchServices {
|
|
|
125
126
|
return this.diagnosticsContextValue;
|
|
126
127
|
}
|
|
127
128
|
outboundFlow() {
|
|
128
|
-
this.outboundFlowValue ??= new diagnostics_1.ZLinkMessageFlowTracer(this.diagnosticsContext(), {
|
|
129
|
+
this.outboundFlowValue ??= new diagnostics_1.ZLinkMessageFlowTracer(this.diagnosticsContext(), {
|
|
130
|
+
reportRuntimeTaskException() { }
|
|
131
|
+
});
|
|
129
132
|
return this.outboundFlowValue;
|
|
130
133
|
}
|
|
131
134
|
}
|
|
@@ -52,7 +52,7 @@ class ZLinkChannelRequestDispatcher {
|
|
|
52
52
|
transportRequest: replyToken !== null,
|
|
53
53
|
writeProtocolError: replyToken === null
|
|
54
54
|
? undefined
|
|
55
|
-
: protocolError => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelErrorReplyParts)((0, channel_envelope_inspection_1.malformedProtocolErrorRequestHeader)(this.options.channelName, info), protocolError)), signal)
|
|
55
|
+
: (protocolError) => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelErrorReplyParts)((0, channel_envelope_inspection_1.malformedProtocolErrorRequestHeader)(this.options.channelName, info), protocolError)), signal)
|
|
56
56
|
});
|
|
57
57
|
return;
|
|
58
58
|
}
|
|
@@ -120,8 +120,8 @@ class ZLinkChannelRequestDispatcher {
|
|
|
120
120
|
context,
|
|
121
121
|
signal,
|
|
122
122
|
missingHandlerMessage: `No channel request handler is registered for '${this.options.channelName}:${packetName}'.`,
|
|
123
|
-
writeReply: reply => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelReplyParts)(envelope.header, reply, this.options.codecs)), signal),
|
|
124
|
-
writeError: error => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelErrorReplyParts)(envelope.header, error)), signal)
|
|
123
|
+
writeReply: (reply) => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelReplyParts)(envelope.header, reply, this.options.codecs)), signal),
|
|
124
|
+
writeError: (error) => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelErrorReplyParts)(envelope.header, error)), signal)
|
|
125
125
|
});
|
|
126
126
|
}
|
|
127
127
|
async dispatchMesh(record, signal) {
|
|
@@ -345,9 +345,9 @@ class ZLinkRoutePacketDispatcher {
|
|
|
345
345
|
}
|
|
346
346
|
dispatchInfrastructure(received) {
|
|
347
347
|
const channelHeader = (0, channel_envelope_inspection_1.tryDecodeChannelHeader)(received.parts, this.flowEnabled());
|
|
348
|
-
if (this.spotRouteBridge !== undefined
|
|
349
|
-
|
|
350
|
-
|
|
348
|
+
if (this.spotRouteBridge !== undefined &&
|
|
349
|
+
channelHeader === undefined &&
|
|
350
|
+
this.spotRouteBridge.handleRouterReceived(this.routerChannelId, received.routingId, 0n, received.parts)) {
|
|
351
351
|
return true;
|
|
352
352
|
}
|
|
353
353
|
if (received.spotId !== null && received.spotId !== undefined) {
|
|
@@ -385,7 +385,7 @@ class ZLinkRoutePacketDispatcher {
|
|
|
385
385
|
sourceRid: String(received.routingId),
|
|
386
386
|
writeProtocolError: replyToken === null
|
|
387
387
|
? undefined
|
|
388
|
-
: protocolError => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelErrorReplyParts)((0, channel_envelope_inspection_1.malformedProtocolErrorRequestHeader)(this.routerChannelId, info), protocolError)))
|
|
388
|
+
: (protocolError) => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelErrorReplyParts)((0, channel_envelope_inspection_1.malformedProtocolErrorRequestHeader)(this.routerChannelId, info), protocolError)))
|
|
389
389
|
});
|
|
390
390
|
return;
|
|
391
391
|
}
|
|
@@ -448,8 +448,8 @@ class ZLinkRoutePacketDispatcher {
|
|
|
448
448
|
context: this.createRouteContext(envelope, received.routingId),
|
|
449
449
|
signal,
|
|
450
450
|
missingHandlerMessage: `No routed request handler is registered for '${this.routerChannelId}:${packetName}'.`,
|
|
451
|
-
writeReply: reply => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelReplyParts)(envelope.header, reply, codecs))),
|
|
452
|
-
writeError: error => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelErrorReplyParts)(envelope.header, error)))
|
|
451
|
+
writeReply: (reply) => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelReplyParts)(envelope.header, reply, codecs))),
|
|
452
|
+
writeError: (error) => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelErrorReplyParts)(envelope.header, error)))
|
|
453
453
|
});
|
|
454
454
|
}
|
|
455
455
|
async dispatchMesh(record, signal) {
|
|
@@ -66,11 +66,11 @@ function malformedProtocolErrorRequestHeader(channelName, info) {
|
|
|
66
66
|
}
|
|
67
67
|
const CHANNEL_FLOW_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
|
|
68
68
|
function salvageChannelKind(value) {
|
|
69
|
-
return value === 1 /* ZLinkChannelMessageKind.Request */
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
69
|
+
return value === 1 /* ZLinkChannelMessageKind.Request */ ||
|
|
70
|
+
value === 2 /* ZLinkChannelMessageKind.Response */ ||
|
|
71
|
+
value === 3 /* ZLinkChannelMessageKind.Command */ ||
|
|
72
|
+
value === 4 /* ZLinkChannelMessageKind.Publish */ ||
|
|
73
|
+
value === 5 /* ZLinkChannelMessageKind.Error */
|
|
74
74
|
? value
|
|
75
75
|
: undefined;
|
|
76
76
|
}
|
|
@@ -81,16 +81,19 @@ function salvageCorrelationId(value) {
|
|
|
81
81
|
if (typeof value !== 'string')
|
|
82
82
|
return undefined;
|
|
83
83
|
const byteLength = Buffer.byteLength(value, 'utf8');
|
|
84
|
-
return byteLength >= 1 && byteLength <= 64 && /^[\x00-\x7f]*$/.test(value)
|
|
85
|
-
? value
|
|
86
|
-
: undefined;
|
|
84
|
+
return byteLength >= 1 && byteLength <= 64 && /^[\x00-\x7f]*$/.test(value) ? value : undefined;
|
|
87
85
|
}
|
|
88
86
|
function salvageFlowOrigin(value) {
|
|
89
87
|
switch (value) {
|
|
90
|
-
case 1:
|
|
91
|
-
|
|
92
|
-
case
|
|
93
|
-
|
|
94
|
-
|
|
88
|
+
case 1:
|
|
89
|
+
return 'Inbound';
|
|
90
|
+
case 2:
|
|
91
|
+
return 'Timer';
|
|
92
|
+
case 3:
|
|
93
|
+
return 'Application';
|
|
94
|
+
case 4:
|
|
95
|
+
return 'Lifecycle';
|
|
96
|
+
default:
|
|
97
|
+
return undefined;
|
|
95
98
|
}
|
|
96
99
|
}
|
|
@@ -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
|
}
|