@zlink-systems/framework 0.30.3 → 0.32.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/Actors/ZLinkActor.d.ts +2 -0
- package/dist/contracts/Actors/ZLinkSessionBindingIdentity.d.ts +6 -0
- package/dist/contracts/Actors/ZLinkSessionBindingIdentity.js +2 -0
- package/dist/contracts/Actors/index.d.ts +1 -0
- package/dist/contracts/Actors/index.js +1 -0
- package/dist/contracts/Common/CoreTypes.d.ts +1 -0
- package/dist/contracts/Common/HandlerMessageType.d.ts +8 -0
- package/dist/contracts/Common/HandlerMessageType.js +41 -0
- package/dist/contracts/Common/ZLinkEncodedPayload.d.ts +1 -1
- package/dist/contracts/Common/ZLinkEncodedPayload.js +12 -20
- package/dist/contracts/Common/ZLinkMessage.js +11 -7
- package/dist/contracts/Common/encoded-payload-storage.d.ts +0 -2
- package/dist/contracts/Common/encoded-payload-storage.js +4 -16
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/payload-slab.d.ts +4 -0
- package/dist/contracts/Common/payload-slab.js +30 -0
- package/dist/contracts/Configuration/RegistrationBuilders.js +15 -9
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +19 -0
- package/dist/contracts/Handlers/Contexts.d.ts +1 -0
- package/dist/contracts/Locations/Authority.d.ts +2 -0
- package/dist/internal.d.ts +9 -0
- package/dist/internal.js +23 -1
- package/dist/nest-integration.d.ts +1 -0
- package/dist/nest-integration.js +3 -1
- package/dist/runtime/actors/actor-client.d.ts +6 -2
- package/dist/runtime/actors/actor-client.js +120 -82
- package/dist/runtime/actors/actor-context.js +16 -5
- package/dist/runtime/actors/actor-execution-context.js +2 -2
- package/dist/runtime/actors/actor-handoff.d.ts +12 -1
- package/dist/runtime/actors/actor-handoff.js +79 -34
- package/dist/runtime/actors/actor-join-deferred-scope.js +6 -6
- package/dist/runtime/actors/actor-local-native-join.d.ts +2 -2
- package/dist/runtime/actors/actor-local-native-join.js +19 -17
- package/dist/runtime/actors/actor-mailbox.d.ts +1 -1
- package/dist/runtime/actors/actor-remote-joiner.d.ts +2 -2
- package/dist/runtime/actors/actor-remote-joiner.js +4 -4
- package/dist/runtime/actors/actor-routed-join-transport.d.ts +9 -3
- package/dist/runtime/actors/actor-routed-json-request.d.ts +3 -0
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +2 -2
- package/dist/runtime/actors/actor-runtime-state.d.ts +1 -1
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +9 -5
- package/dist/runtime/actors/spot-actor-dispatch.js +60 -38
- package/dist/runtime/admission.d.ts +6 -4
- package/dist/runtime/admission.js +21 -10
- package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +1 -0
- package/dist/runtime/application-jobs/application-ingress-record-owner.js +3 -0
- package/dist/runtime/backend/contracts/index.d.ts +26 -10
- package/dist/runtime/backend/mesh-completion-table.d.ts +7 -1
- package/dist/runtime/backend/mesh-completion-table.js +84 -20
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +19 -6
- package/dist/runtime/backend/mesh-dispatch-pump.js +246 -147
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -2
- package/dist/runtime/backend/node/node-backend-adapter-support.js +27 -19
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +5 -2
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +70 -13
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +4 -3
- package/dist/runtime/backend/node/node-mesh-backend-adapter.js +5 -1
- package/dist/runtime/backend/node/node-raw-binding-port.d.ts +7 -2
- package/dist/runtime/backend/node/node-raw-binding-port.js +99 -63
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +34 -16
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +210 -106
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +20 -6
- package/dist/runtime/backend/raw-binding-port.d.ts +6 -3
- package/dist/runtime/channels/channel-clients.js +3 -3
- package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +11 -7
- package/dist/runtime/channels/channel-dispatch-pipeline.js +40 -22
- package/dist/runtime/channels/channel-dispatch-services.d.ts +3 -1
- package/dist/runtime/channels/channel-dispatch-services.js +7 -6
- package/dist/runtime/channels/channel-dispatchers.d.ts +13 -6
- package/dist/runtime/channels/channel-dispatchers.js +57 -36
- package/dist/runtime/channels/channel-envelope.d.ts +2 -2
- package/dist/runtime/channels/channel-envelope.js +609 -83
- package/dist/runtime/channels/channel-multipart.d.ts +1 -0
- package/dist/runtime/channels/channel-multipart.js +10 -6
- package/dist/runtime/channels/channel-outbound-operations.d.ts +6 -9
- package/dist/runtime/channels/channel-outbound-operations.js +107 -105
- package/dist/runtime/channels/channel-receive-loops.d.ts +9 -7
- package/dist/runtime/channels/channel-receive-loops.js +126 -90
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +23 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.js +47 -38
- package/dist/runtime/channels/channel-runtime-manager.d.ts +13 -6
- package/dist/runtime/channels/channel-runtime-manager.js +32 -14
- package/dist/runtime/channels/channel-socket-registry.d.ts +28 -4
- package/dist/runtime/channels/channel-socket-registry.js +9 -1
- package/dist/runtime/channels/channel-transports.d.ts +23 -16
- package/dist/runtime/channels/channel-transports.js +139 -119
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +4 -4
- package/dist/runtime/channels/dispatch-error-reporter.js +5 -5
- package/dist/runtime/channels/fanout-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/local-spot-route-transport.d.ts +5 -2
- package/dist/runtime/channels/local-spot-route-transport.js +15 -18
- package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +6 -3
- package/dist/runtime/channels/router-socket-spot-route-transport.js +33 -19
- package/dist/runtime/channels/source-spot-router.d.ts +6 -3
- package/dist/runtime/channels/source-spot-router.js +34 -23
- package/dist/runtime/channels/spot-node-route-transport.d.ts +6 -3
- package/dist/runtime/channels/spot-node-route-transport.js +23 -17
- package/dist/runtime/channels/spot-route-bridge-transport.d.ts +6 -3
- package/dist/runtime/channels/spot-route-bridge-transport.js +38 -24
- package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +8 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +36 -23
- package/dist/runtime/diagnostics/dispatch-error-details.js +9 -3
- package/dist/runtime/diagnostics/message-flow-bootstrap.d.ts +1 -0
- package/dist/runtime/diagnostics/message-flow-bootstrap.js +8 -0
- package/dist/runtime/diagnostics/message-flow-delivery.d.ts +47 -0
- package/dist/runtime/diagnostics/message-flow-delivery.js +149 -0
- package/dist/runtime/diagnostics/message-flow-record.d.ts +50 -0
- package/dist/runtime/diagnostics/message-flow-record.js +228 -0
- package/dist/runtime/diagnostics/message-flow-worker.d.ts +1 -0
- package/dist/runtime/diagnostics/message-flow-worker.js +118 -0
- package/dist/runtime/diagnostics/message-flow.d.ts +7 -19
- package/dist/runtime/diagnostics/message-flow.js +42 -290
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +4 -3
- package/dist/runtime/diagnostics/runtime-metrics.js +8 -4
- package/dist/runtime/execution/index.d.ts +1 -0
- package/dist/runtime/execution/index.js +6 -3
- package/dist/runtime/execution/serial-execution-queue.d.ts +26 -13
- package/dist/runtime/execution/serial-execution-queue.js +75 -71
- package/dist/runtime/foundation/durable-service-request.d.ts +12 -3
- package/dist/runtime/foundation/durable-service-request.js +158 -73
- package/dist/runtime/foundation/operation-registry.d.ts +33 -3
- package/dist/runtime/foundation/operation-registry.js +272 -33
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +62 -23
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +373 -194
- package/dist/runtime/foundation/request-runtime.d.ts +17 -0
- package/dist/runtime/foundation/request-runtime.js +163 -0
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +6 -0
- package/dist/runtime/foundation/service-liveness-registry.d.ts +1 -1
- package/dist/runtime/foundation/service-mailbox.d.ts +4 -2
- package/dist/runtime/foundation/service-mailbox.js +4 -1
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +2 -2
- package/dist/runtime/foundation/service-relocation-object-owner.js +12 -5
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +7 -2
- package/dist/runtime/foundation/service-stateful-registry.d.ts +6 -2
- package/dist/runtime/foundation/service-stateful-registry.js +38 -17
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +91 -26
- package/dist/runtime/foundation/service-stateful-runtime.js +245 -120
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -0
- package/dist/runtime/foundation/service-stateful-wire-codec.js +15 -0
- package/dist/runtime/foundation/service-topology-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-topology-registry.js +13 -3
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +12 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +5 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.js +50 -15
- package/dist/runtime/host/actor-packet-relay.d.ts +5 -6
- package/dist/runtime/host/actor-packet-relay.js +58 -57
- package/dist/runtime/host/actor-placement-coordinator.d.ts +1 -1
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +3 -2
- package/dist/runtime/host/actor-transfer-runtime.d.ts +3 -3
- package/dist/runtime/host/application-job-queue.d.ts +7 -5
- package/dist/runtime/host/application-job-queue.js +33 -21
- package/dist/runtime/host/bound-session-relay.js +0 -1
- package/dist/runtime/host/channel-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -0
- package/dist/runtime/host/entry-actor-runtime.d.ts +5 -2
- package/dist/runtime/host/entry-actor-runtime.js +2 -2
- package/dist/runtime/host/index.d.ts +106 -37
- package/dist/runtime/host/index.js +303 -151
- package/dist/runtime/host/location-runtime-owner.d.ts +2 -2
- package/dist/runtime/host/location-runtime-owner.js +1 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +195 -45
- package/dist/runtime/host/service-relocation-host-runtime.js +257 -144
- package/dist/runtime/host/spot-address-transport.d.ts +3 -0
- package/dist/runtime/host/spot-address-transport.js +73 -76
- package/dist/runtime/host/spot-runtime-options-factory.js +2 -0
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -1
- package/dist/runtime/host/user-spot-creation-coordinator.js +49 -21
- package/dist/runtime/internal-observation.d.ts +1 -0
- package/dist/runtime/internal-observation.js +5 -0
- package/dist/runtime/locations/actor-location-claims.d.ts +1 -1
- package/dist/runtime/locations/actor-location-claims.js +15 -6
- package/dist/runtime/locations/auto-connect-loop.d.ts +0 -1
- package/dist/runtime/locations/auto-connect-loop.js +25 -19
- package/dist/runtime/locations/auto-connect-planner.js +2 -5
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +1 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +35 -23
- package/dist/runtime/locations/in-memory-authority-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-authority-store.js +15 -5
- package/dist/runtime/locations/in-memory-location-store.d.ts +0 -2
- package/dist/runtime/locations/in-memory-location-store.js +1 -38
- package/dist/runtime/locations/lifecycle.d.ts +1 -1
- package/dist/runtime/locations/lifecycle.js +2 -2
- package/dist/runtime/locations/location-store-repository.d.ts +0 -1
- package/dist/runtime/locations/location-store-repository.js +163 -246
- package/dist/runtime/locations/resolvers.d.ts +8 -1
- package/dist/runtime/locations/resolvers.js +16 -2
- package/dist/runtime/locations/runtime.d.ts +3 -3
- package/dist/runtime/locations/runtime.js +12 -16
- package/dist/runtime/messaging/creation-payload-codec.js +8 -7
- package/dist/runtime/messaging/framework-json-v1.d.ts +1 -1
- package/dist/runtime/messaging/framework-json-v1.js +6 -2
- package/dist/runtime/messaging/payload-codec.js +21 -35
- package/dist/runtime/messaging/request-deadline.d.ts +4 -2
- package/dist/runtime/messaging/request-deadline.js +40 -25
- package/dist/runtime/messaging/request-result.d.ts +14 -1
- package/dist/runtime/messaging/request-result.js +74 -13
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +4 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +17 -7
- package/dist/runtime/spots/index.d.ts +28 -7
- package/dist/runtime/spots/index.js +31 -6
- package/dist/runtime/spots/spot-activation-registry.d.ts +3 -2
- package/dist/runtime/spots/spot-activation-registry.js +13 -8
- package/dist/runtime/spots/spot-activation-state.d.ts +2 -0
- package/dist/runtime/spots/spot-activation-state.js +1 -0
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +9 -4
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +33 -12
- package/dist/runtime/spots/spot-actor-ingress-admission.d.ts +40 -0
- package/dist/runtime/spots/spot-actor-ingress-admission.js +78 -0
- package/dist/runtime/spots/spot-actor-membership.js +3 -3
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +16 -43
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +56 -113
- package/dist/runtime/spots/spot-actor-packet-drain.d.ts +1 -0
- package/dist/runtime/spots/spot-actor-packet-drain.js +12 -5
- package/dist/runtime/spots/spot-entry-activation.d.ts +4 -3
- package/dist/runtime/spots/spot-entry-activation.js +7 -12
- package/dist/runtime/spots/spot-handler-registry.d.ts +5 -1
- package/dist/runtime/spots/spot-handler-registry.js +31 -15
- package/dist/runtime/spots/spot-manager-public.js +3 -2
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +11 -6
- package/dist/runtime/spots/spot-node-runtime-manager.js +6 -1
- package/dist/runtime/spots/spot-outbound.d.ts +8 -2
- package/dist/runtime/spots/spot-outbound.js +5 -5
- package/dist/runtime/spots/spot-route-packet-dispatch.js +13 -8
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +3 -3
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +9 -5
- package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -2
- package/dist/runtime/spots/spot-serial-executor.d.ts +2 -1
- package/dist/runtime/spots/spot-serial-turn-executor.js +20 -26
- package/dist/runtime/spots/spot-subscription-dispatch.js +5 -2
- package/dist/runtime/spots/spot-timer.d.ts +1 -1
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +11 -3
- package/dist/runtime/streams/actor-session-binding-registry.js +28 -0
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +2 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +3 -4
- package/dist/runtime/streams/bound-session-service.js +6 -7
- package/dist/runtime/streams/index.d.ts +3 -3
- package/dist/runtime/streams/index.js +22 -2
- package/dist/runtime/streams/managed-stream.js +2 -1
- package/dist/runtime/streams/session-calls.d.ts +1 -1
- package/dist/runtime/streams/session-calls.js +3 -9
- package/dist/runtime/streams/session-context.d.ts +2 -2
- package/dist/runtime/streams/session-context.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +1 -0
- package/dist/runtime/streams/stream-session-runtime.js +64 -33
- package/package.json +3 -3
- package/src/contracts/Actors/ZLinkActor.ts +6 -0
- package/src/contracts/Actors/ZLinkSessionBindingIdentity.ts +7 -0
- package/src/contracts/Actors/index.ts +1 -0
- package/src/contracts/Common/CoreTypes.ts +1 -0
- package/src/contracts/Common/HandlerMessageType.ts +50 -0
- package/src/contracts/Common/ZLinkEncodedPayload.ts +13 -25
- package/src/contracts/Common/ZLinkMessage.ts +11 -7
- package/src/contracts/Common/encoded-payload-storage.ts +4 -16
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Common/payload-slab.ts +29 -0
- package/src/contracts/Configuration/RegistrationBuilders.ts +29 -15
- package/src/contracts/Configuration/RegistrationTypes.ts +19 -0
- package/src/contracts/Handlers/Contexts.ts +1 -0
- package/src/contracts/Locations/Authority.ts +7 -1
- package/src/internal.ts +17 -0
- package/src/nest-integration.ts +1 -0
- package/src/runtime/actors/actor-client.ts +257 -163
- package/src/runtime/actors/actor-context.ts +26 -14
- package/src/runtime/actors/actor-execution-context.ts +2 -2
- package/src/runtime/actors/actor-handoff.ts +86 -51
- package/src/runtime/actors/actor-join-deferred-scope.ts +6 -6
- package/src/runtime/actors/actor-local-native-join.ts +38 -17
- package/src/runtime/actors/actor-mailbox.ts +1 -1
- package/src/runtime/actors/actor-remote-joiner.ts +8 -4
- package/src/runtime/actors/actor-routed-join-transport.ts +13 -5
- package/src/runtime/actors/actor-routed-json-request.ts +3 -0
- package/src/runtime/actors/actor-runtime-contracts.ts +4 -2
- package/src/runtime/actors/actor-runtime-state.ts +1 -1
- package/src/runtime/actors/spot-actor-dispatch.ts +70 -68
- package/src/runtime/admission.ts +42 -15
- package/src/runtime/application-jobs/application-ingress-record-owner.ts +4 -0
- package/src/runtime/backend/contracts/index.ts +77 -10
- package/src/runtime/backend/mesh-completion-table.ts +106 -15
- package/src/runtime/backend/mesh-dispatch-pump.ts +294 -146
- package/src/runtime/backend/node/node-backend-adapter-support.ts +42 -32
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +91 -34
- package/src/runtime/backend/node/node-event-loop-poller.ts +14 -5
- package/src/runtime/backend/node/node-mesh-backend-adapter.ts +5 -1
- package/src/runtime/backend/node/node-raw-binding-port.ts +180 -69
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +386 -157
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +56 -11
- package/src/runtime/backend/raw-binding-port.ts +13 -5
- package/src/runtime/channels/channel-clients.ts +26 -11
- package/src/runtime/channels/channel-dispatch-pipeline.ts +77 -65
- package/src/runtime/channels/channel-dispatch-services.ts +7 -12
- package/src/runtime/channels/channel-dispatchers.ts +93 -39
- package/src/runtime/channels/channel-envelope.ts +680 -144
- package/src/runtime/channels/channel-multipart.ts +17 -13
- package/src/runtime/channels/channel-outbound-operations.ts +204 -178
- package/src/runtime/channels/channel-receive-loops.ts +160 -107
- package/src/runtime/channels/channel-runtime-lifecycle.ts +64 -59
- package/src/runtime/channels/channel-runtime-manager.ts +74 -27
- package/src/runtime/channels/channel-socket-registry.ts +20 -5
- package/src/runtime/channels/channel-transports.ts +414 -287
- package/src/runtime/channels/dispatch-error-reporter.ts +4 -9
- package/src/runtime/channels/local-spot-route-transport.ts +27 -29
- package/src/runtime/channels/router-socket-spot-route-transport.ts +63 -32
- package/src/runtime/channels/source-spot-router.ts +75 -38
- package/src/runtime/channels/spot-node-route-transport.ts +67 -37
- package/src/runtime/channels/spot-route-bridge-transport.ts +62 -30
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +105 -34
- package/src/runtime/diagnostics/dispatch-error-details.ts +10 -2
- package/src/runtime/diagnostics/message-flow-bootstrap.ts +6 -0
- package/src/runtime/diagnostics/message-flow-delivery.ts +171 -0
- package/src/runtime/diagnostics/message-flow-record.ts +295 -0
- package/src/runtime/diagnostics/message-flow-worker.ts +146 -0
- package/src/runtime/diagnostics/message-flow.ts +49 -362
- package/src/runtime/diagnostics/runtime-metrics.ts +10 -4
- package/src/runtime/execution/index.ts +6 -0
- package/src/runtime/execution/serial-execution-queue.ts +94 -96
- package/src/runtime/foundation/durable-service-request.ts +212 -89
- package/src/runtime/foundation/operation-registry.ts +287 -38
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +617 -292
- package/src/runtime/foundation/request-runtime.ts +227 -0
- package/src/runtime/foundation/service-discovery-registry.ts +7 -0
- package/src/runtime/foundation/service-liveness-registry.ts +1 -1
- package/src/runtime/foundation/service-mailbox.ts +7 -2
- package/src/runtime/foundation/service-relocation-object-owner.ts +21 -6
- package/src/runtime/foundation/service-runtime-contracts.ts +12 -2
- package/src/runtime/foundation/service-stateful-registry.ts +52 -19
- package/src/runtime/foundation/service-stateful-runtime.ts +365 -198
- package/src/runtime/foundation/service-stateful-wire-codec.ts +18 -0
- package/src/runtime/foundation/service-topology-registry.ts +21 -3
- package/src/runtime/foundation/service-wire-constants.generated.ts +10 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -17
- package/src/runtime/host/actor-packet-relay.ts +160 -156
- package/src/runtime/host/actor-placement-coordinator.ts +1 -1
- package/src/runtime/host/actor-runtime-options-factory.ts +7 -2
- package/src/runtime/host/actor-transfer-runtime.ts +3 -3
- package/src/runtime/host/application-job-queue.ts +56 -27
- package/src/runtime/host/bound-session-relay.ts +0 -1
- package/src/runtime/host/channel-runtime-options-factory.ts +3 -0
- package/src/runtime/host/entry-actor-runtime.ts +14 -6
- package/src/runtime/host/index.ts +388 -113
- package/src/runtime/host/location-runtime-owner.ts +3 -3
- package/src/runtime/host/service-relocation-host-runtime.ts +380 -252
- package/src/runtime/host/spot-address-transport.ts +110 -95
- package/src/runtime/host/spot-runtime-options-factory.ts +3 -0
- package/src/runtime/host/user-spot-creation-coordinator.ts +69 -22
- package/src/runtime/internal-observation.ts +2 -0
- package/src/runtime/locations/actor-location-claims.ts +42 -16
- package/src/runtime/locations/auto-connect-loop.ts +24 -16
- package/src/runtime/locations/auto-connect-planner.ts +2 -5
- package/src/runtime/locations/auto-connect-reconciler.ts +37 -24
- package/src/runtime/locations/in-memory-authority-store.ts +27 -7
- package/src/runtime/locations/in-memory-location-store.ts +1 -74
- package/src/runtime/locations/lifecycle.ts +4 -2
- package/src/runtime/locations/location-store-repository.ts +228 -308
- package/src/runtime/locations/resolvers.ts +20 -8
- package/src/runtime/locations/runtime.ts +16 -28
- package/src/runtime/messaging/creation-payload-codec.ts +12 -10
- package/src/runtime/messaging/framework-json-v1.ts +10 -1
- package/src/runtime/messaging/payload-codec.ts +50 -75
- package/src/runtime/messaging/request-deadline.ts +47 -39
- package/src/runtime/messaging/request-result.ts +88 -17
- 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/index.ts +57 -10
- package/src/runtime/spots/spot-activation-registry.ts +12 -8
- package/src/runtime/spots/spot-activation-state.ts +2 -0
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +62 -37
- package/src/runtime/spots/spot-actor-ingress-admission.ts +157 -0
- package/src/runtime/spots/spot-actor-membership.ts +8 -5
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +122 -206
- package/src/runtime/spots/spot-actor-packet-drain.ts +21 -6
- package/src/runtime/spots/spot-entry-activation.ts +25 -35
- package/src/runtime/spots/spot-handler-registry.ts +72 -15
- package/src/runtime/spots/spot-manager-public.ts +4 -2
- package/src/runtime/spots/spot-node-runtime-manager.ts +16 -7
- package/src/runtime/spots/spot-outbound.ts +26 -10
- package/src/runtime/spots/spot-route-packet-dispatch.ts +18 -8
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +14 -8
- package/src/runtime/spots/spot-runtime-ports.ts +5 -2
- package/src/runtime/spots/spot-serial-executor.ts +1 -1
- package/src/runtime/spots/spot-serial-turn-executor.ts +25 -40
- package/src/runtime/spots/spot-subscription-dispatch.ts +9 -2
- package/src/runtime/spots/spot-timer.ts +1 -1
- package/src/runtime/streams/actor-session-binding-registry.ts +46 -3
- package/src/runtime/streams/bound-actor-relay-sender.ts +16 -5
- package/src/runtime/streams/bound-session-service.ts +10 -7
- package/src/runtime/streams/index.ts +30 -4
- package/src/runtime/streams/managed-stream.ts +2 -1
- package/src/runtime/streams/session-calls.ts +9 -14
- package/src/runtime/streams/session-context.ts +6 -11
- package/src/runtime/streams/stream-session-runtime.ts +79 -40
- package/dist/runtime/spots/spot-lifecycle-metrics.d.ts +0 -8
- package/dist/runtime/spots/spot-lifecycle-metrics.js +0 -17
- package/src/runtime/spots/spot-lifecycle-metrics.ts +0 -16
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RequestRuntime } from '../foundation/request-runtime';
|
|
2
|
+
import type { PendingOperation, OperationObserver } from '../foundation/operation-registry';
|
|
3
|
+
import { identityRequestReply, type ZLinkRequestResult } from '../messaging/request-result';
|
|
4
|
+
import { ZLinkFrameworkErrorKind, ZLinkFrameworkException } from '../../contracts';
|
|
2
5
|
import type { Message } from '../../contracts/Common/Message';
|
|
3
6
|
import { DEFAULT_REQUEST_TIMEOUT_MS } from '../../contracts/Configuration/Registration';
|
|
4
7
|
import { ZLinkSpotKind } from '../../contracts/Spots';
|
|
5
|
-
import { throwIfAborted } from '../abort';
|
|
8
|
+
import { isAbortError, throwIfAborted } from '../abort';
|
|
6
9
|
import type { ZLinkBackendMeshNode, ZLinkBackendSpot } from '../backend/contracts';
|
|
7
10
|
import {
|
|
8
11
|
closeMeshCompletion,
|
|
@@ -57,6 +60,7 @@ import type {
|
|
|
57
60
|
import {
|
|
58
61
|
ZLinkChannelMessageKind,
|
|
59
62
|
decodeChannelReply,
|
|
63
|
+
closeMessages,
|
|
60
64
|
encodeChannelEnvelopeParts,
|
|
61
65
|
newChannelCorrelationId,
|
|
62
66
|
type ZLinkChannelEnvelopeCodecRegistry
|
|
@@ -78,8 +82,9 @@ export interface ZLinkChannelClientTransport {
|
|
|
78
82
|
timeoutMs: number | undefined,
|
|
79
83
|
signal?: AbortSignal,
|
|
80
84
|
metadata?: ReadonlyMap<string, string>,
|
|
81
|
-
onAdmitted?: () => void
|
|
82
|
-
|
|
85
|
+
onAdmitted?: () => void,
|
|
86
|
+
requestOperation?: PendingOperation<unknown>
|
|
87
|
+
): ZLinkRequestResult<TReply>;
|
|
83
88
|
tryPublish?(
|
|
84
89
|
channelName: string,
|
|
85
90
|
topic: string,
|
|
@@ -136,8 +141,9 @@ export interface ZLinkRouteClientTransport {
|
|
|
136
141
|
timeoutMs: number | undefined,
|
|
137
142
|
signal?: AbortSignal,
|
|
138
143
|
metadata?: ReadonlyMap<string, string>,
|
|
139
|
-
onAdmitted?: () => void
|
|
140
|
-
|
|
144
|
+
onAdmitted?: () => void,
|
|
145
|
+
requestOperation?: PendingOperation<unknown>
|
|
146
|
+
): ZLinkRequestResult<TReply>;
|
|
141
147
|
submitToChannel(
|
|
142
148
|
meshName: string,
|
|
143
149
|
channelName: string,
|
|
@@ -153,8 +159,9 @@ export interface ZLinkRouteClientTransport {
|
|
|
153
159
|
timeoutMs: number | undefined,
|
|
154
160
|
signal?: AbortSignal,
|
|
155
161
|
metadata?: ReadonlyMap<string, string>,
|
|
156
|
-
onAdmitted?: () => void
|
|
157
|
-
|
|
162
|
+
onAdmitted?: () => void,
|
|
163
|
+
requestOperation?: PendingOperation<unknown>
|
|
164
|
+
): ZLinkRequestResult<TReply>;
|
|
158
165
|
sendToSpot?(
|
|
159
166
|
spotRouteTarget: ZLinkSpotRouteTarget,
|
|
160
167
|
message: unknown,
|
|
@@ -169,11 +176,12 @@ export interface ZLinkRouteClientTransport {
|
|
|
169
176
|
options: {
|
|
170
177
|
readonly packetName?: string;
|
|
171
178
|
readonly timeoutMs?: number;
|
|
179
|
+
readonly requestOperation?: PendingOperation<unknown>;
|
|
172
180
|
readonly signal?: AbortSignal;
|
|
173
181
|
readonly onAdmitted?: () => void;
|
|
174
182
|
readonly metadata?: ReadonlyMap<string, string>;
|
|
175
183
|
}
|
|
176
|
-
):
|
|
184
|
+
): ZLinkRequestResult<TReply>;
|
|
177
185
|
}
|
|
178
186
|
|
|
179
187
|
interface ZLinkChannelTransportRuntime {
|
|
@@ -190,8 +198,9 @@ interface ZLinkChannelTransportRuntime {
|
|
|
190
198
|
timeoutMs: number | undefined,
|
|
191
199
|
signal?: AbortSignal,
|
|
192
200
|
metadata?: ReadonlyMap<string, string>,
|
|
193
|
-
onAdmitted?: () => void
|
|
194
|
-
|
|
201
|
+
onAdmitted?: () => void,
|
|
202
|
+
requestOperation?: PendingOperation<unknown>
|
|
203
|
+
): ZLinkRequestResult<TReply>;
|
|
195
204
|
tryPublish(
|
|
196
205
|
channelName: string,
|
|
197
206
|
topic: string,
|
|
@@ -224,7 +233,8 @@ interface ZLinkChannelTransportRuntime {
|
|
|
224
233
|
timeoutMs: number | undefined,
|
|
225
234
|
signal?: AbortSignal,
|
|
226
235
|
metadata?: ReadonlyMap<string, string>,
|
|
227
|
-
onAdmitted?: () => void
|
|
236
|
+
onAdmitted?: () => void,
|
|
237
|
+
requestOperation?: PendingOperation<unknown>
|
|
228
238
|
): Promise<TReply>;
|
|
229
239
|
routeSendToSpot(
|
|
230
240
|
spotRouteTarget: ZLinkSpotRouteTarget,
|
|
@@ -246,7 +256,9 @@ interface ZLinkChannelTransportRuntime {
|
|
|
246
256
|
timeoutMs: number | undefined,
|
|
247
257
|
signal?: AbortSignal,
|
|
248
258
|
metadata?: ReadonlyMap<string, string>,
|
|
249
|
-
onAdmitted?: () => void
|
|
259
|
+
onAdmitted?: () => void,
|
|
260
|
+
requestOperation?: PendingOperation<unknown>,
|
|
261
|
+
destination?: OperationObserver<unknown, unknown>
|
|
250
262
|
): Promise<TReply>;
|
|
251
263
|
routeRequestFromSpotToSpot<TReply>(
|
|
252
264
|
sourceSpot: ZLinkBackendSpot,
|
|
@@ -255,7 +267,9 @@ interface ZLinkChannelTransportRuntime {
|
|
|
255
267
|
request: unknown,
|
|
256
268
|
timeoutMs: number | undefined,
|
|
257
269
|
signal?: AbortSignal,
|
|
258
|
-
onAdmitted?: () => void
|
|
270
|
+
onAdmitted?: () => void,
|
|
271
|
+
requestOperation?: PendingOperation<unknown>,
|
|
272
|
+
destination?: OperationObserver<unknown, unknown>
|
|
259
273
|
): Promise<TReply>;
|
|
260
274
|
routeRequestRawFromSpotToSpot(
|
|
261
275
|
sourceSpot: ZLinkBackendSpot,
|
|
@@ -263,14 +277,16 @@ interface ZLinkChannelTransportRuntime {
|
|
|
263
277
|
request: Message,
|
|
264
278
|
timeoutMs: number | undefined,
|
|
265
279
|
signal?: AbortSignal,
|
|
266
|
-
onAdmitted?: () => void
|
|
280
|
+
onAdmitted?: () => void,
|
|
281
|
+
requestOperation?: PendingOperation<unknown>
|
|
267
282
|
): Promise<readonly Message[]>;
|
|
268
283
|
routeRequestRawToSpot(
|
|
269
284
|
spotRouteTarget: ZLinkSpotRouteTarget,
|
|
270
285
|
request: Message,
|
|
271
286
|
timeoutMs: number | undefined,
|
|
272
287
|
signal?: AbortSignal,
|
|
273
|
-
onAdmitted?: () => void
|
|
288
|
+
onAdmitted?: () => void,
|
|
289
|
+
requestOperation?: PendingOperation<unknown>
|
|
274
290
|
): Promise<readonly Message[]>;
|
|
275
291
|
}
|
|
276
292
|
|
|
@@ -301,7 +317,8 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
301
317
|
) => ZLinkSubmitResult,
|
|
302
318
|
private readonly metrics?: ZLinkRuntimeMetrics,
|
|
303
319
|
private readonly flowCreationEnabled: () => boolean = () => true,
|
|
304
|
-
private readonly outboundFlow: () => ZLinkMessageFlowTracer | undefined = () => undefined
|
|
320
|
+
private readonly outboundFlow: () => ZLinkMessageFlowTracer | undefined = () => undefined,
|
|
321
|
+
private readonly requests = new RequestRuntime()
|
|
305
322
|
) {}
|
|
306
323
|
|
|
307
324
|
canRouteChannel(routerChannelId: string): boolean {
|
|
@@ -420,8 +437,9 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
420
437
|
timeoutMs: number | undefined,
|
|
421
438
|
signal?: AbortSignal,
|
|
422
439
|
metadata?: ReadonlyMap<string, string>,
|
|
423
|
-
onAdmitted?: () => void
|
|
424
|
-
|
|
440
|
+
onAdmitted?: () => void,
|
|
441
|
+
requestOperation?: PendingOperation<unknown>
|
|
442
|
+
): ZLinkRequestResult<TReply> {
|
|
425
443
|
if (!this.flowCreationEnabled())
|
|
426
444
|
return this.requestScoped<TReply>(
|
|
427
445
|
meshName,
|
|
@@ -431,7 +449,8 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
431
449
|
timeoutMs,
|
|
432
450
|
signal,
|
|
433
451
|
metadata,
|
|
434
|
-
onAdmitted
|
|
452
|
+
onAdmitted,
|
|
453
|
+
requestOperation
|
|
435
454
|
);
|
|
436
455
|
return runWithOutboundFlow(true, () =>
|
|
437
456
|
this.requestScoped<TReply>(
|
|
@@ -442,103 +461,138 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
442
461
|
timeoutMs,
|
|
443
462
|
signal,
|
|
444
463
|
metadata,
|
|
445
|
-
onAdmitted
|
|
464
|
+
onAdmitted,
|
|
465
|
+
requestOperation
|
|
446
466
|
)
|
|
447
467
|
);
|
|
448
468
|
}
|
|
449
469
|
|
|
450
|
-
private
|
|
470
|
+
private requestScoped<TReply>(
|
|
451
471
|
meshName: string,
|
|
452
472
|
targetNodeRid: string,
|
|
453
473
|
packetName: string | undefined,
|
|
454
474
|
request: unknown,
|
|
455
475
|
timeoutMs: number | undefined,
|
|
456
|
-
signal
|
|
457
|
-
metadata
|
|
458
|
-
onAdmitted
|
|
459
|
-
|
|
476
|
+
signal: AbortSignal | undefined,
|
|
477
|
+
metadata: ReadonlyMap<string, string> | undefined,
|
|
478
|
+
onAdmitted: (() => void) | undefined,
|
|
479
|
+
existing?: PendingOperation<unknown>
|
|
480
|
+
): ZLinkRequestResult<TReply> {
|
|
460
481
|
const node = this.meshNode(meshName);
|
|
461
482
|
if (node === undefined) {
|
|
462
|
-
return this.
|
|
463
|
-
|
|
464
|
-
targetNodeRid,
|
|
465
|
-
packetName,
|
|
466
|
-
request,
|
|
467
|
-
timeoutMs,
|
|
483
|
+
return this.requests.prepare<TReply>(
|
|
484
|
+
timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
|
|
468
485
|
signal,
|
|
469
|
-
|
|
470
|
-
|
|
486
|
+
(operation) => {
|
|
487
|
+
this.requireManager().routeRequest<TReply>(
|
|
488
|
+
meshName,
|
|
489
|
+
targetNodeRid,
|
|
490
|
+
packetName,
|
|
491
|
+
request,
|
|
492
|
+
timeoutMs,
|
|
493
|
+
signal,
|
|
494
|
+
metadata,
|
|
495
|
+
onAdmitted,
|
|
496
|
+
operation
|
|
497
|
+
);
|
|
498
|
+
},
|
|
499
|
+
(value) => value as TReply,
|
|
500
|
+
identityRequestReply,
|
|
501
|
+
existing
|
|
471
502
|
);
|
|
472
503
|
}
|
|
473
504
|
const correlationId = newChannelCorrelationId();
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
505
|
+
const result = this.requests.prepare<TReply>(
|
|
506
|
+
timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
|
|
507
|
+
signal,
|
|
508
|
+
(requestOperation, receiver) => {
|
|
509
|
+
requestOperation.mapCaller(
|
|
510
|
+
(value) => {
|
|
511
|
+
this.traceNodeRequest(
|
|
512
|
+
ZLinkMessageFlowOutcome.ReplyReceived,
|
|
513
|
+
'succeeded',
|
|
514
|
+
meshName,
|
|
515
|
+
targetNodeRid,
|
|
516
|
+
packetName,
|
|
517
|
+
correlationId
|
|
518
|
+
);
|
|
519
|
+
return value;
|
|
520
|
+
},
|
|
521
|
+
(error) => {
|
|
522
|
+
if (!isRemoteChannelErrorReply(error))
|
|
523
|
+
this.traceNodeRequest(
|
|
524
|
+
ZLinkMessageFlowOutcome.ReplyReceived,
|
|
525
|
+
requestTerminalResult(error, signal),
|
|
526
|
+
meshName,
|
|
527
|
+
targetNodeRid,
|
|
528
|
+
packetName,
|
|
529
|
+
correlationId,
|
|
530
|
+
error
|
|
531
|
+
);
|
|
532
|
+
throw error;
|
|
533
|
+
}
|
|
480
534
|
);
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
request,
|
|
487
|
-
timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
|
|
488
|
-
metadata,
|
|
489
|
-
correlationId
|
|
490
|
-
);
|
|
491
|
-
const requestOptions = { flags: 1, onAdmitted, timeoutMs: requestTimeoutBudget(timeoutMs) };
|
|
492
|
-
let completion: ZLinkMeshCompletion;
|
|
493
|
-
try {
|
|
494
|
-
completion = await this.completionTable(meshName).submit(() => {
|
|
495
|
-
const operationId = node.requestToNode(
|
|
496
|
-
toBackendRoutingId(targetNodeRid),
|
|
497
|
-
parts,
|
|
498
|
-
requestOptions
|
|
535
|
+
throwIfAborted(signal);
|
|
536
|
+
if (node.isObjectClientNodeDirectTarget?.(toBackendRoutingId(targetNodeRid)) === true) {
|
|
537
|
+
throw createInternalFrameworkException(
|
|
538
|
+
ZLinkFrameworkInternalErrorKind.RequestTargetNotFound,
|
|
539
|
+
`MeshNode '${meshName}' target '${targetNodeRid}' is an Object Client.`
|
|
499
540
|
);
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
541
|
+
}
|
|
542
|
+
let parts: readonly MessageLike[] | undefined;
|
|
543
|
+
try {
|
|
544
|
+
parts = this.encodeMessage(
|
|
545
|
+
ZLinkChannelMessageKind.Request,
|
|
503
546
|
meshName,
|
|
504
|
-
targetNodeRid,
|
|
505
547
|
packetName,
|
|
548
|
+
request,
|
|
549
|
+
timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
|
|
550
|
+
metadata,
|
|
506
551
|
correlationId
|
|
507
552
|
);
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
553
|
+
} catch (error) {
|
|
554
|
+
requestOperation.fail(error);
|
|
555
|
+
return;
|
|
556
|
+
}
|
|
557
|
+
try {
|
|
558
|
+
this.completionTable(meshName).submit(
|
|
559
|
+
(completion) => {
|
|
560
|
+
const operationId = node.requestToNode(
|
|
561
|
+
toBackendRoutingId(targetNodeRid),
|
|
562
|
+
parts!,
|
|
563
|
+
{
|
|
564
|
+
requestOperation,
|
|
565
|
+
flags: 1,
|
|
566
|
+
onAdmitted,
|
|
567
|
+
timeoutMs: requestTimeoutBudget(timeoutMs)
|
|
568
|
+
},
|
|
569
|
+
completion
|
|
570
|
+
);
|
|
571
|
+
this.traceNodeRequest(
|
|
572
|
+
ZLinkMessageFlowOutcome.Sent,
|
|
573
|
+
undefined,
|
|
574
|
+
meshName,
|
|
575
|
+
targetNodeRid,
|
|
576
|
+
packetName,
|
|
577
|
+
correlationId
|
|
578
|
+
);
|
|
579
|
+
return operationId;
|
|
580
|
+
},
|
|
581
|
+
signal,
|
|
582
|
+
requestOperation,
|
|
583
|
+
receiver
|
|
584
|
+
);
|
|
585
|
+
} finally {
|
|
586
|
+
parts = undefined;
|
|
587
|
+
}
|
|
588
|
+
},
|
|
589
|
+
(raw) => this.decodeMeshReply<TReply>(meshName, raw as ZLinkMeshCompletion),
|
|
590
|
+
(error) =>
|
|
591
|
+
mapMeshSubmissionError(error, `MeshNode '${meshName}' request to '${targetNodeRid}'`),
|
|
592
|
+
existing
|
|
593
|
+
);
|
|
594
|
+
return result;
|
|
540
595
|
}
|
|
541
|
-
|
|
542
596
|
private traceNodeRequest(
|
|
543
597
|
outcome: ZLinkMessageFlowOutcome,
|
|
544
598
|
result: ZLinkRuntimeMessageFlowResult | undefined,
|
|
@@ -612,8 +666,9 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
612
666
|
timeoutMs: number | undefined,
|
|
613
667
|
signal?: AbortSignal,
|
|
614
668
|
metadata?: ReadonlyMap<string, string>,
|
|
615
|
-
onAdmitted?: () => void
|
|
616
|
-
|
|
669
|
+
onAdmitted?: () => void,
|
|
670
|
+
requestOperation?: PendingOperation<unknown>
|
|
671
|
+
): ZLinkRequestResult<TReply> {
|
|
617
672
|
if (!this.flowCreationEnabled())
|
|
618
673
|
return this.requestToChannelScoped<TReply>(
|
|
619
674
|
meshName,
|
|
@@ -623,7 +678,8 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
623
678
|
timeoutMs,
|
|
624
679
|
signal,
|
|
625
680
|
metadata,
|
|
626
|
-
onAdmitted
|
|
681
|
+
onAdmitted,
|
|
682
|
+
requestOperation
|
|
627
683
|
);
|
|
628
684
|
return runWithOutboundFlow(true, () =>
|
|
629
685
|
this.requestToChannelScoped<TReply>(
|
|
@@ -634,61 +690,90 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
634
690
|
timeoutMs,
|
|
635
691
|
signal,
|
|
636
692
|
metadata,
|
|
637
|
-
onAdmitted
|
|
693
|
+
onAdmitted,
|
|
694
|
+
requestOperation
|
|
638
695
|
)
|
|
639
696
|
);
|
|
640
697
|
}
|
|
641
698
|
|
|
642
|
-
private
|
|
699
|
+
private requestToChannelScoped<TReply>(
|
|
643
700
|
meshName: string,
|
|
644
701
|
channelName: string,
|
|
645
702
|
packetName: string | undefined,
|
|
646
703
|
request: unknown,
|
|
647
704
|
timeoutMs: number | undefined,
|
|
648
|
-
signal
|
|
649
|
-
metadata
|
|
650
|
-
onAdmitted
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
const
|
|
655
|
-
ZLinkChannelMessageKind.Request,
|
|
656
|
-
channelName,
|
|
657
|
-
packetName,
|
|
658
|
-
request,
|
|
705
|
+
signal: AbortSignal | undefined,
|
|
706
|
+
metadata: ReadonlyMap<string, string> | undefined,
|
|
707
|
+
onAdmitted: (() => void) | undefined,
|
|
708
|
+
existing?: PendingOperation<unknown>
|
|
709
|
+
): ZLinkRequestResult<TReply> {
|
|
710
|
+
let metric: ReturnType<ZLinkRuntimeMetrics['startRequest']> | undefined;
|
|
711
|
+
const result = this.requests.prepare<TReply>(
|
|
659
712
|
timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
713
|
+
signal,
|
|
714
|
+
(requestOperation, receiver) => {
|
|
715
|
+
requestOperation.mapCaller(
|
|
716
|
+
(value) => {
|
|
717
|
+
metric?.complete('completed');
|
|
718
|
+
return value;
|
|
719
|
+
},
|
|
720
|
+
(error) => {
|
|
721
|
+
metric?.complete(requestMetricOutcome(error, signal));
|
|
722
|
+
if (
|
|
723
|
+
error instanceof ZLinkFrameworkException &&
|
|
724
|
+
internalFrameworkErrorKind(error) ===
|
|
725
|
+
ZLinkFrameworkInternalErrorKind.RequestTargetNotFound
|
|
726
|
+
)
|
|
727
|
+
this.metrics?.recordChannelSelectionFailure(meshName, channelName, 'no_ready_target');
|
|
728
|
+
throw error;
|
|
729
|
+
}
|
|
670
730
|
);
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
731
|
+
throwIfAborted(signal);
|
|
732
|
+
const node = this.requireMeshNode(meshName);
|
|
733
|
+
let parts: readonly MessageLike[] | undefined;
|
|
734
|
+
try {
|
|
735
|
+
parts = this.encodeMessage(
|
|
736
|
+
ZLinkChannelMessageKind.Request,
|
|
737
|
+
channelName,
|
|
738
|
+
packetName,
|
|
739
|
+
request,
|
|
740
|
+
timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
|
|
741
|
+
metadata
|
|
742
|
+
);
|
|
743
|
+
} catch (error) {
|
|
744
|
+
requestOperation.fail(error);
|
|
745
|
+
return;
|
|
746
|
+
}
|
|
747
|
+
metric = this.metrics?.startRequest(meshName, 'channel');
|
|
748
|
+
try {
|
|
749
|
+
this.completionTable(meshName).submit(
|
|
750
|
+
(completion) =>
|
|
751
|
+
node.requestToChannel(
|
|
752
|
+
channelName,
|
|
753
|
+
parts!,
|
|
754
|
+
{
|
|
755
|
+
requestOperation,
|
|
756
|
+
flags: 1,
|
|
757
|
+
timeoutMs: requestTimeoutBudget(timeoutMs),
|
|
758
|
+
onAdmitted
|
|
759
|
+
},
|
|
760
|
+
completion
|
|
761
|
+
),
|
|
762
|
+
signal,
|
|
763
|
+
requestOperation,
|
|
764
|
+
receiver
|
|
765
|
+
);
|
|
766
|
+
} finally {
|
|
767
|
+
parts = undefined;
|
|
768
|
+
}
|
|
769
|
+
},
|
|
770
|
+
(raw) => this.decodeMeshReply<TReply>(meshName, raw as ZLinkMeshCompletion),
|
|
771
|
+
(error) =>
|
|
772
|
+
mapMeshSubmissionError(error, `MeshNode '${meshName}' channel '${channelName}' request`),
|
|
773
|
+
existing
|
|
774
|
+
);
|
|
775
|
+
return result;
|
|
690
776
|
}
|
|
691
|
-
|
|
692
777
|
sendToSpot(
|
|
693
778
|
spotRouteTarget: ZLinkSpotRouteTarget,
|
|
694
779
|
message: unknown,
|
|
@@ -782,104 +867,143 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
782
867
|
requestToSpot<TReply = unknown>(
|
|
783
868
|
spotRouteTarget: ZLinkSpotRouteTarget,
|
|
784
869
|
request: unknown,
|
|
785
|
-
options: ZLinkSpotRoutedRequestOptions
|
|
786
|
-
|
|
870
|
+
options: ZLinkSpotRoutedRequestOptions,
|
|
871
|
+
destination?: OperationObserver<unknown, unknown>
|
|
872
|
+
): ZLinkRequestResult<TReply> {
|
|
787
873
|
return runWithOutboundFlow(this.flowCreationEnabled(), () =>
|
|
788
|
-
this.requestToSpotScoped<TReply>(spotRouteTarget, request, options)
|
|
874
|
+
this.requestToSpotScoped<TReply>(spotRouteTarget, request, options, destination)
|
|
789
875
|
);
|
|
790
876
|
}
|
|
791
877
|
|
|
792
|
-
private
|
|
878
|
+
private requestToSpotScoped<TReply = unknown>(
|
|
793
879
|
spotRouteTarget: ZLinkSpotRouteTarget,
|
|
794
880
|
request: unknown,
|
|
795
|
-
options: ZLinkSpotRoutedRequestOptions
|
|
796
|
-
|
|
881
|
+
options: ZLinkSpotRoutedRequestOptions,
|
|
882
|
+
destination?: OperationObserver<unknown, unknown>
|
|
883
|
+
): ZLinkRequestResult<TReply> {
|
|
797
884
|
const meshName = spotRouteTarget.routerChannelId;
|
|
798
885
|
const node = this.meshNode(meshName);
|
|
799
886
|
if (node === undefined) {
|
|
800
|
-
if (spotRouteTarget.spotKind === ZLinkSpotKind.Instance)
|
|
887
|
+
if (spotRouteTarget.spotKind === ZLinkSpotKind.Instance)
|
|
801
888
|
throw new ZLinkConfigurationException(
|
|
802
889
|
'Instance Spot routes require the MeshNode command 39 transport.'
|
|
803
890
|
);
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
spotRouteTarget,
|
|
807
|
-
options.packetName,
|
|
808
|
-
request,
|
|
809
|
-
options.timeoutMs,
|
|
891
|
+
return this.requests.prepare<TReply>(
|
|
892
|
+
options.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
|
|
810
893
|
options.signal,
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
spotRouteTarget.spotKind === ZLinkSpotKind.Instance
|
|
829
|
-
? node.requestInstanceSpot(
|
|
830
|
-
instanceSpotRouteFence(spotRouteTarget),
|
|
831
|
-
encoded,
|
|
832
|
-
options.timeoutMs,
|
|
833
|
-
undefined,
|
|
834
|
-
options.metadata,
|
|
835
|
-
options.instanceSpot,
|
|
836
|
-
options.onAdmitted
|
|
837
|
-
)
|
|
838
|
-
: node
|
|
839
|
-
.entrySpot()
|
|
840
|
-
.requestToSpot(
|
|
841
|
-
toBackendRoutingId(spotRouteTarget.targetNodeRid),
|
|
842
|
-
toBackendRoutingId(spotRouteTarget.spotId),
|
|
843
|
-
spotRouteTarget.targetSpotGeneration ?? 0n,
|
|
844
|
-
encoded,
|
|
845
|
-
{
|
|
846
|
-
flags: 1,
|
|
847
|
-
onAdmitted: options.onAdmitted,
|
|
848
|
-
timeoutMs: options.timeoutMs,
|
|
849
|
-
routeFence: directSpotRouteFence(spotRouteTarget),
|
|
850
|
-
entrySpot: spotRouteTarget.spotKind === ZLinkSpotKind.Entry
|
|
851
|
-
}
|
|
852
|
-
),
|
|
853
|
-
options.signal
|
|
854
|
-
);
|
|
855
|
-
} catch (error) {
|
|
856
|
-
throw mapMeshSubmissionError(
|
|
857
|
-
error,
|
|
858
|
-
`MeshNode '${meshName}' request to Spot '${spotRouteTarget.spotId}'`
|
|
894
|
+
(operation, receiver) => {
|
|
895
|
+
this.requireManager().routeRequestToSpot<TReply>(
|
|
896
|
+
spotRouteTarget,
|
|
897
|
+
options.packetName,
|
|
898
|
+
request,
|
|
899
|
+
options.timeoutMs,
|
|
900
|
+
options.signal,
|
|
901
|
+
options.metadata,
|
|
902
|
+
options.onAdmitted,
|
|
903
|
+
operation,
|
|
904
|
+
receiver
|
|
905
|
+
);
|
|
906
|
+
},
|
|
907
|
+
(value) => value as TReply,
|
|
908
|
+
identityRequestReply,
|
|
909
|
+
options.requestOperation,
|
|
910
|
+
destination
|
|
859
911
|
);
|
|
860
912
|
}
|
|
861
|
-
return this.
|
|
913
|
+
return this.requests.prepare<TReply>(
|
|
914
|
+
options.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
|
|
915
|
+
options.signal,
|
|
916
|
+
(requestOperation, receiver) => {
|
|
917
|
+
try {
|
|
918
|
+
throwIfAborted(options.signal);
|
|
919
|
+
const encoded = this.encodeMessage(
|
|
920
|
+
ZLinkChannelMessageKind.Request,
|
|
921
|
+
meshName,
|
|
922
|
+
options.packetName,
|
|
923
|
+
request,
|
|
924
|
+
options.timeoutMs,
|
|
925
|
+
options.metadata
|
|
926
|
+
);
|
|
927
|
+
this.completionTable(meshName).submit(
|
|
928
|
+
(completion) =>
|
|
929
|
+
spotRouteTarget.spotKind === ZLinkSpotKind.Instance
|
|
930
|
+
? node.requestInstanceSpot(
|
|
931
|
+
instanceSpotRouteFence(spotRouteTarget),
|
|
932
|
+
encoded,
|
|
933
|
+
options.timeoutMs,
|
|
934
|
+
undefined,
|
|
935
|
+
options.metadata,
|
|
936
|
+
options.instanceSpot,
|
|
937
|
+
options.onAdmitted,
|
|
938
|
+
requestOperation,
|
|
939
|
+
completion
|
|
940
|
+
)
|
|
941
|
+
: node.entrySpot().requestToSpot(
|
|
942
|
+
toBackendRoutingId(spotRouteTarget.targetNodeRid),
|
|
943
|
+
toBackendRoutingId(spotRouteTarget.spotId),
|
|
944
|
+
spotRouteTarget.targetSpotGeneration ?? 0n,
|
|
945
|
+
encoded,
|
|
946
|
+
{
|
|
947
|
+
flags: 1,
|
|
948
|
+
onAdmitted: options.onAdmitted,
|
|
949
|
+
timeoutMs: options.timeoutMs,
|
|
950
|
+
requestOperation,
|
|
951
|
+
routeFence: directSpotRouteFence(spotRouteTarget),
|
|
952
|
+
entrySpot: spotRouteTarget.spotKind === ZLinkSpotKind.Entry
|
|
953
|
+
},
|
|
954
|
+
completion
|
|
955
|
+
),
|
|
956
|
+
options.signal,
|
|
957
|
+
requestOperation,
|
|
958
|
+
receiver
|
|
959
|
+
);
|
|
960
|
+
} catch (error) {
|
|
961
|
+
receiver.operationFailed(requestOperation.id, error, undefined);
|
|
962
|
+
}
|
|
963
|
+
},
|
|
964
|
+
(raw) => this.decodeMeshReply<TReply>(meshName, raw as ZLinkMeshCompletion),
|
|
965
|
+
(error) =>
|
|
966
|
+
mapMeshSubmissionError(
|
|
967
|
+
error,
|
|
968
|
+
`MeshNode '${meshName}' request to Spot '${spotRouteTarget.spotId}'`
|
|
969
|
+
),
|
|
970
|
+
options.requestOperation,
|
|
971
|
+
destination
|
|
972
|
+
);
|
|
862
973
|
}
|
|
863
|
-
|
|
864
|
-
async requestFromSpotToSpot<TReply = unknown>(
|
|
974
|
+
requestFromSpotToSpot<TReply = unknown>(
|
|
865
975
|
sourceSpot: ZLinkBackendSpot,
|
|
866
976
|
spotRouteTarget: ZLinkSpotRouteTarget,
|
|
867
977
|
request: unknown,
|
|
868
978
|
options: {
|
|
869
979
|
readonly packetName?: string;
|
|
870
980
|
readonly timeoutMs?: number;
|
|
981
|
+
readonly requestOperation?: PendingOperation<unknown>;
|
|
871
982
|
readonly signal?: AbortSignal;
|
|
872
983
|
readonly onAdmitted?: () => void;
|
|
873
|
-
}
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
options.packetName,
|
|
879
|
-
request,
|
|
880
|
-
options.timeoutMs,
|
|
984
|
+
},
|
|
985
|
+
destination?: OperationObserver<unknown, unknown>
|
|
986
|
+
): ZLinkRequestResult<TReply> {
|
|
987
|
+
return this.requests.prepare<TReply>(
|
|
988
|
+
options.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
|
|
881
989
|
options.signal,
|
|
882
|
-
|
|
990
|
+
(operation, receiver) => {
|
|
991
|
+
this.requireManager().routeRequestFromSpotToSpot<TReply>(
|
|
992
|
+
sourceSpot,
|
|
993
|
+
spotRouteTarget,
|
|
994
|
+
options.packetName,
|
|
995
|
+
request,
|
|
996
|
+
options.timeoutMs,
|
|
997
|
+
options.signal,
|
|
998
|
+
options.onAdmitted,
|
|
999
|
+
operation,
|
|
1000
|
+
receiver
|
|
1001
|
+
);
|
|
1002
|
+
},
|
|
1003
|
+
(value) => value as TReply,
|
|
1004
|
+
identityRequestReply,
|
|
1005
|
+
options.requestOperation,
|
|
1006
|
+
destination
|
|
883
1007
|
);
|
|
884
1008
|
}
|
|
885
1009
|
|
|
@@ -889,6 +1013,7 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
889
1013
|
request: Message,
|
|
890
1014
|
options: {
|
|
891
1015
|
readonly timeoutMs?: number;
|
|
1016
|
+
readonly requestOperation?: PendingOperation<unknown>;
|
|
892
1017
|
readonly signal?: AbortSignal;
|
|
893
1018
|
readonly onAdmitted?: () => void;
|
|
894
1019
|
}
|
|
@@ -899,7 +1024,8 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
899
1024
|
request,
|
|
900
1025
|
options.timeoutMs,
|
|
901
1026
|
options.signal,
|
|
902
|
-
options.onAdmitted
|
|
1027
|
+
options.onAdmitted,
|
|
1028
|
+
options.requestOperation
|
|
903
1029
|
);
|
|
904
1030
|
}
|
|
905
1031
|
|
|
@@ -908,6 +1034,7 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
908
1034
|
request: Message,
|
|
909
1035
|
options: {
|
|
910
1036
|
readonly timeoutMs?: number;
|
|
1037
|
+
readonly requestOperation?: PendingOperation<unknown>;
|
|
911
1038
|
readonly signal?: AbortSignal;
|
|
912
1039
|
readonly onAdmitted?: () => void;
|
|
913
1040
|
}
|
|
@@ -922,74 +1049,75 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
922
1049
|
request: Message,
|
|
923
1050
|
options: {
|
|
924
1051
|
readonly timeoutMs?: number;
|
|
1052
|
+
readonly requestOperation?: PendingOperation<unknown>;
|
|
925
1053
|
readonly signal?: AbortSignal;
|
|
926
1054
|
readonly onAdmitted?: () => void;
|
|
927
1055
|
}
|
|
928
1056
|
): Promise<readonly Message[]> {
|
|
929
1057
|
const meshName = spotRouteTarget.routerChannelId;
|
|
930
1058
|
const node = this.meshNode(meshName);
|
|
931
|
-
if (node
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
payload,
|
|
940
|
-
options.timeoutMs
|
|
1059
|
+
if (node === undefined)
|
|
1060
|
+
return this.requireManager().routeRequestRawToSpot(
|
|
1061
|
+
spotRouteTarget,
|
|
1062
|
+
request,
|
|
1063
|
+
options.timeoutMs,
|
|
1064
|
+
options.signal,
|
|
1065
|
+
options.onAdmitted,
|
|
1066
|
+
options.requestOperation
|
|
941
1067
|
);
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
}
|
|
960
|
-
),
|
|
961
|
-
options.signal
|
|
1068
|
+
const operation = this.requests.begin(
|
|
1069
|
+
options.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
|
|
1070
|
+
options.signal,
|
|
1071
|
+
options.requestOperation
|
|
1072
|
+
);
|
|
1073
|
+
return this.requests.run<readonly Message[]>(
|
|
1074
|
+
operation,
|
|
1075
|
+
(receiver) => {
|
|
1076
|
+
throwIfAborted(options.signal);
|
|
1077
|
+
const payload = JSON.parse(request.getString('utf8')) as Record<string, unknown>;
|
|
1078
|
+
const packetName = typeof payload.packetName === 'string' ? payload.packetName : undefined;
|
|
1079
|
+
const parts = this.encodeMessage(
|
|
1080
|
+
ZLinkChannelMessageKind.Request,
|
|
1081
|
+
meshName,
|
|
1082
|
+
packetName,
|
|
1083
|
+
payload,
|
|
1084
|
+
options.timeoutMs
|
|
962
1085
|
);
|
|
963
|
-
|
|
964
|
-
|
|
1086
|
+
this.completionTable(meshName).submit(
|
|
1087
|
+
(completion) =>
|
|
1088
|
+
node.entrySpot().requestToSpot(
|
|
1089
|
+
toBackendRoutingId(spotRouteTarget.targetNodeRid),
|
|
1090
|
+
toBackendRoutingId(spotRouteTarget.spotId),
|
|
1091
|
+
spotRouteTarget.targetSpotGeneration ?? 0n,
|
|
1092
|
+
parts,
|
|
1093
|
+
{
|
|
1094
|
+
flags: 1,
|
|
1095
|
+
onAdmitted: options.onAdmitted,
|
|
1096
|
+
timeoutMs: options.timeoutMs,
|
|
1097
|
+
requestOperation: operation,
|
|
1098
|
+
routeFence: directSpotRouteFence(spotRouteTarget),
|
|
1099
|
+
entrySpot: spotRouteTarget.spotKind === ZLinkSpotKind.Entry
|
|
1100
|
+
},
|
|
1101
|
+
completion
|
|
1102
|
+
),
|
|
1103
|
+
options.signal,
|
|
1104
|
+
operation,
|
|
1105
|
+
receiver
|
|
1106
|
+
);
|
|
1107
|
+
},
|
|
1108
|
+
(raw) => {
|
|
1109
|
+
const reply = this.decodeMeshReply<unknown>(meshName, raw as ZLinkMeshCompletion);
|
|
1110
|
+
const parts = [ZLinkBufferMessage.fromOwned(Buffer.from(JSON.stringify(reply)))];
|
|
1111
|
+
if (!operation.isPending()) closeMessages(parts);
|
|
1112
|
+
return parts;
|
|
1113
|
+
},
|
|
1114
|
+
(error) =>
|
|
1115
|
+
mapMeshSubmissionError(
|
|
965
1116
|
error,
|
|
966
1117
|
`MeshNode '${meshName}' raw request to Spot '${spotRouteTarget.spotId}'`
|
|
967
|
-
)
|
|
968
|
-
}
|
|
969
|
-
const completion = await completionPromise;
|
|
970
|
-
if (completion.terminalResult !== 0 || completion.failureErrno !== 0) {
|
|
971
|
-
try {
|
|
972
|
-
throw meshRequestFailure(meshName, completion.terminalResult, completion.failureErrno);
|
|
973
|
-
} finally {
|
|
974
|
-
closeMeshCompletion(completion);
|
|
975
|
-
}
|
|
976
|
-
}
|
|
977
|
-
try {
|
|
978
|
-
const reply = decodeChannelReply<unknown>(completion.parts, this.codecs);
|
|
979
|
-
return [ZLinkBufferMessage.fromOwned(Buffer.from(JSON.stringify(reply)))];
|
|
980
|
-
} finally {
|
|
981
|
-
closeMeshCompletion(completion);
|
|
982
|
-
}
|
|
983
|
-
}
|
|
984
|
-
return this.requireManager().routeRequestRawToSpot(
|
|
985
|
-
spotRouteTarget,
|
|
986
|
-
request,
|
|
987
|
-
options.timeoutMs,
|
|
988
|
-
options.signal,
|
|
989
|
-
options.onAdmitted
|
|
1118
|
+
)
|
|
990
1119
|
);
|
|
991
1120
|
}
|
|
992
|
-
|
|
993
1121
|
private requireManager(): ZLinkChannelTransportRuntime {
|
|
994
1122
|
const manager = this.manager();
|
|
995
1123
|
if (manager === undefined) {
|
|
@@ -999,7 +1127,9 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
999
1127
|
}
|
|
1000
1128
|
|
|
1001
1129
|
private meshNode(meshName: string): ZLinkBackendMeshNode | undefined {
|
|
1002
|
-
|
|
1130
|
+
const runtime = this.meshRuntime?.();
|
|
1131
|
+
if (runtime === undefined) this.requireManager();
|
|
1132
|
+
return runtime?.meshNode?.(meshName);
|
|
1003
1133
|
}
|
|
1004
1134
|
|
|
1005
1135
|
private isKnownBackendPeer(node: ZLinkBackendMeshNode, targetNodeRid: string): boolean {
|
|
@@ -1067,14 +1197,6 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
1067
1197
|
);
|
|
1068
1198
|
}
|
|
1069
1199
|
|
|
1070
|
-
private async waitForMeshReply<TReply>(
|
|
1071
|
-
meshName: string,
|
|
1072
|
-
completionPromise: Promise<ZLinkMeshCompletion>
|
|
1073
|
-
): Promise<TReply> {
|
|
1074
|
-
const completion = await completionPromise;
|
|
1075
|
-
return this.decodeMeshReply<TReply>(meshName, completion);
|
|
1076
|
-
}
|
|
1077
|
-
|
|
1078
1200
|
private decodeMeshReply<TReply>(meshName: string, completion: ZLinkMeshCompletion): TReply {
|
|
1079
1201
|
try {
|
|
1080
1202
|
if (completion.terminalResult !== 0 || completion.failureErrno !== 0) {
|
|
@@ -1160,7 +1282,7 @@ function mapMeshSubmitResult(result: number): ZLinkSubmitResult {
|
|
|
1160
1282
|
return classifySubmitResult(result, 'Mesh submission');
|
|
1161
1283
|
}
|
|
1162
1284
|
|
|
1163
|
-
function mapMeshSubmissionError(error: unknown, operation: string):
|
|
1285
|
+
function mapMeshSubmissionError(error: unknown, operation: string): unknown {
|
|
1164
1286
|
if (error instanceof ZLinkFrameworkException) {
|
|
1165
1287
|
return error;
|
|
1166
1288
|
}
|
|
@@ -1196,12 +1318,17 @@ function mapMeshSubmissionError(error: unknown, operation: string): Error {
|
|
|
1196
1318
|
error
|
|
1197
1319
|
);
|
|
1198
1320
|
}
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1321
|
+
if (
|
|
1322
|
+
isAbortError(error) ||
|
|
1323
|
+
error instanceof ZLinkConfigurationException ||
|
|
1324
|
+
error instanceof TypeError ||
|
|
1325
|
+
error instanceof RangeError
|
|
1326
|
+
) {
|
|
1327
|
+
return error;
|
|
1328
|
+
}
|
|
1329
|
+
return new ZLinkFrameworkException(
|
|
1330
|
+
ZLinkFrameworkErrorKind.InternalFailure,
|
|
1331
|
+
`${operation} failed.`,
|
|
1205
1332
|
error
|
|
1206
1333
|
);
|
|
1207
1334
|
}
|