@zlink-systems/framework 0.30.0 → 0.30.2
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/LICENSE +150 -68
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Actors/ZLinkActorClient.d.ts +2 -1
- package/dist/contracts/Channels/Calls.d.ts +2 -1
- package/dist/contracts/Common/ZLinkEncodedPayload.d.ts +6 -0
- package/dist/contracts/Common/ZLinkEncodedPayload.js +18 -3
- package/dist/contracts/Common/ZLinkMessageMetadata.js +11 -5
- package/dist/contracts/Common/encoded-payload-storage.d.ts +1 -1
- package/dist/contracts/Common/encoded-payload-storage.js +5 -2
- package/dist/contracts/Configuration/Builders.d.ts +1 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +2 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +5 -1
- package/dist/contracts/Configuration/RegistrationBuilders.js +2 -2
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +2 -2
- package/dist/contracts/Handlers/Attributes.d.ts +5 -13
- package/dist/contracts/Handlers/Attributes.js +7 -11
- package/dist/contracts/Handlers/JsonContract.d.ts +2 -46
- package/dist/contracts/Handlers/JsonContract.js +4 -153
- package/dist/contracts/Locations/Rows.d.ts +2 -0
- package/dist/contracts/Spots/Contracts.d.ts +6 -1
- package/dist/contracts/Spots/ZLinkSpot.d.ts +3 -3
- package/dist/nest-integration.d.ts +1 -1
- package/dist/nest-integration.js +2 -1
- package/dist/runtime/abort.d.ts +5 -0
- package/dist/runtime/abort.js +10 -0
- package/dist/runtime/actors/actor-authority-publication.js +3 -2
- package/dist/runtime/actors/actor-client.d.ts +1 -2
- package/dist/runtime/actors/actor-client.js +52 -57
- package/dist/runtime/actors/actor-context.d.ts +2 -0
- package/dist/runtime/actors/actor-context.js +46 -9
- package/dist/runtime/actors/actor-handoff.d.ts +8 -4
- package/dist/runtime/actors/actor-handoff.js +219 -92
- package/dist/runtime/actors/actor-join-relocation.d.ts +3 -0
- package/dist/runtime/actors/actor-local-native-join.js +13 -12
- package/dist/runtime/actors/actor-mailbox.js +27 -1
- package/dist/runtime/actors/actor-remote-joiner.js +3 -1
- package/dist/runtime/actors/actor-remote-wire.js +15 -0
- package/dist/runtime/actors/actor-reply.d.ts +4 -0
- package/dist/runtime/actors/actor-reply.js +29 -0
- package/dist/runtime/actors/actor-routed-join-transport.d.ts +6 -2
- package/dist/runtime/actors/actor-routed-json-request.d.ts +2 -0
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +2 -0
- package/dist/runtime/actors/actor-runtime-state.js +2 -20
- package/dist/runtime/actors/actor-source-transfer.d.ts +1 -17
- package/dist/runtime/actors/index.d.ts +8 -3
- package/dist/runtime/actors/index.js +55 -27
- package/dist/runtime/actors/session-disconnected-wire.d.ts +8 -0
- package/dist/runtime/actors/session-disconnected-wire.js +48 -0
- package/dist/runtime/actors/spot-actor-dispatch.js +2 -2
- package/dist/runtime/admission.d.ts +9 -1
- package/dist/runtime/admission.js +56 -23
- package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +6 -8
- package/dist/runtime/application-jobs/application-ingress-record-owner.js +39 -22
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +15 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +61 -20
- package/dist/runtime/application-jobs/contracts.d.ts +12 -1
- package/dist/runtime/backend/contracts/index.d.ts +37 -12
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +2 -2
- package/dist/runtime/backend/mesh-completion-table.d.ts +9 -1
- package/dist/runtime/backend/mesh-completion-table.js +154 -49
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +28 -1
- package/dist/runtime/backend/mesh-dispatch-pump.js +208 -101
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +2 -2
- package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -9
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +5 -2
- package/dist/runtime/backend/node/node-raw-binding-port.js +124 -72
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +46 -13
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +181 -164
- package/dist/runtime/backend/node/node-socket-backend-adapter.d.ts +1 -1
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +11 -11
- package/dist/runtime/backend/raw-binding-port.d.ts +2 -2
- package/dist/runtime/backend/runtime-message.d.ts +1 -0
- package/dist/runtime/backend/runtime-message.js +5 -0
- package/dist/runtime/backend/runtime-values.d.ts +1 -0
- package/dist/runtime/backend/runtime-values.js +2 -1
- package/dist/runtime/channels/channel-clients.d.ts +2 -0
- package/dist/runtime/channels/channel-clients.js +75 -23
- package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +25 -5
- package/dist/runtime/channels/channel-dispatch-pipeline.js +111 -56
- package/dist/runtime/channels/channel-dispatch-services.d.ts +1 -0
- package/dist/runtime/channels/channel-dispatch-services.js +45 -0
- package/dist/runtime/channels/channel-dispatchers.d.ts +4 -3
- package/dist/runtime/channels/channel-dispatchers.js +62 -54
- package/dist/runtime/channels/channel-envelope-inspection.d.ts +1 -2
- package/dist/runtime/channels/channel-envelope-inspection.js +1 -16
- package/dist/runtime/channels/channel-envelope.d.ts +2 -0
- package/dist/runtime/channels/channel-envelope.js +146 -28
- package/dist/runtime/channels/channel-outbound-operations.d.ts +2 -2
- package/dist/runtime/channels/channel-outbound-operations.js +8 -8
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +4 -3
- package/dist/runtime/channels/channel-runtime-lifecycle.js +19 -24
- package/dist/runtime/channels/channel-runtime-manager.d.ts +9 -8
- package/dist/runtime/channels/channel-runtime-manager.js +16 -16
- package/dist/runtime/channels/channel-transports.d.ts +18 -16
- package/dist/runtime/channels/channel-transports.js +77 -58
- package/dist/runtime/channels/client-server-location-runtime.js +5 -4
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +2 -1
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/fanout-location-runtime.js +3 -3
- package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/local-spot-route-transport.js +2 -1
- package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +2 -2
- package/dist/runtime/channels/router-socket-spot-route-transport.js +4 -4
- package/dist/runtime/channels/source-spot-router.d.ts +2 -2
- package/dist/runtime/channels/source-spot-router.js +4 -4
- package/dist/runtime/channels/spot-node-route-transport.d.ts +2 -2
- package/dist/runtime/channels/spot-node-route-transport.js +4 -4
- package/dist/runtime/channels/spot-route-bridge-transport.d.ts +2 -2
- package/dist/runtime/channels/spot-route-bridge-transport.js +4 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +5 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +18 -18
- package/dist/runtime/diagnostics/flow-context.js +19 -7
- package/dist/runtime/diagnostics/index.js +4 -9
- package/dist/runtime/diagnostics/message-flow.d.ts +8 -0
- package/dist/runtime/diagnostics/message-flow.js +35 -5
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +2 -2
- package/dist/runtime/diagnostics/runtime-metrics.js +10 -8
- package/dist/runtime/execution/index.d.ts +4 -2
- package/dist/runtime/execution/index.js +33 -10
- package/dist/runtime/execution/serial-execution-queue.d.ts +5 -0
- package/dist/runtime/execution/serial-execution-queue.js +22 -2
- package/dist/runtime/execution/state-lane.d.ts +2 -0
- package/dist/runtime/execution/state-lane.js +5 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +2 -2
- package/dist/runtime/foundation/durable-service-request.d.ts +14 -0
- package/dist/runtime/foundation/durable-service-request.js +98 -0
- package/dist/runtime/foundation/operation-identity.d.ts +1 -0
- package/dist/runtime/foundation/operation-identity.js +5 -1
- package/dist/runtime/foundation/operation-registry.d.ts +25 -1
- package/dist/runtime/foundation/operation-registry.js +86 -18
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +61 -8
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +486 -266
- package/dist/runtime/foundation/service-liveness-registry.d.ts +12 -1
- package/dist/runtime/foundation/service-liveness-registry.js +38 -0
- package/dist/runtime/foundation/service-mailbox.d.ts +7 -0
- package/dist/runtime/foundation/service-maintenance-runtime.js +1 -6
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +3 -3
- package/dist/runtime/foundation/service-relocation-object-owner.js +48 -34
- package/dist/runtime/foundation/service-relocation-runtime.d.ts +2 -0
- package/dist/runtime/foundation/service-relocation-runtime.js +20 -4
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +10 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +2 -1
- package/dist/runtime/foundation/service-stateful-registry.d.ts +5 -4
- package/dist/runtime/foundation/service-stateful-registry.js +24 -26
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +75 -9
- package/dist/runtime/foundation/service-stateful-runtime.js +486 -218
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +14 -6
- package/dist/runtime/foundation/service-stateful-wire-codec.js +48 -27
- package/dist/runtime/foundation/service-topology-registry.d.ts +12 -2
- package/dist/runtime/foundation/service-topology-registry.js +61 -27
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +6 -1
- package/dist/runtime/foundation/service-wire-binary-primitives.js +27 -11
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +1 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +13 -3
- package/dist/runtime/foundation/service-wire-m6a-codec.js +189 -78
- package/dist/runtime/handlers/handler-instance-scope.d.ts +8 -0
- package/dist/runtime/handlers/handler-instance-scope.js +54 -11
- package/dist/runtime/host/actor-packet-relay.d.ts +6 -4
- package/dist/runtime/host/actor-packet-relay.js +59 -72
- package/dist/runtime/host/actor-placement-coordinator.js +25 -8
- package/dist/runtime/host/actor-runtime-options-factory.js +2 -2
- package/dist/runtime/host/actor-transfer-runtime.d.ts +7 -31
- package/dist/runtime/host/actor-transfer-runtime.js +85 -331
- package/dist/runtime/host/application-job-queue.d.ts +40 -7
- package/dist/runtime/host/application-job-queue.js +137 -42
- package/dist/runtime/host/entry-actor-runtime.d.ts +1 -0
- package/dist/runtime/host/entry-actor-runtime.js +3 -0
- package/dist/runtime/host/index.d.ts +12 -2
- package/dist/runtime/host/index.js +300 -202
- package/dist/runtime/host/location-runtime-owner.js +2 -6
- package/dist/runtime/host/mesh-router-resolver.d.ts +4 -0
- package/dist/runtime/host/mesh-router-resolver.js +14 -6
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -4
- package/dist/runtime/host/remote-bound-session-relay.js +73 -208
- package/dist/runtime/host/route-mesh-runtime.d.ts +2 -2
- package/dist/runtime/host/route-mesh-runtime.js +6 -4
- package/dist/runtime/host/runtime-shutdown.d.ts +1 -0
- package/dist/runtime/host/runtime-shutdown.js +3 -2
- package/dist/runtime/host/service-relocation-control.d.ts +1 -0
- package/dist/runtime/host/service-relocation-control.js +10 -4
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +22 -14
- package/dist/runtime/host/service-relocation-host-runtime.js +754 -599
- package/dist/runtime/host/spot-address-transport.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.js +16 -7
- package/dist/runtime/host/user-spot-creation-coordinator.js +33 -84
- package/dist/runtime/locations/actor-location-claims.d.ts +2 -2
- package/dist/runtime/locations/actor-location-claims.js +34 -19
- package/dist/runtime/locations/auto-connect-loop.d.ts +2 -0
- package/dist/runtime/locations/auto-connect-loop.js +22 -14
- package/dist/runtime/locations/auto-connect-reconciler.js +0 -6
- package/dist/runtime/locations/auto-connect-types.d.ts +0 -1
- package/dist/runtime/locations/descriptor-publication.d.ts +4 -0
- package/dist/runtime/locations/descriptor-publication.js +11 -0
- package/dist/runtime/locations/domain-store-contract.d.ts +1 -0
- package/dist/runtime/locations/in-memory-authority-store.d.ts +7 -1
- package/dist/runtime/locations/in-memory-authority-store.js +56 -19
- package/dist/runtime/locations/in-memory-location-store.js +1 -10
- package/dist/runtime/locations/index.d.ts +1 -0
- package/dist/runtime/locations/index.js +1 -0
- package/dist/runtime/locations/lease-tracker.js +1 -6
- package/dist/runtime/locations/lifecycle.d.ts +1 -2
- package/dist/runtime/locations/lifecycle.js +2 -5
- package/dist/runtime/locations/location-store-repository.d.ts +51 -1
- package/dist/runtime/locations/location-store-repository.js +363 -139
- package/dist/runtime/locations/relocation-blob.d.ts +18 -1
- package/dist/runtime/locations/relocation-blob.js +52 -1
- package/dist/runtime/locations/request-source-resolver.d.ts +37 -0
- package/dist/runtime/locations/request-source-resolver.js +80 -0
- package/dist/runtime/locations/resolvers.js +1 -1
- package/dist/runtime/locations/runtime.d.ts +7 -3
- package/dist/runtime/locations/runtime.js +61 -53
- package/dist/runtime/messaging/framework-json-v1.d.ts +4 -6
- package/dist/runtime/messaging/framework-json-v1.js +38 -294
- package/dist/runtime/messaging/packet-name.d.ts +1 -1
- package/dist/runtime/messaging/packet-name.js +8 -24
- package/dist/runtime/messaging/payload-codec.d.ts +7 -1
- package/dist/runtime/messaging/payload-codec.js +7 -6
- package/dist/runtime/messaging/request-result.d.ts +2 -0
- package/dist/runtime/messaging/request-result.js +57 -0
- package/dist/runtime/messaging/submission-result.d.ts +1 -0
- package/dist/runtime/messaging/submission-result.js +5 -2
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +34 -1
- package/dist/runtime/protocol/service_wire_codec.generated.js +229 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +16 -1
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +37 -8
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +7 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +36 -21
- package/dist/runtime/spots/index.d.ts +21 -11
- package/dist/runtime/spots/index.js +243 -178
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -2
- package/dist/runtime/spots/spot-activation-registry.js +21 -11
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +7 -7
- package/dist/runtime/spots/spot-activation.d.ts +7 -3
- package/dist/runtime/spots/spot-activation.js +140 -52
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -0
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +13 -22
- package/dist/runtime/spots/spot-actor-membership.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-membership.js +0 -8
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +33 -8
- package/dist/runtime/spots/spot-actor-packet-drain.js +5 -33
- package/dist/runtime/spots/spot-entry-activation.d.ts +2 -0
- package/dist/runtime/spots/spot-entry-activation.js +20 -11
- package/dist/runtime/spots/spot-handler-registry.d.ts +7 -4
- package/dist/runtime/spots/spot-handler-registry.js +24 -10
- package/dist/runtime/spots/spot-manager-internal-contracts.d.ts +2 -2
- package/dist/runtime/spots/spot-manager-public.js +2 -2
- package/dist/runtime/spots/spot-node-autoconnect.d.ts +2 -1
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -42
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -2
- package/dist/runtime/spots/spot-node-runtime-manager.js +115 -50
- package/dist/runtime/spots/spot-outbound.d.ts +3 -0
- package/dist/runtime/spots/spot-outbound.js +27 -18
- package/dist/runtime/spots/spot-remote-codec.js +5 -1
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +1 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +1 -1
- package/dist/runtime/spots/spot-runtime-ports.d.ts +1 -1
- package/dist/runtime/spots/spot-serial-executor.d.ts +10 -0
- package/dist/runtime/spots/spot-serial-executor.js +61 -8
- package/dist/runtime/spots/spot-serial-turn-executor.js +19 -2
- package/dist/runtime/spots/spot-subscription-dispatch.js +1 -4
- package/dist/runtime/spots/spot-timer.d.ts +57 -5
- package/dist/runtime/spots/spot-timer.js +288 -103
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +42 -11
- package/dist/runtime/streams/actor-session-binding-registry.js +165 -48
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +8 -4
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +2 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +15 -8
- package/dist/runtime/streams/bound-session-service.d.ts +1 -1
- package/dist/runtime/streams/bound-session-service.js +6 -11
- package/dist/runtime/streams/index.d.ts +3 -2
- package/dist/runtime/streams/index.js +6 -4
- package/dist/runtime/streams/managed-stream.js +3 -2
- package/dist/runtime/streams/native-fallback-bound-session.js +8 -73
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -8
- package/dist/runtime/streams/session-actor-coordinator.js +15 -32
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +3 -10
- package/dist/runtime/streams/stream-session-runtime.d.ts +1 -1
- package/dist/runtime/streams/stream-session-runtime.js +14 -31
- package/dist/runtime/workers/index.js +1 -1
- package/package.json +3 -3
- package/src/contracts/Actors/ZLinkActorClient.ts +2 -1
- package/src/contracts/Channels/Calls.ts +2 -1
- package/src/contracts/Common/ZLinkEncodedPayload.ts +24 -4
- package/src/contracts/Common/ZLinkMessageMetadata.ts +13 -8
- package/src/contracts/Common/encoded-payload-storage.ts +6 -3
- package/src/contracts/Configuration/Builders.ts +4 -1
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +7 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +6 -2
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -1
- package/src/contracts/Handlers/Attributes.ts +14 -21
- package/src/contracts/Handlers/JsonContract.ts +8 -216
- package/src/contracts/Locations/Rows.ts +2 -0
- package/src/contracts/Spots/Contracts.ts +10 -1
- package/src/contracts/Spots/ZLinkSpot.ts +3 -3
- package/src/nest-integration.ts +1 -0
- package/src/runtime/abort.ts +12 -0
- package/src/runtime/actors/actor-authority-publication.ts +3 -2
- package/src/runtime/actors/actor-client.ts +100 -85
- package/src/runtime/actors/actor-context.ts +49 -9
- package/src/runtime/actors/actor-handoff.ts +291 -110
- package/src/runtime/actors/actor-join-relocation.ts +3 -0
- package/src/runtime/actors/actor-local-native-join.ts +21 -26
- package/src/runtime/actors/actor-mailbox.ts +40 -2
- package/src/runtime/actors/actor-remote-joiner.ts +6 -1
- package/src/runtime/actors/actor-remote-wire.ts +17 -0
- package/src/runtime/actors/actor-reply.ts +42 -0
- package/src/runtime/actors/actor-routed-join-transport.ts +14 -4
- package/src/runtime/actors/actor-routed-json-request.ts +10 -2
- package/src/runtime/actors/actor-runtime-contracts.ts +2 -0
- package/src/runtime/actors/actor-runtime-state.ts +2 -20
- package/src/runtime/actors/actor-source-transfer.ts +1 -34
- package/src/runtime/actors/index.ts +60 -32
- package/src/runtime/actors/session-disconnected-wire.ts +66 -0
- package/src/runtime/actors/spot-actor-dispatch.ts +4 -2
- package/src/runtime/admission.ts +69 -21
- package/src/runtime/application-jobs/application-ingress-record-owner.ts +41 -25
- package/src/runtime/application-jobs/application-job-queue-scope.ts +83 -22
- package/src/runtime/application-jobs/contracts.ts +16 -1
- package/src/runtime/backend/contracts/index.ts +92 -18
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +5 -3
- package/src/runtime/backend/mesh-completion-table.ts +160 -57
- package/src/runtime/backend/mesh-dispatch-pump.ts +237 -108
- package/src/runtime/backend/node/node-backend-adapter-support.ts +17 -8
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +12 -2
- package/src/runtime/backend/node/node-raw-binding-port.ts +148 -85
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +315 -201
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +26 -11
- package/src/runtime/backend/raw-binding-port.ts +7 -2
- package/src/runtime/backend/runtime-message.ts +6 -0
- package/src/runtime/backend/runtime-values.ts +1 -0
- package/src/runtime/channels/channel-clients.ts +132 -58
- package/src/runtime/channels/channel-dispatch-pipeline.ts +198 -114
- package/src/runtime/channels/channel-dispatch-services.ts +69 -1
- package/src/runtime/channels/channel-dispatchers.ts +136 -90
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -16
- package/src/runtime/channels/channel-envelope.ts +225 -31
- package/src/runtime/channels/channel-outbound-operations.ts +22 -8
- package/src/runtime/channels/channel-runtime-lifecycle.ts +13 -13
- package/src/runtime/channels/channel-runtime-manager.ts +41 -17
- package/src/runtime/channels/channel-transports.ts +171 -112
- package/src/runtime/channels/client-server-location-runtime.ts +11 -10
- package/src/runtime/channels/dispatch-error-reporter.ts +4 -2
- package/src/runtime/channels/fanout-location-runtime.ts +17 -9
- package/src/runtime/channels/local-spot-route-transport.ts +3 -1
- package/src/runtime/channels/router-socket-spot-route-transport.ts +13 -4
- package/src/runtime/channels/source-spot-router.ts +8 -4
- package/src/runtime/channels/spot-node-route-transport.ts +8 -4
- package/src/runtime/channels/spot-route-bridge-transport.ts +6 -4
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +47 -18
- package/src/runtime/diagnostics/flow-context.ts +20 -7
- package/src/runtime/diagnostics/index.ts +1 -7
- package/src/runtime/diagnostics/message-flow.ts +47 -9
- package/src/runtime/diagnostics/runtime-metrics.ts +12 -10
- package/src/runtime/execution/index.ts +40 -14
- package/src/runtime/execution/serial-execution-queue.ts +33 -4
- package/src/runtime/execution/state-lane.ts +7 -0
- package/src/runtime/foundation/actor-join-recovery-codec.ts +2 -2
- package/src/runtime/foundation/durable-service-request.ts +137 -0
- package/src/runtime/foundation/operation-identity.ts +5 -1
- package/src/runtime/foundation/operation-registry.ts +98 -20
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +704 -336
- package/src/runtime/foundation/service-liveness-registry.ts +39 -0
- package/src/runtime/foundation/service-mailbox.ts +8 -0
- package/src/runtime/foundation/service-maintenance-runtime.ts +1 -8
- package/src/runtime/foundation/service-relocation-object-owner.ts +55 -36
- package/src/runtime/foundation/service-relocation-runtime.ts +25 -4
- package/src/runtime/foundation/service-runtime-contracts.ts +19 -2
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -1
- package/src/runtime/foundation/service-stateful-registry.ts +38 -35
- package/src/runtime/foundation/service-stateful-runtime.ts +732 -275
- package/src/runtime/foundation/service-stateful-wire-codec.ts +49 -16
- package/src/runtime/foundation/service-topology-registry.ts +91 -36
- package/src/runtime/foundation/service-wire-binary-primitives.ts +35 -12
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +231 -76
- package/src/runtime/handlers/handler-instance-scope.ts +67 -16
- package/src/runtime/host/actor-packet-relay.ts +113 -94
- package/src/runtime/host/actor-placement-coordinator.ts +31 -8
- package/src/runtime/host/actor-runtime-options-factory.ts +13 -2
- package/src/runtime/host/actor-transfer-runtime.ts +104 -430
- package/src/runtime/host/application-job-queue.ts +160 -41
- package/src/runtime/host/entry-actor-runtime.ts +4 -0
- package/src/runtime/host/index.ts +473 -271
- package/src/runtime/host/location-runtime-owner.ts +2 -6
- package/src/runtime/host/mesh-router-resolver.ts +13 -5
- package/src/runtime/host/remote-bound-session-relay.ts +88 -271
- package/src/runtime/host/route-mesh-runtime.ts +12 -6
- package/src/runtime/host/runtime-shutdown.ts +15 -4
- package/src/runtime/host/service-relocation-control.ts +11 -5
- package/src/runtime/host/service-relocation-host-runtime.ts +1092 -759
- package/src/runtime/host/spot-address-transport.ts +4 -2
- package/src/runtime/host/spot-runtime-options-factory.ts +20 -7
- package/src/runtime/host/user-spot-creation-coordinator.ts +41 -100
- package/src/runtime/locations/actor-location-claims.ts +52 -30
- package/src/runtime/locations/auto-connect-loop.ts +22 -14
- package/src/runtime/locations/auto-connect-reconciler.ts +0 -6
- package/src/runtime/locations/auto-connect-types.ts +0 -1
- package/src/runtime/locations/descriptor-publication.ts +7 -0
- package/src/runtime/locations/domain-store-contract.ts +5 -0
- package/src/runtime/locations/in-memory-authority-store.ts +85 -23
- package/src/runtime/locations/in-memory-location-store.ts +1 -12
- package/src/runtime/locations/index.ts +1 -0
- package/src/runtime/locations/lease-tracker.ts +2 -9
- package/src/runtime/locations/lifecycle.ts +8 -26
- package/src/runtime/locations/location-store-repository.ts +628 -152
- package/src/runtime/locations/relocation-blob.ts +75 -1
- package/src/runtime/locations/request-source-resolver.ts +138 -0
- package/src/runtime/locations/resolvers.ts +2 -2
- package/src/runtime/locations/runtime.ts +98 -64
- package/src/runtime/messaging/framework-json-v1.ts +5 -325
- package/src/runtime/messaging/packet-name.ts +5 -25
- package/src/runtime/messaging/payload-codec.ts +8 -11
- package/src/runtime/messaging/request-result.ts +62 -0
- package/src/runtime/messaging/submission-result.ts +5 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +218 -5
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +16 -13
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +46 -25
- package/src/runtime/spots/index.ts +389 -283
- package/src/runtime/spots/spot-activation-registry.ts +25 -13
- package/src/runtime/spots/spot-activation-state.ts +12 -19
- package/src/runtime/spots/spot-activation.ts +198 -96
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +25 -55
- package/src/runtime/spots/spot-actor-membership.ts +0 -15
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +56 -11
- package/src/runtime/spots/spot-actor-packet-drain.ts +9 -52
- package/src/runtime/spots/spot-entry-activation.ts +33 -21
- package/src/runtime/spots/spot-handler-registry.ts +56 -12
- package/src/runtime/spots/spot-manager-internal-contracts.ts +2 -2
- package/src/runtime/spots/spot-manager-public.ts +2 -2
- package/src/runtime/spots/spot-node-autoconnect.ts +28 -47
- package/src/runtime/spots/spot-node-runtime-manager.ts +197 -67
- package/src/runtime/spots/spot-outbound.ts +39 -19
- package/src/runtime/spots/spot-remote-codec.ts +9 -2
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +2 -1
- package/src/runtime/spots/spot-runtime-ports.ts +1 -1
- package/src/runtime/spots/spot-serial-executor.ts +97 -25
- package/src/runtime/spots/spot-serial-turn-executor.ts +22 -3
- package/src/runtime/spots/spot-subscription-dispatch.ts +1 -4
- package/src/runtime/spots/spot-timer.ts +418 -158
- package/src/runtime/streams/actor-session-binding-registry.ts +236 -64
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +16 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +23 -9
- package/src/runtime/streams/bound-session-service.ts +7 -10
- package/src/runtime/streams/index.ts +12 -6
- package/src/runtime/streams/managed-stream.ts +4 -2
- package/src/runtime/streams/native-fallback-bound-session.ts +14 -103
- package/src/runtime/streams/session-actor-coordinator.ts +39 -88
- package/src/runtime/streams/stream-binding-runtime-ports.ts +3 -9
- package/src/runtime/streams/stream-session-runtime.ts +13 -34
- package/src/runtime/workers/index.ts +1 -1
|
@@ -48,6 +48,13 @@ class ZLinkChannelDispatchServices {
|
|
|
48
48
|
return this.handlerFiltersValue;
|
|
49
49
|
}
|
|
50
50
|
channelRequestHandler(handlerType) {
|
|
51
|
+
const activate = this.registration.filterTypes.length === 0
|
|
52
|
+
? (0, handler_instance_scope_1.prepareHandlerInstance)(this.providerResolver, handlerType)
|
|
53
|
+
: undefined;
|
|
54
|
+
if (activate !== undefined)
|
|
55
|
+
return {
|
|
56
|
+
handle: (payload, context) => this.invokeScopeFreeHandler(activate, payload, context)
|
|
57
|
+
};
|
|
51
58
|
return {
|
|
52
59
|
handle: (payload, context) => this.withHandlerScope(context, async (scope) => {
|
|
53
60
|
const handler = await scope.resolve(handlerType);
|
|
@@ -56,6 +63,13 @@ class ZLinkChannelDispatchServices {
|
|
|
56
63
|
};
|
|
57
64
|
}
|
|
58
65
|
channelSendHandler(handlerType) {
|
|
66
|
+
const activate = this.registration.filterTypes.length === 0
|
|
67
|
+
? (0, handler_instance_scope_1.prepareHandlerInstance)(this.providerResolver, handlerType)
|
|
68
|
+
: undefined;
|
|
69
|
+
if (activate !== undefined)
|
|
70
|
+
return {
|
|
71
|
+
handle: (payload, context) => this.invokeScopeFreeHandler(activate, payload, context)
|
|
72
|
+
};
|
|
59
73
|
return {
|
|
60
74
|
handle: (payload, context) => this.withHandlerScope(context, async (scope) => {
|
|
61
75
|
const handler = await scope.resolve(handlerType);
|
|
@@ -64,6 +78,13 @@ class ZLinkChannelDispatchServices {
|
|
|
64
78
|
};
|
|
65
79
|
}
|
|
66
80
|
routeRequestHandler(handlerType) {
|
|
81
|
+
const activate = this.registration.filterTypes.length === 0
|
|
82
|
+
? (0, handler_instance_scope_1.prepareHandlerInstance)(this.providerResolver, handlerType)
|
|
83
|
+
: undefined;
|
|
84
|
+
if (activate !== undefined)
|
|
85
|
+
return {
|
|
86
|
+
handle: (payload, context) => this.invokeScopeFreeHandler(activate, payload, context)
|
|
87
|
+
};
|
|
67
88
|
return {
|
|
68
89
|
handle: (payload, context) => this.withHandlerScope(context, async (scope) => {
|
|
69
90
|
const handler = await scope.resolve(handlerType);
|
|
@@ -72,6 +93,13 @@ class ZLinkChannelDispatchServices {
|
|
|
72
93
|
};
|
|
73
94
|
}
|
|
74
95
|
routeSendHandler(handlerType) {
|
|
96
|
+
const activate = this.registration.filterTypes.length === 0
|
|
97
|
+
? (0, handler_instance_scope_1.prepareHandlerInstance)(this.providerResolver, handlerType)
|
|
98
|
+
: undefined;
|
|
99
|
+
if (activate !== undefined)
|
|
100
|
+
return {
|
|
101
|
+
handle: (payload, context) => this.invokeScopeFreeHandler(activate, payload, context)
|
|
102
|
+
};
|
|
75
103
|
return {
|
|
76
104
|
handle: (payload, context) => this.withHandlerScope(context, async (scope) => {
|
|
77
105
|
const handler = await scope.resolve(handlerType);
|
|
@@ -79,6 +107,23 @@ class ZLinkChannelDispatchServices {
|
|
|
79
107
|
})
|
|
80
108
|
};
|
|
81
109
|
}
|
|
110
|
+
invokeScopeFreeHandler(activate, payload, context) {
|
|
111
|
+
const handler = activate();
|
|
112
|
+
const cleanup = (0, handler_instance_scope_1.handlerInstanceCleanup)(handler);
|
|
113
|
+
if (cleanup === undefined)
|
|
114
|
+
return handler.handle(payload, context);
|
|
115
|
+
let result;
|
|
116
|
+
try {
|
|
117
|
+
result = handler.handle(payload, context);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
const disposed = cleanup.call(handler);
|
|
121
|
+
return Promise.resolve(disposed).then(() => {
|
|
122
|
+
throw error;
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return Promise.resolve(result).finally(() => cleanup.call(handler));
|
|
126
|
+
}
|
|
82
127
|
async invokeHandlerFilters(context, next, signal) {
|
|
83
128
|
const scoped = (0, handler_filter_scope_1.handlerFilterScope)(this.providerResolver);
|
|
84
129
|
if (scoped !== undefined) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import type { ZLinkMeshDispatchAdmission } from '../admission';
|
|
1
2
|
import type { RoutingId, ZLinkMessageContext, ZLinkHandlerFilter, ZLinkPublishMessageContext, ZLinkRouteMessageContext, ZLinkUnhandledDispatchOptions } from '../../contracts';
|
|
2
3
|
import type { Message } from '../../contracts/Common/Message';
|
|
3
|
-
import type
|
|
4
|
+
import { type ReceiveRecord } from '../foundation/service-runtime-contracts';
|
|
4
5
|
import { type ZLinkRouteChannelOptions } from '../configuration';
|
|
5
6
|
import type { ZLinkBackendSpotRouteBridge } from '../backend/contracts';
|
|
6
7
|
import type { ZLinkRuntimeMetrics } from '../diagnostics';
|
|
@@ -54,7 +55,7 @@ export declare class ZLinkChannelRequestDispatcher {
|
|
|
54
55
|
}, router: {
|
|
55
56
|
reply(routingId: unknown, replyToken: unknown): ZLinkMultipartReplyOperation;
|
|
56
57
|
}, signal?: AbortSignal, decodedHeader?: ZLinkChannelEnvelopeHeader): Promise<boolean | void>;
|
|
57
|
-
dispatchMesh(record: ReceiveRecord, signal?: AbortSignal): Promise<void>;
|
|
58
|
+
dispatchMesh(record: ReceiveRecord, signal?: AbortSignal, admit?: ZLinkMeshDispatchAdmission): void | Promise<void>;
|
|
58
59
|
private submitReply;
|
|
59
60
|
private createMeshContext;
|
|
60
61
|
}
|
|
@@ -117,7 +118,7 @@ export declare class ZLinkRoutePacketDispatcher {
|
|
|
117
118
|
}, router: {
|
|
118
119
|
reply(routingId: unknown, replyToken: unknown): ZLinkMultipartReplyOperation;
|
|
119
120
|
}, signal?: AbortSignal, decodedHeader?: ZLinkChannelEnvelopeHeader, infrastructureChecked?: boolean): Promise<boolean | void>;
|
|
120
|
-
dispatchMesh(record: ReceiveRecord, signal?: AbortSignal): Promise<void>;
|
|
121
|
+
dispatchMesh(record: ReceiveRecord, signal?: AbortSignal, admit?: ZLinkMeshDispatchAdmission): void | Promise<void>;
|
|
121
122
|
dispatchLocalCommand(parts: readonly Message[], sourceNodeRid: RoutingId, signal?: AbortSignal): Promise<void>;
|
|
122
123
|
private dispatchMeshCommand;
|
|
123
124
|
private submitReply;
|
|
@@ -5,12 +5,14 @@ exports.collectRouteChannelHandlers = collectRouteChannelHandlers;
|
|
|
5
5
|
const contracts_1 = require("../../contracts");
|
|
6
6
|
const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
|
|
7
7
|
const runtime_values_1 = require("../backend/runtime-values");
|
|
8
|
+
const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
|
|
8
9
|
const configuration_1 = require("../configuration");
|
|
9
10
|
const channel_envelope_1 = require("./channel-envelope");
|
|
10
11
|
const channel_envelope_inspection_1 = require("./channel-envelope-inspection");
|
|
11
12
|
const channel_multipart_1 = require("./channel-multipart");
|
|
12
13
|
const channel_framework_packets_1 = require("./channel-framework-packets");
|
|
13
14
|
const channel_dispatch_pipeline_1 = require("./channel-dispatch-pipeline");
|
|
15
|
+
const completedChannelReply = Promise.resolve();
|
|
14
16
|
class ZLinkChannelRequestDispatcher {
|
|
15
17
|
options;
|
|
16
18
|
pipeline;
|
|
@@ -49,7 +51,7 @@ class ZLinkChannelRequestDispatcher {
|
|
|
49
51
|
await this.pipeline.dispatchMalformed({
|
|
50
52
|
info,
|
|
51
53
|
error,
|
|
52
|
-
transportRequest: replyToken
|
|
54
|
+
transportRequest: replyToken != null,
|
|
53
55
|
writeProtocolError: replyToken === null
|
|
54
56
|
? undefined
|
|
55
57
|
: (protocolError) => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelErrorReplyParts)((0, channel_envelope_inspection_1.malformedProtocolErrorRequestHeader)(this.options.channelName, info), protocolError)), signal)
|
|
@@ -124,9 +126,9 @@ class ZLinkChannelRequestDispatcher {
|
|
|
124
126
|
writeError: (error) => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelErrorReplyParts)(envelope.header, error)), signal)
|
|
125
127
|
});
|
|
126
128
|
}
|
|
127
|
-
|
|
129
|
+
dispatchMesh(record, signal, admit) {
|
|
128
130
|
if (record.parts.length === 0 || record.parts[0].data().length === 0) {
|
|
129
|
-
return;
|
|
131
|
+
return completedChannelReply;
|
|
130
132
|
}
|
|
131
133
|
let envelope;
|
|
132
134
|
try {
|
|
@@ -134,16 +136,15 @@ class ZLinkChannelRequestDispatcher {
|
|
|
134
136
|
}
|
|
135
137
|
catch (error) {
|
|
136
138
|
const info = (0, channel_envelope_inspection_1.inspectMalformedChannelHeader)(record.parts, this.flowEnabled());
|
|
137
|
-
|
|
139
|
+
return this.pipeline.dispatchMalformed({
|
|
138
140
|
info,
|
|
139
141
|
error,
|
|
140
|
-
transportRequest:
|
|
142
|
+
transportRequest: isMeshRequest(record),
|
|
141
143
|
sourceRid: record.sourceNodeRid == null ? undefined : String(record.sourceNodeRid),
|
|
142
144
|
writeProtocolError: async (protocolError) => {
|
|
143
145
|
requireMeshReplyAccepted(record.reply((0, channel_envelope_1.encodeChannelErrorReplyParts)((0, channel_envelope_inspection_1.malformedProtocolErrorRequestHeader)(this.options.channelName, info), protocolError)));
|
|
144
146
|
}
|
|
145
147
|
});
|
|
146
|
-
return;
|
|
147
148
|
}
|
|
148
149
|
const packetName = envelope.packetName;
|
|
149
150
|
if (packetName === undefined) {
|
|
@@ -151,7 +152,7 @@ class ZLinkChannelRequestDispatcher {
|
|
|
151
152
|
}
|
|
152
153
|
const correlationId = envelope.header.correlationId ?? undefined;
|
|
153
154
|
if (envelope.header.kind === 3 /* ZLinkChannelMessageKind.Command */) {
|
|
154
|
-
|
|
155
|
+
return this.pipeline.dispatchOneWay({
|
|
155
156
|
fields: {
|
|
156
157
|
messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send,
|
|
157
158
|
packetName,
|
|
@@ -164,11 +165,10 @@ class ZLinkChannelRequestDispatcher {
|
|
|
164
165
|
handler: this.options.sendHandlers?.get(packetName),
|
|
165
166
|
context: this.createMeshContext(envelope, record.sourceNodeRid),
|
|
166
167
|
signal
|
|
167
|
-
});
|
|
168
|
-
return;
|
|
168
|
+
}, admit);
|
|
169
169
|
}
|
|
170
170
|
if (envelope.header.kind !== 1 /* ZLinkChannelMessageKind.Request */) {
|
|
171
|
-
return;
|
|
171
|
+
return completedChannelReply;
|
|
172
172
|
}
|
|
173
173
|
const fields = {
|
|
174
174
|
messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request,
|
|
@@ -177,28 +177,14 @@ class ZLinkChannelRequestDispatcher {
|
|
|
177
177
|
flowId: envelope.header.flowId,
|
|
178
178
|
flowOrigin: envelope.header.flowOrigin
|
|
179
179
|
};
|
|
180
|
-
|
|
181
|
-
fields,
|
|
182
|
-
envelope,
|
|
183
|
-
codecs: this.options.codecs,
|
|
184
|
-
handler: this.options.handlers.get(packetName),
|
|
185
|
-
context: this.createMeshContext(envelope, record.sourceNodeRid),
|
|
186
|
-
signal,
|
|
187
|
-
missingHandlerMessage: `No channel request handler is registered for '${this.options.channelName}:${packetName}'.`,
|
|
188
|
-
writeReply: async (reply) => {
|
|
189
|
-
requireMeshReplyAccepted(record.reply((0, channel_envelope_1.encodeChannelReplyParts)(envelope.header, reply, this.options.codecs)));
|
|
190
|
-
},
|
|
191
|
-
writeError: async (error) => {
|
|
192
|
-
requireMeshReplyAccepted(record.reply((0, channel_envelope_1.encodeChannelErrorReplyParts)(envelope.header, error)));
|
|
193
|
-
}
|
|
194
|
-
});
|
|
180
|
+
return this.pipeline.dispatchRequest(new ZLinkMeshRequestDispatch(fields, envelope, this.options.codecs, this.options.handlers.get(packetName), this.createMeshContext(envelope, record.sourceNodeRid), signal, record, 'channel', this.options.channelName), admit);
|
|
195
181
|
}
|
|
196
182
|
submitReply(operation, signal) {
|
|
197
183
|
void signal;
|
|
198
184
|
if (operation.submit() === false) {
|
|
199
185
|
throw new configuration_1.ZLinkConfigurationException('Channel reply was not accepted by Core.');
|
|
200
186
|
}
|
|
201
|
-
return
|
|
187
|
+
return completedChannelReply;
|
|
202
188
|
}
|
|
203
189
|
createMeshContext(envelope, sourceNodeRid) {
|
|
204
190
|
const base = {
|
|
@@ -220,6 +206,42 @@ class ZLinkChannelRequestDispatcher {
|
|
|
220
206
|
}
|
|
221
207
|
}
|
|
222
208
|
exports.ZLinkChannelRequestDispatcher = ZLinkChannelRequestDispatcher;
|
|
209
|
+
/**
|
|
210
|
+
* One mesh request handed to the dispatch pipeline. The reply writers are
|
|
211
|
+
* methods over the received record instead of per-message closures, and the
|
|
212
|
+
* missing-handler text is built only when no handler exists.
|
|
213
|
+
*/
|
|
214
|
+
class ZLinkMeshRequestDispatch {
|
|
215
|
+
fields;
|
|
216
|
+
envelope;
|
|
217
|
+
codecs;
|
|
218
|
+
handler;
|
|
219
|
+
context;
|
|
220
|
+
signal;
|
|
221
|
+
record;
|
|
222
|
+
handlerSurface;
|
|
223
|
+
channelName;
|
|
224
|
+
constructor(fields, envelope, codecs, handler, context, signal, record, handlerSurface, channelName) {
|
|
225
|
+
this.fields = fields;
|
|
226
|
+
this.envelope = envelope;
|
|
227
|
+
this.codecs = codecs;
|
|
228
|
+
this.handler = handler;
|
|
229
|
+
this.context = context;
|
|
230
|
+
this.signal = signal;
|
|
231
|
+
this.record = record;
|
|
232
|
+
this.handlerSurface = handlerSurface;
|
|
233
|
+
this.channelName = channelName;
|
|
234
|
+
}
|
|
235
|
+
get missingHandlerMessage() {
|
|
236
|
+
return `No ${this.handlerSurface} request handler is registered for '${this.channelName}:${this.fields.packetName}'.`;
|
|
237
|
+
}
|
|
238
|
+
writeReply(reply) {
|
|
239
|
+
requireMeshReplyAccepted(this.record.reply((0, channel_envelope_1.encodeChannelReplyParts)(this.envelope.header, reply, this.codecs)));
|
|
240
|
+
}
|
|
241
|
+
writeError(error) {
|
|
242
|
+
requireMeshReplyAccepted(this.record.reply((0, channel_envelope_1.encodeChannelErrorReplyParts)(this.envelope.header, error)));
|
|
243
|
+
}
|
|
244
|
+
}
|
|
223
245
|
function requireMeshReplyAccepted(result) {
|
|
224
246
|
if (result !== runtime_values_1.SubmitResult.Ok) {
|
|
225
247
|
throw new configuration_1.ZLinkConfigurationException(`MeshNode channel reply was not accepted (submit result ${result}).`);
|
|
@@ -381,7 +403,7 @@ class ZLinkRoutePacketDispatcher {
|
|
|
381
403
|
await this.pipeline.dispatchMalformed({
|
|
382
404
|
info,
|
|
383
405
|
error,
|
|
384
|
-
transportRequest: replyToken
|
|
406
|
+
transportRequest: replyToken != null,
|
|
385
407
|
sourceRid: String(received.routingId),
|
|
386
408
|
writeProtocolError: replyToken === null
|
|
387
409
|
? undefined
|
|
@@ -452,9 +474,9 @@ class ZLinkRoutePacketDispatcher {
|
|
|
452
474
|
writeError: (error) => this.submitReply((0, channel_multipart_1.appendParts)(router.reply(received.routingId, replyToken), (0, channel_envelope_1.encodeChannelErrorReplyParts)(envelope.header, error)))
|
|
453
475
|
});
|
|
454
476
|
}
|
|
455
|
-
|
|
477
|
+
dispatchMesh(record, signal, admit) {
|
|
456
478
|
if (record.parts.length === 0 || record.parts[0].data().length === 0) {
|
|
457
|
-
return;
|
|
479
|
+
return completedChannelReply;
|
|
458
480
|
}
|
|
459
481
|
let envelope;
|
|
460
482
|
try {
|
|
@@ -462,16 +484,15 @@ class ZLinkRoutePacketDispatcher {
|
|
|
462
484
|
}
|
|
463
485
|
catch (error) {
|
|
464
486
|
const info = (0, channel_envelope_inspection_1.inspectMalformedChannelHeader)(record.parts, this.flowEnabled());
|
|
465
|
-
|
|
487
|
+
return this.pipeline.dispatchMalformed({
|
|
466
488
|
info,
|
|
467
489
|
error,
|
|
468
|
-
transportRequest:
|
|
490
|
+
transportRequest: isMeshRequest(record),
|
|
469
491
|
sourceRid: record.sourceNodeRid == null ? undefined : String(record.sourceNodeRid),
|
|
470
492
|
writeProtocolError: async (protocolError) => {
|
|
471
493
|
requireMeshReplyAccepted(record.reply((0, channel_envelope_1.encodeChannelErrorReplyParts)((0, channel_envelope_inspection_1.malformedProtocolErrorRequestHeader)(this.routerChannelId, info), protocolError)));
|
|
472
494
|
}
|
|
473
495
|
});
|
|
474
|
-
return;
|
|
475
496
|
}
|
|
476
497
|
const packetName = envelope.packetName;
|
|
477
498
|
if (packetName === undefined) {
|
|
@@ -480,11 +501,10 @@ class ZLinkRoutePacketDispatcher {
|
|
|
480
501
|
const sourceNodeRid = String(record.sourceNodeRid ?? '');
|
|
481
502
|
const correlationId = envelope.header.correlationId ?? undefined;
|
|
482
503
|
if (envelope.header.kind === 3 /* ZLinkChannelMessageKind.Command */) {
|
|
483
|
-
|
|
484
|
-
return;
|
|
504
|
+
return this.dispatchMeshCommand(envelope, packetName, sourceNodeRid, record.sourceNodeRid, signal, admit);
|
|
485
505
|
}
|
|
486
506
|
if (envelope.header.kind !== 1 /* ZLinkChannelMessageKind.Request */) {
|
|
487
|
-
return;
|
|
507
|
+
return completedChannelReply;
|
|
488
508
|
}
|
|
489
509
|
const fields = {
|
|
490
510
|
messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request,
|
|
@@ -494,22 +514,7 @@ class ZLinkRoutePacketDispatcher {
|
|
|
494
514
|
flowId: envelope.header.flowId,
|
|
495
515
|
flowOrigin: envelope.header.flowOrigin
|
|
496
516
|
};
|
|
497
|
-
|
|
498
|
-
await this.pipeline.dispatchRequest({
|
|
499
|
-
fields,
|
|
500
|
-
envelope,
|
|
501
|
-
codecs,
|
|
502
|
-
handler: this.requestHandlers.get(packetName),
|
|
503
|
-
context: this.createRouteContext(envelope, record.sourceNodeRid),
|
|
504
|
-
signal,
|
|
505
|
-
missingHandlerMessage: `No routed request handler is registered for '${this.routerChannelId}:${packetName}'.`,
|
|
506
|
-
writeReply: async (reply) => {
|
|
507
|
-
requireMeshReplyAccepted(record.reply((0, channel_envelope_1.encodeChannelReplyParts)(envelope.header, reply, codecs)));
|
|
508
|
-
},
|
|
509
|
-
writeError: async (error) => {
|
|
510
|
-
requireMeshReplyAccepted(record.reply((0, channel_envelope_1.encodeChannelErrorReplyParts)(envelope.header, error)));
|
|
511
|
-
}
|
|
512
|
-
});
|
|
517
|
+
return this.pipeline.dispatchRequest(new ZLinkMeshRequestDispatch(fields, envelope, (0, channel_framework_packets_1.codecsForFrameworkPacket)(packetName, this.codecs), this.requestHandlers.get(packetName), this.createRouteContext(envelope, record.sourceNodeRid), signal, record, 'routed', this.routerChannelId), admit);
|
|
513
518
|
}
|
|
514
519
|
async dispatchLocalCommand(parts, sourceNodeRid, signal) {
|
|
515
520
|
if (parts.length === 0 || parts[0].data().length === 0)
|
|
@@ -537,7 +542,7 @@ class ZLinkRoutePacketDispatcher {
|
|
|
537
542
|
}
|
|
538
543
|
await this.dispatchMeshCommand(envelope, packetName, String(sourceNodeRid), sourceNodeRid, signal);
|
|
539
544
|
}
|
|
540
|
-
dispatchMeshCommand(envelope, packetName, sourceRid, sourceNodeRid, signal) {
|
|
545
|
+
dispatchMeshCommand(envelope, packetName, sourceRid, sourceNodeRid, signal, admit) {
|
|
541
546
|
return this.pipeline.dispatchOneWay({
|
|
542
547
|
fields: {
|
|
543
548
|
messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send,
|
|
@@ -552,13 +557,13 @@ class ZLinkRoutePacketDispatcher {
|
|
|
552
557
|
handler: this.sendHandlers.get(packetName),
|
|
553
558
|
context: this.createRouteContext(envelope, sourceNodeRid),
|
|
554
559
|
signal
|
|
555
|
-
});
|
|
560
|
+
}, admit);
|
|
556
561
|
}
|
|
557
562
|
submitReply(operation) {
|
|
558
563
|
if (operation.submit() === false) {
|
|
559
564
|
throw new configuration_1.ZLinkConfigurationException('Route reply was not accepted by Core.');
|
|
560
565
|
}
|
|
561
|
-
return
|
|
566
|
+
return completedChannelReply;
|
|
562
567
|
}
|
|
563
568
|
createRouteContext(envelope, sourceRid) {
|
|
564
569
|
const sourceNodeRid = String(sourceRid ?? '');
|
|
@@ -573,3 +578,6 @@ class ZLinkRoutePacketDispatcher {
|
|
|
573
578
|
}
|
|
574
579
|
}
|
|
575
580
|
exports.ZLinkRoutePacketDispatcher = ZLinkRoutePacketDispatcher;
|
|
581
|
+
function isMeshRequest(record) {
|
|
582
|
+
return record.kind === service_runtime_contracts_1.ReceiveKind.NodeRequest || record.kind === service_runtime_contracts_1.ReceiveKind.ChannelRequest;
|
|
583
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Message } from '../../contracts/Common/Message';
|
|
2
2
|
import type { ZLinkFlowOrigin } from '../../contracts';
|
|
3
|
-
import {
|
|
3
|
+
import { type ZLinkChannelEnvelopeHeader } from './channel-envelope';
|
|
4
4
|
export declare function tryDecodeChannelHeader(parts: readonly Message[], flowEnabled?: boolean): ZLinkChannelEnvelopeHeader | undefined;
|
|
5
5
|
/**
|
|
6
6
|
* Identifiers salvaged from a malformed channel envelope. Spec 27 §7: a
|
|
@@ -9,7 +9,6 @@ export declare function tryDecodeChannelHeader(parts: readonly Message[], flowEn
|
|
|
9
9
|
* present only when it is individually well-formed.
|
|
10
10
|
*/
|
|
11
11
|
export interface ZLinkMalformedChannelHeaderInfo {
|
|
12
|
-
readonly kind?: ZLinkChannelMessageKind;
|
|
13
12
|
readonly channelName?: string;
|
|
14
13
|
readonly messageName?: string;
|
|
15
14
|
readonly correlationId?: string;
|
|
@@ -29,15 +29,12 @@ function inspectMalformedChannelHeader(parts, flowEnabled) {
|
|
|
29
29
|
catch {
|
|
30
30
|
return {};
|
|
31
31
|
}
|
|
32
|
-
if (header.formatMarker !== channel_envelope_1.ZLINK_CHANNEL_FORMAT_MARKER)
|
|
33
|
-
return {};
|
|
34
32
|
const flowId = typeof header.flowId === 'string' && CHANNEL_FLOW_ID_PATTERN.test(header.flowId)
|
|
35
33
|
? header.flowId
|
|
36
34
|
: undefined;
|
|
37
35
|
const flowOrigin = salvageFlowOrigin(header.flowOrigin);
|
|
38
36
|
const flowPairValid = flowEnabled && flowId !== undefined && flowOrigin !== undefined;
|
|
39
37
|
return {
|
|
40
|
-
kind: salvageChannelKind(header.kind),
|
|
41
38
|
channelName: salvageString(header.channelName),
|
|
42
39
|
messageName: salvageString(header.messageName),
|
|
43
40
|
correlationId: salvageCorrelationId(header.correlationId),
|
|
@@ -66,23 +63,11 @@ function malformedProtocolErrorRequestHeader(channelName, info) {
|
|
|
66
63
|
};
|
|
67
64
|
}
|
|
68
65
|
const CHANNEL_FLOW_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
|
|
69
|
-
function salvageChannelKind(value) {
|
|
70
|
-
return value === 1 /* ZLinkChannelMessageKind.Request */ ||
|
|
71
|
-
value === 2 /* ZLinkChannelMessageKind.Response */ ||
|
|
72
|
-
value === 3 /* ZLinkChannelMessageKind.Command */ ||
|
|
73
|
-
value === 4 /* ZLinkChannelMessageKind.Publish */ ||
|
|
74
|
-
value === 5 /* ZLinkChannelMessageKind.Error */
|
|
75
|
-
? value
|
|
76
|
-
: undefined;
|
|
77
|
-
}
|
|
78
66
|
function salvageString(value) {
|
|
79
67
|
return typeof value === 'string' && value.length > 0 ? value : undefined;
|
|
80
68
|
}
|
|
81
69
|
function salvageCorrelationId(value) {
|
|
82
|
-
|
|
83
|
-
return undefined;
|
|
84
|
-
const byteLength = Buffer.byteLength(value, 'utf8');
|
|
85
|
-
return byteLength >= 1 && byteLength <= 64 && /^[\x00-\x7f]*$/.test(value) ? value : undefined;
|
|
70
|
+
return typeof value === 'string' && (0, channel_envelope_1.isValidChannelCorrelationId)(value) ? value : undefined;
|
|
86
71
|
}
|
|
87
72
|
function salvageFlowOrigin(value) {
|
|
88
73
|
switch (value) {
|
|
@@ -54,6 +54,7 @@ export declare function encodeChannelReplyParts(request: ZLinkChannelEnvelopeHea
|
|
|
54
54
|
*/
|
|
55
55
|
export declare const ZLINK_FRAMEWORK_ORIGIN_METADATA_KEY = "zlink.origin";
|
|
56
56
|
export declare const ZLINK_FRAMEWORK_ORIGIN_METADATA_VALUE = "framework";
|
|
57
|
+
export declare function channelErrorKindFromCode(code: string): ZLinkFrameworkErrorKind | undefined;
|
|
57
58
|
export declare function channelErrorCodeName(kind: ZLinkFrameworkErrorKind): string;
|
|
58
59
|
/**
|
|
59
60
|
* A channel error decoded from an Error reply envelope. `origin` carries the
|
|
@@ -71,3 +72,4 @@ export declare function decodeChannelEnvelope(parts: readonly Message[], decoded
|
|
|
71
72
|
export declare function decodeChannelPayload(envelope: ZLinkChannelEnvelope, codecs?: ZLinkChannelEnvelopeCodecRegistry): unknown;
|
|
72
73
|
export declare function closeMessages(parts: readonly MessageLike[]): void;
|
|
73
74
|
export declare function decodeChannelHeader(parts: readonly Message[], flowEnabled?: boolean): ZLinkChannelEnvelopeHeader;
|
|
75
|
+
export declare function isValidChannelCorrelationId(value: string): boolean;
|