@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
|
@@ -33,7 +33,6 @@ import {
|
|
|
33
33
|
type ZLinkRouteRuntimeSendHandler
|
|
34
34
|
} from './channel-dispatchers';
|
|
35
35
|
import {
|
|
36
|
-
createChannelApplicationDispatchQueue,
|
|
37
36
|
ZLinkChannelReceiveLoop,
|
|
38
37
|
ZLinkReceiveRoundRobinCoordinator,
|
|
39
38
|
ZLinkRouteReceiveLoop,
|
|
@@ -52,7 +51,6 @@ import {
|
|
|
52
51
|
} from '../../contracts/Configuration/RuntimeEndpointConnections';
|
|
53
52
|
import type { ApplicationJobQueue } from '../host/application-job-queue';
|
|
54
53
|
import { startOutsideStateLane, ZLinkStateLane } from '../execution/state-lane';
|
|
55
|
-
import { ZLinkSerialExecutionQueue } from '../execution/serial-execution-queue';
|
|
56
54
|
|
|
57
55
|
interface ManualFanoutSubscriberState {
|
|
58
56
|
readonly channelName: string;
|
|
@@ -83,7 +81,6 @@ interface ChannelRuntimeDisposeWork {
|
|
|
83
81
|
readonly subscriberLoops: readonly ZLinkSubscriberReceiveLoop[];
|
|
84
82
|
readonly manualTransitions: readonly Promise<void>[];
|
|
85
83
|
readonly routeLoops: readonly { stop(): Promise<void> }[];
|
|
86
|
-
readonly applicationDispatchQueues: readonly ZLinkSerialExecutionQueue[];
|
|
87
84
|
readonly clientServerLocation?: ZLinkClientServerLocationRuntime;
|
|
88
85
|
readonly fanoutLocation?: ZLinkFanoutLocationRuntime;
|
|
89
86
|
readonly spotRouteBridges: readonly ZLinkBackendSpotRouteBridge[];
|
|
@@ -107,10 +104,9 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
107
104
|
private readonly receiveRoundRobin = new ZLinkReceiveRoundRobinCoordinator();
|
|
108
105
|
private readonly channelReceiveLoops: ZLinkChannelReceiveLoop[] = [];
|
|
109
106
|
private readonly subscriberReceiveLoops: ZLinkSubscriberReceiveLoop[] = [];
|
|
110
|
-
|
|
107
|
+
readonly manualFanoutSubscribers = new Map<string, ManualFanoutSubscriberState>();
|
|
111
108
|
private readonly manualFanoutSubscriberOwners = new Set<object>();
|
|
112
109
|
private readonly routeReceiveLoops: Array<{ stop(): Promise<void> }> = [];
|
|
113
|
-
private readonly applicationDispatchQueues = new Map<string, ZLinkSerialExecutionQueue>();
|
|
114
110
|
private readonly meshChannelDispatchers = new Map<string, ZLinkChannelRequestDispatcher>();
|
|
115
111
|
private readonly meshRouteDispatchers = new Map<string, ZLinkRoutePacketDispatcher>();
|
|
116
112
|
private nextManualFanoutIndex = 0;
|
|
@@ -259,11 +255,13 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
259
255
|
...(mesh.routeSendHandlers ?? []).map((registration) => ({
|
|
260
256
|
kind: 'send' as const,
|
|
261
257
|
packetName: registration.packetName,
|
|
258
|
+
messageType: registration.messageType,
|
|
262
259
|
handler: this.options.dispatchServices.routeSendHandler(registration.handlerType)
|
|
263
260
|
})),
|
|
264
261
|
...(mesh.routeRequestHandlers ?? []).map((registration) => ({
|
|
265
262
|
kind: 'request' as const,
|
|
266
263
|
packetName: registration.packetName,
|
|
264
|
+
messageType: registration.messageType,
|
|
267
265
|
handler: this.options.dispatchServices.routeRequestHandler(registration.handlerType)
|
|
268
266
|
})),
|
|
269
267
|
...[...(this.options.internalRouteSendHandlers?.entries() ?? [])].map(
|
|
@@ -314,27 +312,42 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
314
312
|
taskRunner.errorSink
|
|
315
313
|
),
|
|
316
314
|
handlers: new Map(
|
|
317
|
-
channel.requestHandlers?.map((handler) =>
|
|
318
|
-
|
|
319
|
-
(
|
|
315
|
+
channel.requestHandlers?.map((handler) => {
|
|
316
|
+
const configuredHandler = (
|
|
320
317
|
handler as typeof handler & {
|
|
321
318
|
readonly handler?: ZLinkRequestHandler<unknown, unknown>;
|
|
322
319
|
}
|
|
323
|
-
).handler
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
320
|
+
).handler;
|
|
321
|
+
return [
|
|
322
|
+
handler.packetName,
|
|
323
|
+
{
|
|
324
|
+
messageType: handler.messageType,
|
|
325
|
+
handler:
|
|
326
|
+
configuredHandler ??
|
|
327
|
+
adaptRouteRequestHandler(
|
|
328
|
+
this.options.dispatchServices.routeRequestHandler(handler.handlerType)
|
|
329
|
+
)
|
|
330
|
+
}
|
|
331
|
+
];
|
|
332
|
+
})
|
|
328
333
|
),
|
|
329
334
|
sendHandlers: new Map(
|
|
330
|
-
channel.sendHandlers?.map((handler) =>
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
335
|
+
channel.sendHandlers?.map((handler) => {
|
|
336
|
+
const configuredHandler = (
|
|
337
|
+
handler as typeof handler & { readonly handler?: ZLinkSendHandler<unknown> }
|
|
338
|
+
).handler;
|
|
339
|
+
return [
|
|
340
|
+
handler.packetName,
|
|
341
|
+
{
|
|
342
|
+
messageType: handler.messageType,
|
|
343
|
+
handler:
|
|
344
|
+
configuredHandler ??
|
|
345
|
+
adaptRouteSendHandler(
|
|
346
|
+
this.options.dispatchServices.routeSendHandler(handler.handlerType)
|
|
347
|
+
)
|
|
348
|
+
}
|
|
349
|
+
];
|
|
350
|
+
})
|
|
338
351
|
),
|
|
339
352
|
filters: this.options.dispatchServices.handlerFilters(),
|
|
340
353
|
unhandled: this.options.registration.dispatch?.unhandled
|
|
@@ -411,9 +424,6 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
411
424
|
...work.manualTransitions
|
|
412
425
|
])
|
|
413
426
|
);
|
|
414
|
-
const applicationStopped = await startOutsideStateLane(() =>
|
|
415
|
-
Promise.allSettled(work.applicationDispatchQueues.map((queue) => queue.close()))
|
|
416
|
-
);
|
|
417
427
|
const descriptorStopped =
|
|
418
428
|
work.clientServerLocation === undefined
|
|
419
429
|
? []
|
|
@@ -434,7 +444,6 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
434
444
|
);
|
|
435
445
|
const errors = [
|
|
436
446
|
...transportStopped,
|
|
437
|
-
...applicationStopped,
|
|
438
447
|
...descriptorStopped,
|
|
439
448
|
...fanoutDescriptorStopped,
|
|
440
449
|
...cleanup
|
|
@@ -449,7 +458,6 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
449
458
|
this.channelReceiveLoops.length = 0;
|
|
450
459
|
this.subscriberReceiveLoops.length = 0;
|
|
451
460
|
this.routeReceiveLoops.length = 0;
|
|
452
|
-
this.applicationDispatchQueues.clear();
|
|
453
461
|
this.clientServerLocation = undefined;
|
|
454
462
|
this.fanoutLocation = undefined;
|
|
455
463
|
this.taskRunner = undefined;
|
|
@@ -478,7 +486,6 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
478
486
|
this.drainManualFanoutSubscriberCore(state)
|
|
479
487
|
);
|
|
480
488
|
const routeLoops = [...this.routeReceiveLoops];
|
|
481
|
-
const applicationDispatchQueues = [...this.applicationDispatchQueues.values()];
|
|
482
489
|
const clientServerLocation = this.clientServerLocation;
|
|
483
490
|
const fanoutLocation = this.fanoutLocation;
|
|
484
491
|
const spotRouteBridges = [...this.options.spotRouteBridges.values()];
|
|
@@ -487,22 +494,12 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
487
494
|
subscriberLoops,
|
|
488
495
|
manualTransitions,
|
|
489
496
|
routeLoops,
|
|
490
|
-
applicationDispatchQueues,
|
|
491
497
|
clientServerLocation,
|
|
492
498
|
fanoutLocation,
|
|
493
499
|
spotRouteBridges
|
|
494
500
|
};
|
|
495
501
|
}
|
|
496
502
|
|
|
497
|
-
private applicationDispatchQueue(channelName: string): ZLinkSerialExecutionQueue {
|
|
498
|
-
let queue = this.applicationDispatchQueues.get(channelName);
|
|
499
|
-
if (queue === undefined) {
|
|
500
|
-
queue = createChannelApplicationDispatchQueue();
|
|
501
|
-
this.applicationDispatchQueues.set(channelName, queue);
|
|
502
|
-
}
|
|
503
|
-
return queue;
|
|
504
|
-
}
|
|
505
|
-
|
|
506
503
|
private openOutboundSockets(): void {
|
|
507
504
|
// The process-local Server is an independent peer source. Location Store
|
|
508
505
|
// discovery may later alias the same admitted identity, but startup and
|
|
@@ -536,19 +533,27 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
536
533
|
handlers: new Map(
|
|
537
534
|
channel.requestHandlers?.map((handler) => [
|
|
538
535
|
handler.packetName,
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
536
|
+
{
|
|
537
|
+
messageType: handler.messageType,
|
|
538
|
+
handler:
|
|
539
|
+
handler.handler ??
|
|
540
|
+
this.options.dispatchServices.channelRequestHandler(
|
|
541
|
+
requireChannelHandlerType(handler.handlerType, channelName, handler.packetName)
|
|
542
|
+
)
|
|
543
|
+
}
|
|
543
544
|
])
|
|
544
545
|
),
|
|
545
546
|
sendHandlers: new Map(
|
|
546
547
|
channel.sendHandlers?.map((handler) => [
|
|
547
548
|
handler.packetName,
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
549
|
+
{
|
|
550
|
+
messageType: handler.messageType,
|
|
551
|
+
handler:
|
|
552
|
+
handler.handler ??
|
|
553
|
+
this.options.dispatchServices.channelSendHandler(
|
|
554
|
+
requireChannelHandlerType(handler.handlerType, channelName, handler.packetName)
|
|
555
|
+
)
|
|
556
|
+
}
|
|
552
557
|
])
|
|
553
558
|
),
|
|
554
559
|
filters: this.options.dispatchServices.handlerFilters(),
|
|
@@ -572,8 +577,7 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
572
577
|
this.options.applicationJobQueue,
|
|
573
578
|
(error) =>
|
|
574
579
|
taskRunner.errorSink.reportRuntimeTaskException(`channel:${channelName}:dispatch`, error),
|
|
575
|
-
this.receiveRoundRobin
|
|
576
|
-
this.applicationDispatchQueue(channelName)
|
|
580
|
+
this.receiveRoundRobin
|
|
577
581
|
);
|
|
578
582
|
this.channelReceiveLoops.push(loop);
|
|
579
583
|
tasks.push(taskRunner.run(`channel:${channelName}`, (signal) => loop.run(signal)));
|
|
@@ -599,7 +603,10 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
599
603
|
codecs: this.options.codecs,
|
|
600
604
|
dispatchErrors: this.options.dispatchServices.dispatchErrorReporter(taskRunner.errorSink),
|
|
601
605
|
handlers: new Map(
|
|
602
|
-
channel.publishHandlers?.map((handler) => [
|
|
606
|
+
channel.publishHandlers?.map((handler) => [
|
|
607
|
+
handler.packetName,
|
|
608
|
+
{ handler: handler.handler, messageType: handler.messageType }
|
|
609
|
+
])
|
|
603
610
|
),
|
|
604
611
|
filters: this.options.dispatchServices.handlerFilters(),
|
|
605
612
|
unhandled: this.options.registration.dispatch?.unhandled,
|
|
@@ -657,7 +664,7 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
657
664
|
return state;
|
|
658
665
|
}
|
|
659
666
|
|
|
660
|
-
|
|
667
|
+
requestManualFanoutConnect(
|
|
661
668
|
channelName: string,
|
|
662
669
|
endpoint: string,
|
|
663
670
|
taskRunner: ZLinkRuntimeTaskRunner,
|
|
@@ -785,8 +792,7 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
785
792
|
taskRunner.errorSink.reportRuntimeTaskException(
|
|
786
793
|
`subscriber:${state.channelName}:manual:${state.index}:dispatch`,
|
|
787
794
|
error
|
|
788
|
-
)
|
|
789
|
-
this.applicationDispatchQueue(channelName)
|
|
795
|
+
)
|
|
790
796
|
);
|
|
791
797
|
state.openingToken = undefined;
|
|
792
798
|
state.active = { token, loop };
|
|
@@ -887,7 +893,10 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
887
893
|
codecs: this.options.codecs,
|
|
888
894
|
dispatchErrors: this.options.dispatchServices.dispatchErrorReporter(taskRunner.errorSink),
|
|
889
895
|
handlers: new Map(
|
|
890
|
-
channel.publishHandlers?.map((handler) => [
|
|
896
|
+
channel.publishHandlers?.map((handler) => [
|
|
897
|
+
handler.packetName,
|
|
898
|
+
{ handler: handler.handler, messageType: handler.messageType }
|
|
899
|
+
])
|
|
891
900
|
),
|
|
892
901
|
filters: this.options.dispatchServices.handlerFilters(),
|
|
893
902
|
unhandled: this.options.registration.dispatch?.unhandled,
|
|
@@ -905,8 +914,7 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
905
914
|
taskRunner.errorSink.reportRuntimeTaskException(
|
|
906
915
|
`subscriber:${channelName}:automatic:${connectionId}:dispatch`,
|
|
907
916
|
error
|
|
908
|
-
)
|
|
909
|
-
this.applicationDispatchQueue(channelName)
|
|
917
|
+
)
|
|
910
918
|
);
|
|
911
919
|
this.subscriberReceiveLoops.push(loop);
|
|
912
920
|
void taskRunner.run(`subscriber:${channelName}:automatic:${connectionId}`, (signal) =>
|
|
@@ -975,8 +983,7 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
975
983
|
taskRunner.errorSink.reportRuntimeTaskException(
|
|
976
984
|
`route:${routeChannel.routerChannelId}:dispatch`,
|
|
977
985
|
error
|
|
978
|
-
)
|
|
979
|
-
this.applicationDispatchQueue(routeChannel.routerChannelId)
|
|
986
|
+
)
|
|
980
987
|
);
|
|
981
988
|
this.routeReceiveLoops.push(loop);
|
|
982
989
|
tasks.push(
|
|
@@ -1006,9 +1013,7 @@ export class ZLinkChannelRuntimeLifecycle {
|
|
|
1006
1013
|
function adaptRouteRequestHandler(
|
|
1007
1014
|
handler: ZLinkRouteRuntimeRequestHandler
|
|
1008
1015
|
): ZLinkRequestHandler<unknown, unknown> {
|
|
1009
|
-
return {
|
|
1010
|
-
handle: async (payload, context) => handler.handle(payload, context as never)
|
|
1011
|
-
};
|
|
1016
|
+
return { handle: async (payload, context) => handler.handle(payload, context as never) };
|
|
1012
1017
|
}
|
|
1013
1018
|
|
|
1014
1019
|
function adaptRouteSendHandler(handler: ZLinkRouteRuntimeSendHandler): ZLinkSendHandler<unknown> {
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
+
import { RequestRuntime } from '../foundation/request-runtime';
|
|
2
|
+
import type { PendingOperation, OperationObserver } from '../foundation/operation-registry';
|
|
1
3
|
import type { ZLinkMeshDispatchAdmission } from '../admission';
|
|
4
|
+
import {
|
|
5
|
+
identityRequestReply,
|
|
6
|
+
rejectZLinkRequestReply,
|
|
7
|
+
type ZLinkRequestResult
|
|
8
|
+
} from '../messaging/request-result';
|
|
2
9
|
import type { ZLinkListenerRecords } from '../foundation/listener-records';
|
|
3
10
|
import type { ZLinkLocationOptionOverrides } from '../../contracts/Locations/Options';
|
|
4
11
|
import type { RoutingId } from '../../contracts';
|
|
@@ -6,6 +13,7 @@ import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProvider
|
|
|
6
13
|
import type { ZLinkSubmitResult } from '../messaging/submission-result';
|
|
7
14
|
import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
|
|
8
15
|
import type { ZLinkMessageFlowModeCell } from '../diagnostics';
|
|
16
|
+
import type { ZLinkTelemetryLease } from '../diagnostics/message-flow-delivery';
|
|
9
17
|
import type { Message } from '../../contracts/Common/Message';
|
|
10
18
|
import type { ReceiveRecord } from '../foundation/service-runtime-contracts';
|
|
11
19
|
import { ZLinkConfigurationException, type ZLinkFrameworkRegistration } from '../configuration';
|
|
@@ -41,6 +49,7 @@ import {
|
|
|
41
49
|
} from '../host/application-job-queue';
|
|
42
50
|
|
|
43
51
|
export class ZLinkChannelRuntimeManager {
|
|
52
|
+
private readonly requests: RequestRuntime;
|
|
44
53
|
private readonly registration: ZLinkFrameworkRegistration;
|
|
45
54
|
private readonly sockets: ZLinkChannelSocketRegistry;
|
|
46
55
|
private readonly spotRoutes: ZLinkSpotRouteDispatchStrategy;
|
|
@@ -55,6 +64,7 @@ export class ZLinkChannelRuntimeManager {
|
|
|
55
64
|
options: ZLinkChannelRuntimeManagerOptions = {}
|
|
56
65
|
) {
|
|
57
66
|
this.registration = registration;
|
|
67
|
+
this.requests = options.requests ?? new RequestRuntime();
|
|
58
68
|
const applicationJobQueue =
|
|
59
69
|
options.applicationJobQueue ??
|
|
60
70
|
new ApplicationJobQueue(resolveApplicationJobQueueConfiguration());
|
|
@@ -73,10 +83,12 @@ export class ZLinkChannelRuntimeManager {
|
|
|
73
83
|
const dispatchServices = new ZLinkChannelDispatchServices(
|
|
74
84
|
registration,
|
|
75
85
|
providerResolver,
|
|
76
|
-
options.messageFlowModeCell
|
|
86
|
+
options.messageFlowModeCell,
|
|
87
|
+
options.telemetryLease
|
|
77
88
|
);
|
|
78
89
|
const spotRouteBridges = new Map<string, ZLinkBackendSpotRouteBridge>();
|
|
79
90
|
this.spotRoutes = new ZLinkSpotRouteDispatchStrategy({
|
|
91
|
+
requests: this.requests,
|
|
80
92
|
registration,
|
|
81
93
|
sockets: this.sockets,
|
|
82
94
|
codecs,
|
|
@@ -84,7 +96,12 @@ export class ZLinkChannelRuntimeManager {
|
|
|
84
96
|
localSpotRouteDispatcher: options.localSpotRouteDispatcher,
|
|
85
97
|
flowCreationEnabled: () => dispatchServices.flowCreationEnabled()
|
|
86
98
|
});
|
|
87
|
-
this.outbound = new ZLinkChannelOutboundOperations(
|
|
99
|
+
this.outbound = new ZLinkChannelOutboundOperations(
|
|
100
|
+
this.sockets,
|
|
101
|
+
codecs,
|
|
102
|
+
dispatchServices,
|
|
103
|
+
this.requests
|
|
104
|
+
);
|
|
88
105
|
this.lifecycle = new ZLinkChannelRuntimeLifecycle({
|
|
89
106
|
registration,
|
|
90
107
|
adapter,
|
|
@@ -245,24 +262,37 @@ export class ZLinkChannelRuntimeManager {
|
|
|
245
262
|
return this.outbound.send(channelName, packetName, message, metadata);
|
|
246
263
|
}
|
|
247
264
|
|
|
248
|
-
|
|
265
|
+
request<TReply>(
|
|
249
266
|
channelName: string,
|
|
250
267
|
packetName: string | undefined,
|
|
251
268
|
request: unknown,
|
|
252
269
|
timeoutMs: number | undefined,
|
|
253
270
|
signal?: AbortSignal,
|
|
254
271
|
metadata?: ReadonlyMap<string, string>,
|
|
255
|
-
onAdmitted?: () => void
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
request
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
272
|
+
onAdmitted?: () => void,
|
|
273
|
+
requestOperation?: PendingOperation<unknown>
|
|
274
|
+
): ZLinkRequestResult<TReply> {
|
|
275
|
+
try {
|
|
276
|
+
const operation = this.requests.begin(timeoutMs, signal, requestOperation);
|
|
277
|
+
const pending = this.outbound.request<TReply>(
|
|
278
|
+
channelName,
|
|
279
|
+
packetName,
|
|
280
|
+
request,
|
|
281
|
+
timeoutMs,
|
|
282
|
+
signal,
|
|
283
|
+
metadata,
|
|
284
|
+
onAdmitted,
|
|
285
|
+
operation
|
|
286
|
+
);
|
|
287
|
+
return {
|
|
288
|
+
pending,
|
|
289
|
+
decode: identityRequestReply<TReply>,
|
|
290
|
+
mapFailure: identityRequestReply,
|
|
291
|
+
operation: operation as PendingOperation<TReply>
|
|
292
|
+
};
|
|
293
|
+
} catch (error) {
|
|
294
|
+
return rejectZLinkRequestReply(error);
|
|
295
|
+
}
|
|
266
296
|
}
|
|
267
297
|
|
|
268
298
|
tryPublish(
|
|
@@ -296,7 +326,7 @@ export class ZLinkChannelRuntimeManager {
|
|
|
296
326
|
return this.outbound.routeSubmit(routerChannelId, targetNodeRid, packetName, message, metadata);
|
|
297
327
|
}
|
|
298
328
|
|
|
299
|
-
|
|
329
|
+
routeRequest<TReply>(
|
|
300
330
|
routerChannelId: string,
|
|
301
331
|
targetNodeRid: string,
|
|
302
332
|
packetName: string | undefined,
|
|
@@ -304,7 +334,8 @@ export class ZLinkChannelRuntimeManager {
|
|
|
304
334
|
timeoutMs: number | undefined,
|
|
305
335
|
signal?: AbortSignal,
|
|
306
336
|
metadata?: ReadonlyMap<string, string>,
|
|
307
|
-
onAdmitted?: () => void
|
|
337
|
+
onAdmitted?: () => void,
|
|
338
|
+
requestOperation?: PendingOperation<unknown>
|
|
308
339
|
): Promise<TReply> {
|
|
309
340
|
return this.outbound.routeRequest<TReply>(
|
|
310
341
|
routerChannelId,
|
|
@@ -314,7 +345,8 @@ export class ZLinkChannelRuntimeManager {
|
|
|
314
345
|
timeoutMs,
|
|
315
346
|
signal,
|
|
316
347
|
metadata,
|
|
317
|
-
onAdmitted
|
|
348
|
+
onAdmitted,
|
|
349
|
+
requestOperation
|
|
318
350
|
);
|
|
319
351
|
}
|
|
320
352
|
|
|
@@ -327,14 +359,16 @@ export class ZLinkChannelRuntimeManager {
|
|
|
327
359
|
return this.spotRoutes.routeSendToSpot(spotRouteTarget, packetName, message, metadata);
|
|
328
360
|
}
|
|
329
361
|
|
|
330
|
-
|
|
362
|
+
routeRequestToSpot<TReply>(
|
|
331
363
|
spotRouteTarget: ZLinkSpotRouteTarget,
|
|
332
364
|
packetName: string | undefined,
|
|
333
365
|
request: unknown,
|
|
334
366
|
timeoutMs: number | undefined,
|
|
335
367
|
signal?: AbortSignal,
|
|
336
368
|
metadata?: ReadonlyMap<string, string>,
|
|
337
|
-
onAdmitted?: () => void
|
|
369
|
+
onAdmitted?: () => void,
|
|
370
|
+
requestOperation?: PendingOperation<unknown>,
|
|
371
|
+
destination?: OperationObserver<unknown, unknown>
|
|
338
372
|
): Promise<TReply> {
|
|
339
373
|
return this.spotRoutes.routeRequestToSpot<TReply>(
|
|
340
374
|
spotRouteTarget,
|
|
@@ -343,18 +377,22 @@ export class ZLinkChannelRuntimeManager {
|
|
|
343
377
|
timeoutMs,
|
|
344
378
|
signal,
|
|
345
379
|
metadata,
|
|
346
|
-
onAdmitted
|
|
380
|
+
onAdmitted,
|
|
381
|
+
requestOperation,
|
|
382
|
+
destination
|
|
347
383
|
);
|
|
348
384
|
}
|
|
349
385
|
|
|
350
|
-
|
|
386
|
+
routeRequestFromSpotToSpot<TReply>(
|
|
351
387
|
sourceSpot: ZLinkBackendSpot,
|
|
352
388
|
spotRouteTarget: ZLinkSpotRouteTarget,
|
|
353
389
|
packetName: string | undefined,
|
|
354
390
|
request: unknown,
|
|
355
391
|
timeoutMs: number | undefined,
|
|
356
392
|
signal?: AbortSignal,
|
|
357
|
-
onAdmitted?: () => void
|
|
393
|
+
onAdmitted?: () => void,
|
|
394
|
+
requestOperation?: PendingOperation<unknown>,
|
|
395
|
+
destination?: OperationObserver<unknown, unknown>
|
|
358
396
|
): Promise<TReply> {
|
|
359
397
|
return this.spotRoutes.routeRequestFromSpotToSpot<TReply>(
|
|
360
398
|
sourceSpot,
|
|
@@ -363,7 +401,9 @@ export class ZLinkChannelRuntimeManager {
|
|
|
363
401
|
request,
|
|
364
402
|
timeoutMs,
|
|
365
403
|
signal,
|
|
366
|
-
onAdmitted
|
|
404
|
+
onAdmitted,
|
|
405
|
+
requestOperation,
|
|
406
|
+
destination
|
|
367
407
|
);
|
|
368
408
|
}
|
|
369
409
|
|
|
@@ -389,7 +429,8 @@ export class ZLinkChannelRuntimeManager {
|
|
|
389
429
|
request: Message,
|
|
390
430
|
timeoutMs: number | undefined,
|
|
391
431
|
signal?: AbortSignal,
|
|
392
|
-
onAdmitted?: () => void
|
|
432
|
+
onAdmitted?: () => void,
|
|
433
|
+
requestOperation?: PendingOperation<unknown>
|
|
393
434
|
): Promise<readonly Message[]> {
|
|
394
435
|
return this.spotRoutes.routeRequestRawFromSpotToSpot(
|
|
395
436
|
sourceSpot,
|
|
@@ -397,7 +438,8 @@ export class ZLinkChannelRuntimeManager {
|
|
|
397
438
|
request,
|
|
398
439
|
timeoutMs,
|
|
399
440
|
signal,
|
|
400
|
-
onAdmitted
|
|
441
|
+
onAdmitted,
|
|
442
|
+
requestOperation
|
|
401
443
|
);
|
|
402
444
|
}
|
|
403
445
|
|
|
@@ -406,14 +448,16 @@ export class ZLinkChannelRuntimeManager {
|
|
|
406
448
|
request: Message,
|
|
407
449
|
timeoutMs: number | undefined,
|
|
408
450
|
signal?: AbortSignal,
|
|
409
|
-
onAdmitted?: () => void
|
|
451
|
+
onAdmitted?: () => void,
|
|
452
|
+
requestOperation?: PendingOperation<unknown>
|
|
410
453
|
): Promise<readonly Message[]> {
|
|
411
454
|
return this.spotRoutes.routeRequestRawToSpot(
|
|
412
455
|
spotRouteTarget,
|
|
413
456
|
request,
|
|
414
457
|
timeoutMs,
|
|
415
458
|
signal,
|
|
416
|
-
onAdmitted
|
|
459
|
+
onAdmitted,
|
|
460
|
+
requestOperation
|
|
417
461
|
);
|
|
418
462
|
}
|
|
419
463
|
|
|
@@ -426,6 +470,7 @@ export class ZLinkChannelRuntimeManager {
|
|
|
426
470
|
}
|
|
427
471
|
|
|
428
472
|
async dispose(signal?: AbortSignal): Promise<void> {
|
|
473
|
+
this.requests.close();
|
|
429
474
|
await this.lifecycle.dispose(signal);
|
|
430
475
|
}
|
|
431
476
|
}
|
|
@@ -441,6 +486,7 @@ function splitMonitoringSocketSourceName(sourceName: string): readonly [string,
|
|
|
441
486
|
}
|
|
442
487
|
|
|
443
488
|
export interface ZLinkChannelRuntimeManagerOptions {
|
|
489
|
+
readonly requests?: RequestRuntime;
|
|
444
490
|
readonly listenerRecords?: ZLinkListenerRecords;
|
|
445
491
|
readonly internalRouteSendHandlers?: ReadonlyMap<string, ZLinkRouteRuntimeSendHandler>;
|
|
446
492
|
readonly internalRouteRequestHandlers?: ReadonlyMap<string, ZLinkRouteRuntimeRequestHandler>;
|
|
@@ -460,6 +506,7 @@ export interface ZLinkChannelRuntimeManagerOptions {
|
|
|
460
506
|
): Promise<TReply>;
|
|
461
507
|
};
|
|
462
508
|
readonly messageFlowModeCell?: ZLinkMessageFlowModeCell;
|
|
509
|
+
readonly telemetryLease?: ZLinkTelemetryLease;
|
|
463
510
|
readonly oneWayFailureSink?: (error: unknown) => void;
|
|
464
511
|
readonly applicationJobQueue?: ApplicationJobQueue;
|
|
465
512
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { inspectRuntime } from '../internal-observation';
|
|
1
2
|
import { RuntimeDisposal } from '../disposal';
|
|
2
3
|
import { UINT64_MAX } from '@zlink-systems/stream-wire';
|
|
3
4
|
import { randomBytes, randomUUID } from 'node:crypto';
|
|
@@ -16,7 +17,10 @@ import {
|
|
|
16
17
|
ZLINK_MAX_PUBLIC_WEIGHT
|
|
17
18
|
} from '../../contracts/Configuration/RegistrationBuilderPolicy';
|
|
18
19
|
import type { ZLinkChannelOptions } from '../../contracts/Configuration/RegistrationTypes';
|
|
19
|
-
import {
|
|
20
|
+
import {
|
|
21
|
+
attachEndpointConnections,
|
|
22
|
+
endpointConnections
|
|
23
|
+
} from '../../contracts/Configuration/RuntimeEndpointConnections';
|
|
20
24
|
import { createAbortError, throwIfAborted } from '../abort';
|
|
21
25
|
import type {
|
|
22
26
|
ZLinkBackendContext,
|
|
@@ -132,6 +136,14 @@ interface FanoutPublisherConnection {
|
|
|
132
136
|
}
|
|
133
137
|
|
|
134
138
|
export class ZLinkChannelSocketRegistry {
|
|
139
|
+
[inspectRuntime]() {
|
|
140
|
+
return Object.freeze({
|
|
141
|
+
clientServerConnections: this.clientServerConnections.size,
|
|
142
|
+
fanoutConnections: this.fanoutConnections.size,
|
|
143
|
+
clientServerObservers: this.clientServerDiscovery[inspectRuntime]().clientServerObservers
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
|
|
135
147
|
private readonly clientDealers = new Map<string, ZLinkBackendDealerSocket>();
|
|
136
148
|
private readonly channelRouters = new Map<string, ZLinkBackendRouterSocket>();
|
|
137
149
|
private readonly publishers = new Map<string, ZLinkBackendPublisherSocket>();
|
|
@@ -144,7 +156,7 @@ export class ZLinkChannelSocketRegistry {
|
|
|
144
156
|
readonly lifecycleGeneration: bigint;
|
|
145
157
|
}
|
|
146
158
|
>();
|
|
147
|
-
|
|
159
|
+
readonly clientServerConnections = new Map<string, ClientServerPhysicalConnection>();
|
|
148
160
|
private readonly clientServerDiscovery = new ServiceDiscoveryRegistry();
|
|
149
161
|
private readonly clientServerReadyIdentities = new Map<
|
|
150
162
|
string,
|
|
@@ -1443,7 +1455,7 @@ export class ZLinkChannelSocketRegistry {
|
|
|
1443
1455
|
}
|
|
1444
1456
|
}
|
|
1445
1457
|
|
|
1446
|
-
|
|
1458
|
+
applyClientServerDescriptorUpdate(
|
|
1447
1459
|
connectionId: string,
|
|
1448
1460
|
connection: { readonly channelName: string; readonly physicalConnectionId: symbol },
|
|
1449
1461
|
admission: ZLinkClientServerAdmission
|
|
@@ -1506,7 +1518,7 @@ export class ZLinkChannelSocketRegistry {
|
|
|
1506
1518
|
this.clientServerLivenessTimer.unref();
|
|
1507
1519
|
}
|
|
1508
1520
|
|
|
1509
|
-
|
|
1521
|
+
drainSocketMonitors(): void {
|
|
1510
1522
|
for (const monitor of this.ownedResources) if ('drain' in monitor) monitor.drain();
|
|
1511
1523
|
}
|
|
1512
1524
|
|
|
@@ -1714,7 +1726,10 @@ export class ZLinkChannelSocketRegistry {
|
|
|
1714
1726
|
applySocketConfig(router, routeChannel);
|
|
1715
1727
|
this.trackRouteMonitor(routerChannelId, router);
|
|
1716
1728
|
if ((routeChannel.manualConnections ?? []).length > 0) {
|
|
1717
|
-
for (const endpoint of
|
|
1729
|
+
for (const endpoint of endpointConnections(
|
|
1730
|
+
routeChannel,
|
|
1731
|
+
routeChannel.manualConnections ?? []
|
|
1732
|
+
).listConnections()) {
|
|
1718
1733
|
router.connect(endpoint);
|
|
1719
1734
|
}
|
|
1720
1735
|
}
|