@zlink-systems/framework 0.26.0 → 0.28.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/ZLinkActorClient.d.ts +1 -1
- package/dist/contracts/Channels/Calls.d.ts +1 -1
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/Builders.d.ts +0 -1
- package/dist/contracts/Configuration/Configs.d.ts +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -5
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -14
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/Spots/Contracts.d.ts +2 -2
- package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
- package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
- package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
- package/dist/internal.d.ts +4 -0
- package/dist/internal.js +15 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +1 -2
- package/dist/runtime/activation-admission.js +2 -6
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +49 -153
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +13 -11
- package/dist/runtime/actors/actor-handoff.d.ts +4 -4
- package/dist/runtime/actors/actor-handoff.js +8 -8
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +83 -105
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
- package/dist/runtime/actors/actor-remote-joiner.js +5 -9
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +1 -0
- package/dist/runtime/actors/actor-request-deadline.js +6 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
- package/dist/runtime/actors/deferred-join-completion.js +1 -0
- package/dist/runtime/actors/index.d.ts +9 -7
- package/dist/runtime/actors/index.js +87 -69
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +2 -0
- package/dist/runtime/admission.js +7 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +7 -27
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -1
- package/dist/runtime/backend/node/node-backend-adapter-support.js +51 -10
- 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 +1 -2
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.js +41 -34
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -8
- package/dist/runtime/channels/channel-clients.js +73 -59
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.d.ts +1 -1
- package/dist/runtime/channels/channel-envelope.js +51 -39
- package/dist/runtime/channels/channel-outbound-operations.d.ts +5 -2
- package/dist/runtime/channels/channel-outbound-operations.js +25 -42
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.d.ts +4 -4
- package/dist/runtime/channels/channel-runtime-manager.js +13 -10
- package/dist/runtime/channels/channel-socket-options.js +3 -12
- package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
- package/dist/runtime/channels/channel-socket-registry.js +240 -177
- package/dist/runtime/channels/channel-transports.d.ts +21 -31
- package/dist/runtime/channels/channel-transports.js +80 -62
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +130 -72
- package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/local-spot-route-transport.js +1 -3
- package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
- package/dist/runtime/channels/source-spot-router.d.ts +1 -1
- package/dist/runtime/channels/source-spot-router.js +2 -4
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.d.ts +1 -1
- package/dist/runtime/channels/spot-node-route-transport.js +5 -5
- package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
- package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
- package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +12 -9
- package/dist/runtime/execution/index.js +58 -14
- package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
- package/dist/runtime/execution/serial-execution-queue.js +54 -15
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +79 -94
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
- package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
- package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
- package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
- package/dist/runtime/foundation/service-topology-registry.js +17 -32
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +11 -8
- package/dist/runtime/host/actor-packet-relay.js +54 -99
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
- package/dist/runtime/host/actor-transfer-runtime.js +143 -176
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +14 -13
- package/dist/runtime/host/index.js +190 -171
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +15 -28
- package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
- package/dist/runtime/host/route-mesh-runtime.js +171 -252
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
- package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
- package/dist/runtime/host/spot-address-transport.d.ts +3 -12
- package/dist/runtime/host/spot-address-transport.js +78 -220
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
- package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
- package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +4 -9
- package/dist/runtime/locations/lifecycle.js +2 -31
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +309 -336
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +37 -28
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
- package/dist/runtime/locations/spot-location-claims.js +42 -1
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/request-deadline.d.ts +3 -0
- package/dist/runtime/messaging/request-deadline.js +39 -0
- package/dist/runtime/messaging/submission-result.d.ts +4 -0
- package/dist/runtime/messaging/submission-result.js +56 -1
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
- package/dist/runtime/spots/index.d.ts +14 -20
- package/dist/runtime/spots/index.js +302 -176
- package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
- package/dist/runtime/spots/spot-activation-registry.js +14 -50
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +2 -2
- package/dist/runtime/spots/spot-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-activation.js +49 -32
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
- package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
- package/dist/runtime/spots/spot-actor-membership.js +22 -45
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +9 -20
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +5 -4
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
- package/dist/runtime/spots/spot-outbound.d.ts +7 -8
- package/dist/runtime/spots/spot-outbound.js +21 -23
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
- package/dist/runtime/spots/spot-serial-executor.js +2 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
- package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +8 -4
- package/dist/runtime/streams/bound-actor-relay-sender.js +65 -41
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -2
- package/dist/runtime/streams/index.d.ts +16 -17
- package/dist/runtime/streams/index.js +22 -23
- package/dist/runtime/streams/managed-stream.d.ts +5 -2
- package/dist/runtime/streams/managed-stream.js +20 -13
- package/dist/runtime/streams/native-fallback-bound-session.js +14 -19
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +6 -8
- package/dist/runtime/streams/session-calls.js +6 -22
- package/dist/runtime/streams/session-context.d.ts +10 -10
- package/dist/runtime/streams/session-context.js +25 -10
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Actors/ZLinkActorClient.ts +1 -1
- package/src/contracts/Channels/Calls.ts +1 -1
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/Builders.ts +0 -1
- package/src/contracts/Configuration/Configs.ts +0 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -71
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -5
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -17
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/Spots/Contracts.ts +2 -2
- package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
- package/src/contracts/Streams/IZLinkSession.ts +2 -3
- package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
- package/src/internal.ts +14 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +2 -8
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +85 -218
- package/src/runtime/actors/actor-context.ts +39 -33
- package/src/runtime/actors/actor-handoff.ts +24 -22
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +172 -174
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +9 -11
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +4 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +10 -6
- package/src/runtime/actors/index.ts +100 -79
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +8 -1
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +14 -37
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-support.ts +67 -10
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
- package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +44 -49
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +4 -3
- package/src/runtime/backend/raw-binding-port.ts +1 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +139 -102
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +74 -57
- package/src/runtime/channels/channel-outbound-operations.ts +40 -55
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +12 -30
- package/src/runtime/channels/channel-socket-options.ts +8 -15
- package/src/runtime/channels/channel-socket-registry.ts +291 -196
- package/src/runtime/channels/channel-transports.ts +168 -145
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +172 -91
- package/src/runtime/channels/local-spot-route-transport.ts +1 -5
- package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
- package/src/runtime/channels/source-spot-router.ts +2 -9
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +7 -9
- package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +60 -20
- package/src/runtime/execution/serial-execution-queue.ts +131 -18
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +127 -125
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
- package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
- package/src/runtime/foundation/service-topology-registry.ts +23 -32
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +63 -160
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +180 -260
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +327 -320
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +16 -57
- package/src/runtime/host/route-mesh-runtime.ts +228 -271
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
- package/src/runtime/host/spot-address-transport.ts +175 -356
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
- package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +13 -43
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +457 -482
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +75 -49
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +58 -1
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/request-deadline.ts +58 -0
- package/src/runtime/messaging/submission-result.ts +72 -2
- package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
- package/src/runtime/spots/index.ts +433 -229
- package/src/runtime/spots/spot-activation-registry.ts +30 -69
- package/src/runtime/spots/spot-activation-state.ts +2 -2
- package/src/runtime/spots/spot-activation.ts +67 -37
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
- package/src/runtime/spots/spot-actor-membership.ts +40 -72
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -30
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +21 -17
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
- package/src/runtime/spots/spot-outbound.ts +59 -47
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +5 -27
- package/src/runtime/spots/spot-serial-executor.ts +2 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +98 -66
- package/src/runtime/streams/bound-session-service.ts +22 -2
- package/src/runtime/streams/index.ts +78 -68
- package/src/runtime/streams/managed-stream.ts +32 -23
- package/src/runtime/streams/native-fallback-bound-session.ts +14 -28
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +11 -36
- package/src/runtime/streams/session-context.ts +60 -25
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -80,8 +80,8 @@ export interface ZLinkBackendMeshNode {
|
|
|
80
80
|
readonly stableType: string;
|
|
81
81
|
readonly descriptorVersion: string;
|
|
82
82
|
}, parts: ZLinkBackendMessageLike | readonly ZLinkBackendMessageLike[], deadlineUnixMs: bigint, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>): MeshOperationId;
|
|
83
|
-
sendToInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], sourceSpotId?: string, metadata?: ReadonlyMap<string, string
|
|
84
|
-
requestInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs?: number, sourceSpotId?: string, metadata?: ReadonlyMap<string, string
|
|
83
|
+
sendToInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean): Promise<SubmitResult>;
|
|
84
|
+
requestInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs?: number, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean): MeshOperationId;
|
|
85
85
|
registerUserSpotOperationHandler(handler: ServiceUserSpotOperationHandler): void;
|
|
86
86
|
requestUserSpotCreate(targetNodeRid: string, request: Omit<ServiceUserSpotCreateRecord, 'kind' | 'correlation' | 'operation'>, timeoutMs: number): Promise<ServiceUserSpotOperationResult>;
|
|
87
87
|
requestUserSpotClose(targetNodeRid: string, request: Omit<ServiceUserSpotCloseRecord, 'kind' | 'correlation' | 'operation'>, timeoutMs: number): Promise<ServiceUserSpotOperationResult>;
|
|
@@ -156,11 +156,12 @@ export interface ZLinkBackendMeshNode {
|
|
|
156
156
|
readonly stableType: string;
|
|
157
157
|
readonly objectGeneration: bigint;
|
|
158
158
|
} | undefined;
|
|
159
|
+
registerInstanceIntent?(instanceType: string, route: import('../../foundation/service-stateful-wire-codec').ServiceInstanceRouteFence, expectedCurrentRoute?: import('../../foundation/service-stateful-wire-codec').ServiceInstanceRouteFence | null): void;
|
|
159
160
|
waitForInstanceApplicationQuiescence?(spotId: string, signal?: AbortSignal): Promise<void>;
|
|
160
161
|
restoreUserSpotAuthority?(spotId: string, stableType: string, generation: bigint, authorityOwnerGeneration: bigint): ServiceSpot;
|
|
161
162
|
restoreSpotAuthority?(spotId: string, objectKind: 'user_spot' | 'instance_spot', stableType: string, generation: bigint, authorityOwnerGeneration: bigint): ServiceSpot;
|
|
162
163
|
createActor(actorId: string, parts?: MessageLike | readonly MessageLike[]): ZLinkBackendActorRef;
|
|
163
|
-
restoreActorAuthority?(actorId: string, stableType: string, generation: bigint, authorityOwnerGeneration: bigint, spotId: string, spotGeneration: bigint, membershipEpoch: bigint): ZLinkBackendActorRef;
|
|
164
|
+
restoreActorAuthority?(actorId: string, stableType: string, generation: bigint, authorityOwnerGeneration: bigint, spotId: string | undefined, spotGeneration: bigint, membershipEpoch: bigint): ZLinkBackendActorRef;
|
|
164
165
|
discardRelocatedActor?(actor: ZLinkBackendActorRef): void;
|
|
165
166
|
restoreActorSessionBinding?(actor: ZLinkBackendActorRef, sessionNodeRid: unknown, sessionRid: unknown, bindingGeneration: bigint): void;
|
|
166
167
|
actorLookup(actorId: string): {
|
|
@@ -248,24 +249,6 @@ export interface ZLinkBackendActorRecvInfo {
|
|
|
248
249
|
readonly requestId: bigint;
|
|
249
250
|
readonly flags: number;
|
|
250
251
|
}
|
|
251
|
-
export interface ZLinkBackendActorJoinInfo {
|
|
252
|
-
readonly sourceActor: ZLinkBackendActorRef;
|
|
253
|
-
readonly targetActor: ZLinkBackendActorRef;
|
|
254
|
-
readonly sourceNodeRid: RoutingId;
|
|
255
|
-
readonly sourceSpotId: RoutingId;
|
|
256
|
-
readonly targetNodeRid: RoutingId;
|
|
257
|
-
readonly targetSpotId: RoutingId;
|
|
258
|
-
readonly joinEpoch: bigint;
|
|
259
|
-
readonly flags: number;
|
|
260
|
-
}
|
|
261
|
-
export interface ZLinkBackendActorJoinRequest {
|
|
262
|
-
readonly info: ZLinkBackendActorJoinInfo;
|
|
263
|
-
readonly message: Message;
|
|
264
|
-
}
|
|
265
|
-
export interface ZLinkBackendActorJoinReplyOperation {
|
|
266
|
-
message(message: Message): ZLinkBackendActorJoinReplyOperation;
|
|
267
|
-
submit(): void;
|
|
268
|
-
}
|
|
269
252
|
export interface ZLinkBackendSpotDispatchInfo {
|
|
270
253
|
readonly event: ZLinkBackendSpotDispatchEvent;
|
|
271
254
|
readonly subjectKind?: number;
|
|
@@ -274,6 +257,7 @@ export interface ZLinkBackendSpotDispatchInfo {
|
|
|
274
257
|
}
|
|
275
258
|
export interface ZLinkBackendSocketMonitorEvent {
|
|
276
259
|
readonly nativeEvent: MonitorEventType;
|
|
260
|
+
readonly readyEdge: boolean;
|
|
277
261
|
readonly routingId?: unknown;
|
|
278
262
|
readonly localAddr: string;
|
|
279
263
|
readonly remoteAddr: string;
|
|
@@ -308,7 +292,6 @@ export interface ZLinkBackendDealerSocket extends ZLinkBackendConnectableSocket
|
|
|
308
292
|
sendHighWaterMark: number;
|
|
309
293
|
receiveHighWaterMark: number;
|
|
310
294
|
receiveTimeoutMs: number;
|
|
311
|
-
sendTimeoutMs: number;
|
|
312
295
|
maxMessageSize: number;
|
|
313
296
|
send(message: Message | readonly Message[]): Promise<void>;
|
|
314
297
|
request(message: Message | readonly Message[], timeoutMs?: number): Promise<readonly Message[]>;
|
|
@@ -335,7 +318,6 @@ export interface ZLinkBackendRouterSocket extends ZLinkBackendConnectableSocket
|
|
|
335
318
|
sendHighWaterMark: number;
|
|
336
319
|
receiveHighWaterMark: number;
|
|
337
320
|
receiveTimeoutMs: number;
|
|
338
|
-
sendTimeoutMs: number;
|
|
339
321
|
maxMessageSize: number;
|
|
340
322
|
setRoutingId(routingId: RoutingId): void;
|
|
341
323
|
recv(flags?: ZLinkBackendRecvFlags): Received | undefined;
|
|
@@ -348,6 +330,7 @@ export interface ZLinkBackendRouterSocket extends ZLinkBackendConnectableSocket
|
|
|
348
330
|
reply(routingId: RoutingId, replyToken: unknown, message: Message | readonly Message[]): void;
|
|
349
331
|
}
|
|
350
332
|
export interface ZLinkBackendPublisherSocket extends ZLinkBackendSocket {
|
|
333
|
+
sendTimeoutMs: number;
|
|
351
334
|
sendHighWaterMark: number;
|
|
352
335
|
noDrop: boolean;
|
|
353
336
|
publish(topic: string, message: Message | readonly Message[]): void;
|
|
@@ -369,14 +352,13 @@ export interface ZLinkBackendStreamPacket {
|
|
|
369
352
|
close(): void;
|
|
370
353
|
}
|
|
371
354
|
export interface ZLinkBackendStreamSocket extends ZLinkBackendSocket {
|
|
372
|
-
readonly sendTimeoutMs: number;
|
|
373
355
|
readonly sendHighWaterMark: number;
|
|
374
356
|
/** Framework stream ingress uses this bound for packet payload validation. */
|
|
375
357
|
maxMessageSize: number;
|
|
376
358
|
setTlsServer(cert: string, key: string, requireClientCert?: boolean): void;
|
|
377
359
|
recvPacket(packet: ZLinkBackendStreamPacket, flags?: ZLinkBackendRecvFlags): boolean;
|
|
378
360
|
send(routingId: RoutingId, payload: Message | readonly Message[], flags: ZLinkBackendSendFlags): boolean;
|
|
379
|
-
submit(routingId: RoutingId, payload: Message | readonly Message[]
|
|
361
|
+
submit(routingId: RoutingId, payload: Message | readonly Message[]): Promise<void>;
|
|
380
362
|
disconnectPeer(routingId: RoutingId): void;
|
|
381
363
|
bindActor(sessionRid: RoutingId, actor: ZLinkBackendActorRef, timeoutMs: number, signal?: AbortSignal): Promise<void>;
|
|
382
364
|
unbindActor(sessionRid: RoutingId, actorId: string, timeoutMs: number, signal?: AbortSignal): Promise<void>;
|
|
@@ -446,8 +428,6 @@ export interface ZLinkBackendSpot extends ZLinkBackendObject {
|
|
|
446
428
|
publish(topic: string, payload: Message | readonly Message[], flags: ZLinkBackendSendFlags): boolean;
|
|
447
429
|
sendToSpot(targetRid: RoutingId, spotId: RoutingId, payload: Message | readonly Message[]): Promise<void>;
|
|
448
430
|
requestToSpot(targetRid: RoutingId, spotId: RoutingId, payload: Message | readonly Message[], timeoutMs?: number): Promise<readonly Message[]>;
|
|
449
|
-
recvActorJoin(flags: ZLinkBackendRecvFlags): ZLinkBackendActorJoinRequest | null;
|
|
450
|
-
replyActorJoin(request: ZLinkBackendActorJoinRequest, joinResultCode: number): ZLinkBackendActorJoinReplyOperation;
|
|
451
431
|
dispose(): Promise<void>;
|
|
452
432
|
}
|
|
453
433
|
export interface ZLinkChannelBackendAdapter {
|
|
@@ -1,29 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.meshActorSessionNodeAdapter = meshActorSessionNodeAdapter;
|
|
4
|
-
const runtime_values_1 = require("./runtime-values");
|
|
5
4
|
const submission_result_1 = require("../messaging/submission-result");
|
|
6
5
|
const mesh_completion_table_1 = require("./mesh-completion-table");
|
|
7
6
|
function meshActorSessionNodeAdapter(node, completions) {
|
|
8
7
|
return {
|
|
9
8
|
async sendActorBoundSession(actor, expectedBindingGeneration, parts, flags) {
|
|
10
9
|
const result = await node.sendActorBoundSession(actor, expectedBindingGeneration, parts, flags);
|
|
11
|
-
|
|
12
|
-
case runtime_values_1.SubmitResult.Ok:
|
|
13
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
14
|
-
case runtime_values_1.SubmitResult.Backpressured:
|
|
15
|
-
case runtime_values_1.SubmitResult.NotAdmitted:
|
|
16
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Backpressured };
|
|
17
|
-
case runtime_values_1.SubmitResult.NotFound:
|
|
18
|
-
case runtime_values_1.SubmitResult.InvalidState:
|
|
19
|
-
return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
|
|
20
|
-
case runtime_values_1.SubmitResult.NotConnected:
|
|
21
|
-
return { status: submission_result_1.ZLinkSubmitStatus.RouteNotConnected };
|
|
22
|
-
case runtime_values_1.SubmitResult.Terminated:
|
|
23
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Shutdown };
|
|
24
|
-
default:
|
|
25
|
-
throw new Error(`Actor bound-session send failed with result '${result}'.`);
|
|
26
|
-
}
|
|
10
|
+
return (0, submission_result_1.classifySubmitResult)(result, 'Actor bound-session send');
|
|
27
11
|
},
|
|
28
12
|
async closeActorBoundSession(actor, expectedBindingGeneration, timeoutMs, signal) {
|
|
29
13
|
if (completions === undefined) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import type { ApplicationJobQueuePort } from '../application-jobs/contracts';
|
|
1
2
|
import { type ReadyRecord, type ReceiveRecord } from '../foundation/service-runtime-contracts';
|
|
2
3
|
import type { ZLinkBackendMeshNode } from './contracts';
|
|
3
|
-
import type { ApplicationJobQueuePort } from '../application-jobs/contracts';
|
|
4
4
|
export interface ZLinkMeshDispatchPumpOptions {
|
|
5
5
|
readonly readyCapacity?: number;
|
|
6
6
|
readonly messageCapacity?: number;
|
|
@@ -23,7 +23,6 @@ export declare class ZLinkMeshDispatchPump {
|
|
|
23
23
|
private pendingDomains;
|
|
24
24
|
private infrastructureScheduled;
|
|
25
25
|
private disposed;
|
|
26
|
-
private infrastructureDrainPromise?;
|
|
27
26
|
private readonly activeDrains;
|
|
28
27
|
private readonly idleApplicationWorkers;
|
|
29
28
|
private applicationWorkerCount;
|
|
@@ -3,10 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ZLinkMeshDispatchPump = void 0;
|
|
4
4
|
const node_async_hooks_1 = require("node:async_hooks");
|
|
5
5
|
const node_os_1 = require("node:os");
|
|
6
|
-
const runtime_values_1 = require("./runtime-values");
|
|
7
|
-
const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
|
|
8
|
-
const execution_1 = require("../execution");
|
|
9
6
|
const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
|
|
7
|
+
const execution_1 = require("../execution");
|
|
8
|
+
const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
|
|
9
|
+
const service_wire_binary_primitives_1 = require("../foundation/service-wire-binary-primitives");
|
|
10
|
+
const service_wire_constants_generated_1 = require("../foundation/service-wire-constants.generated");
|
|
11
|
+
const runtime_values_1 = require("./runtime-values");
|
|
12
|
+
const DEFAULT_MESH_READY_CAPACITY = 32;
|
|
13
|
+
const DEFAULT_MESH_PART_CAPACITY = 256;
|
|
10
14
|
const MESH_DISPATCH_YIELD_RECORDS = 16;
|
|
11
15
|
const MESH_DISPATCH_YIELD_INTERVAL_MS = 2;
|
|
12
16
|
const MESH_DISPATCH_LIFECYCLE_CLAIM_BUDGET = 4;
|
|
@@ -17,23 +21,12 @@ const MESH_DISPATCH_MAX_APPLICATION_WORKERS = Math.max(2, (0, node_os_1.availabl
|
|
|
17
21
|
// must enter like an independent receive-loop task, without inheriting that
|
|
18
22
|
// owner's AsyncLocalStorage identity.
|
|
19
23
|
const detachedMeshDispatchScope = node_async_hooks_1.AsyncLocalStorage.snapshot();
|
|
20
|
-
class ZLinkMeshDispatchFailure extends Error {
|
|
21
|
-
context;
|
|
22
|
-
dispatchCause;
|
|
23
|
-
constructor(context, dispatchCause) {
|
|
24
|
-
super('Mesh record dispatch failed.', { cause: dispatchCause });
|
|
25
|
-
this.context = context;
|
|
26
|
-
this.dispatchCause = dispatchCause;
|
|
27
|
-
this.name = 'ZLinkMeshDispatchFailure';
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
24
|
class ZLinkMeshDispatchPump {
|
|
31
25
|
node;
|
|
32
26
|
options;
|
|
33
27
|
pendingDomains = service_runtime_contracts_1.ReadyDomain.None;
|
|
34
28
|
infrastructureScheduled = false;
|
|
35
29
|
disposed = false;
|
|
36
|
-
infrastructureDrainPromise;
|
|
37
30
|
activeDrains = new Set();
|
|
38
31
|
idleApplicationWorkers = new Set();
|
|
39
32
|
applicationWorkerCount = 0;
|
|
@@ -119,7 +112,7 @@ class ZLinkMeshDispatchPump {
|
|
|
119
112
|
// A worker claims one owner at a time so a suspended handler cannot hold
|
|
120
113
|
// unrelated owners. Each owner may supply up to 64 pre-admitted records.
|
|
121
114
|
const readyBatch = this.node.createReadyBatch(1);
|
|
122
|
-
const receiveBatch = this.node.createReceiveBatch(MESH_DISPATCH_RECEIVE_CAPACITY, this.options.partCapacity ??
|
|
115
|
+
const receiveBatch = this.node.createReceiveBatch(MESH_DISPATCH_RECEIVE_CAPACITY, this.options.partCapacity ?? DEFAULT_MESH_PART_CAPACITY);
|
|
123
116
|
try {
|
|
124
117
|
for (;;) {
|
|
125
118
|
await this.waitForApplicationReady();
|
|
@@ -147,12 +140,8 @@ class ZLinkMeshDispatchPump {
|
|
|
147
140
|
}
|
|
148
141
|
return new Promise((resolve) => this.idleApplicationWorkers.add(resolve));
|
|
149
142
|
}
|
|
150
|
-
reportDispatchError(error) {
|
|
151
|
-
|
|
152
|
-
this.options.reportError?.(error.dispatchCause, error.context);
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
this.options.reportError?.(error);
|
|
143
|
+
reportDispatchError(error, context) {
|
|
144
|
+
this.options.reportError?.(error, context);
|
|
156
145
|
}
|
|
157
146
|
/**
|
|
158
147
|
* Infrastructure controls must not wait for an application permit. During
|
|
@@ -168,29 +157,18 @@ class ZLinkMeshDispatchPump {
|
|
|
168
157
|
this.infrastructureScheduled = true;
|
|
169
158
|
const drain = (startTurn ?? this.yieldIfNeeded() ?? Promise.resolve())
|
|
170
159
|
.then(() => detachedMeshDispatchScope(() => (0, execution_1.runZLinkExecutionArea)('infrastructure', () => this.drainInfrastructure())))
|
|
171
|
-
.catch((error) =>
|
|
172
|
-
if (error instanceof ZLinkMeshDispatchFailure) {
|
|
173
|
-
this.options.reportError?.(error.dispatchCause, error.context);
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
this.options.reportError?.(error);
|
|
177
|
-
});
|
|
160
|
+
.catch((error) => this.reportDispatchError(error));
|
|
178
161
|
this.activeDrains.add(drain);
|
|
179
|
-
this.infrastructureDrainPromise = drain;
|
|
180
162
|
void drain.finally(() => {
|
|
181
163
|
this.activeDrains.delete(drain);
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
this.
|
|
185
|
-
if (!this.disposed && (this.pendingDomains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0) {
|
|
186
|
-
this.scheduleInfrastructure();
|
|
187
|
-
}
|
|
164
|
+
this.infrastructureScheduled = false;
|
|
165
|
+
if (!this.disposed && (this.pendingDomains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0) {
|
|
166
|
+
this.scheduleInfrastructure();
|
|
188
167
|
}
|
|
189
168
|
});
|
|
190
169
|
}
|
|
191
170
|
async drainInfrastructure() {
|
|
192
|
-
const readyBatch = this.node.createReadyBatch(Math.min(this.options.readyCapacity ??
|
|
193
|
-
const receiveBatch = this.node.createReceiveBatch(MESH_DISPATCH_RECEIVE_CAPACITY, this.options.partCapacity ?? 256);
|
|
171
|
+
const readyBatch = this.node.createReadyBatch(Math.min(this.options.readyCapacity ?? DEFAULT_MESH_READY_CAPACITY, MESH_DISPATCH_LIFECYCLE_CLAIM_BUDGET));
|
|
194
172
|
try {
|
|
195
173
|
while (!this.disposed) {
|
|
196
174
|
if ((this.pendingDomains & service_runtime_contracts_1.ReadyDomain.Infrastructure) === 0) {
|
|
@@ -200,7 +178,7 @@ class ZLinkMeshDispatchPump {
|
|
|
200
178
|
if ((this.pendingDomains & service_runtime_contracts_1.ReadyDomain.Application) !== 0) {
|
|
201
179
|
setImmediate(() => this.wakeApplicationWorker());
|
|
202
180
|
}
|
|
203
|
-
const lifecycleBudgetExhausted = await this.drainDomain(service_runtime_contracts_1.ReadyDomain.Infrastructure, readyBatch,
|
|
181
|
+
const lifecycleBudgetExhausted = await this.drainDomain(service_runtime_contracts_1.ReadyDomain.Infrastructure, readyBatch, undefined, MESH_DISPATCH_LIFECYCLE_CLAIM_BUDGET);
|
|
204
182
|
if (lifecycleBudgetExhausted) {
|
|
205
183
|
this.pendingDomains |= service_runtime_contracts_1.ReadyDomain.Infrastructure;
|
|
206
184
|
await yieldToEventLoop();
|
|
@@ -208,7 +186,6 @@ class ZLinkMeshDispatchPump {
|
|
|
208
186
|
}
|
|
209
187
|
}
|
|
210
188
|
finally {
|
|
211
|
-
receiveBatch.close();
|
|
212
189
|
readyBatch.close();
|
|
213
190
|
}
|
|
214
191
|
}
|
|
@@ -235,84 +212,92 @@ class ZLinkMeshDispatchPump {
|
|
|
235
212
|
const owner = drained.records[index];
|
|
236
213
|
// Raw ingress already attached one host permit to each record.
|
|
237
214
|
// A claim that reserves admission here may receive only that permit's record.
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
receiveBatch.reset(capacity);
|
|
250
|
-
const received = claim.recvBatch(receiveBatch, runtime_values_1.ZLINK_BACKEND_RECV_DONT_WAIT);
|
|
251
|
-
if (!received.ok)
|
|
252
|
-
break;
|
|
253
|
-
// This owner keeps its claim while it drains. Other owners and
|
|
254
|
-
// infrastructure may progress if one of its handlers suspends.
|
|
255
|
-
if (domain === service_runtime_contracts_1.ReadyDomain.Infrastructure) {
|
|
256
|
-
this.infrastructureScheduled = false;
|
|
257
|
-
this.infrastructureDrainPromise = undefined;
|
|
258
|
-
if ((this.pendingDomains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0) {
|
|
259
|
-
this.scheduleInfrastructure();
|
|
260
|
-
}
|
|
261
|
-
}
|
|
215
|
+
const drainClaim = async () => {
|
|
216
|
+
let ownerReceiveBatch = receiveBatch;
|
|
217
|
+
try {
|
|
218
|
+
ownerReceiveBatch ??= this.node.createReceiveBatch(MESH_DISPATCH_RECEIVE_CAPACITY, this.options.partCapacity ?? DEFAULT_MESH_PART_CAPACITY);
|
|
219
|
+
const capacity = owner.ordinaryIngressPreAdmitted === true ? MESH_DISPATCH_RECEIVE_CAPACITY : 1;
|
|
220
|
+
for (;;) {
|
|
221
|
+
let claimPermit = owner.terminalCompletion === true ||
|
|
222
|
+
owner.ordinaryIngressPreAdmitted === true ||
|
|
223
|
+
domain === service_runtime_contracts_1.ReadyDomain.Infrastructure
|
|
224
|
+
? undefined
|
|
225
|
+
: await this.acquirePermit();
|
|
262
226
|
try {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
const
|
|
272
|
-
|
|
273
|
-
|
|
227
|
+
if (this.capacityStop.signal.aborted)
|
|
228
|
+
return;
|
|
229
|
+
ownerReceiveBatch.reset(capacity);
|
|
230
|
+
const received = claim.recvBatch(ownerReceiveBatch, runtime_values_1.ZLINK_BACKEND_RECV_DONT_WAIT);
|
|
231
|
+
if (!received.ok)
|
|
232
|
+
break;
|
|
233
|
+
// This owner keeps its claim while it drains, so its records stay in FIFO order.
|
|
234
|
+
try {
|
|
235
|
+
for (const record of received.records) {
|
|
236
|
+
if (this.disposed)
|
|
237
|
+
break;
|
|
238
|
+
const permit = record.applicationJobPermit ?? claimPermit;
|
|
239
|
+
if (owner.ordinaryIngressPreAdmitted === true && permit === undefined) {
|
|
240
|
+
throw new Error('Pre-admitted raw ingress record lost its Application Job Queue permit.');
|
|
274
241
|
}
|
|
275
|
-
|
|
276
|
-
|
|
242
|
+
this.recordsSinceYield += 1;
|
|
243
|
+
const dispatch = async () => {
|
|
244
|
+
try {
|
|
245
|
+
await this.options.dispatch(owner, record);
|
|
246
|
+
await record.onTerminalCompletion?.();
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
this.reportDispatchError(error, meshDispatchFailureContext(record));
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
if (permit === undefined) {
|
|
253
|
+
await dispatch();
|
|
277
254
|
}
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
255
|
+
else {
|
|
256
|
+
if (domain === service_runtime_contracts_1.ReadyDomain.Application &&
|
|
257
|
+
record.applicationJobPermit === undefined)
|
|
258
|
+
permit.markApplicationQueued();
|
|
259
|
+
// The scope now owns this reservation, including failure
|
|
260
|
+
// and detached handler handoff. Only unused permits remain
|
|
261
|
+
// owned by the receive attempt's finally block.
|
|
262
|
+
if (permit === claimPermit)
|
|
263
|
+
claimPermit = undefined;
|
|
264
|
+
await (0, application_job_queue_scope_1.runWithApplicationJobPermit)(permit, dispatch);
|
|
265
|
+
}
|
|
266
|
+
const yieldTurn = this.yieldIfNeeded();
|
|
267
|
+
if (yieldTurn !== undefined)
|
|
268
|
+
await yieldTurn;
|
|
282
269
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
claimPermit = undefined;
|
|
292
|
-
await (0, application_job_queue_scope_1.runWithApplicationJobPermit)(permit, dispatch);
|
|
270
|
+
}
|
|
271
|
+
finally {
|
|
272
|
+
// Batch ownership includes records whose dispatch never began,
|
|
273
|
+
// including on failure or shutdown in the middle of the batch.
|
|
274
|
+
for (const record of received.records) {
|
|
275
|
+
for (const part of record.parts)
|
|
276
|
+
part.close();
|
|
277
|
+
record.releaseRetainedIngress?.();
|
|
293
278
|
}
|
|
294
|
-
const yieldTurn = this.yieldIfNeeded();
|
|
295
|
-
if (yieldTurn !== undefined)
|
|
296
|
-
await yieldTurn;
|
|
297
279
|
}
|
|
298
280
|
}
|
|
299
281
|
finally {
|
|
300
|
-
|
|
301
|
-
// including on failure or shutdown in the middle of the batch.
|
|
302
|
-
for (const record of received.records) {
|
|
303
|
-
for (const part of record.parts)
|
|
304
|
-
part.close();
|
|
305
|
-
record.releaseRetainedIngress?.();
|
|
306
|
-
}
|
|
282
|
+
claimPermit?.releaseAfterInternalProcessing();
|
|
307
283
|
}
|
|
308
284
|
}
|
|
309
|
-
finally {
|
|
310
|
-
claimPermit?.releaseAfterInternalProcessing();
|
|
311
|
-
}
|
|
312
285
|
}
|
|
286
|
+
finally {
|
|
287
|
+
claim.release();
|
|
288
|
+
if (receiveBatch === undefined)
|
|
289
|
+
ownerReceiveBatch?.close();
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
// An application worker drains the one owner it claimed. Infrastructure owners
|
|
293
|
+
// drain independently, so a suspended owner does not hold the other claims.
|
|
294
|
+
if (receiveBatch !== undefined) {
|
|
295
|
+
await drainClaim();
|
|
313
296
|
}
|
|
314
|
-
|
|
315
|
-
|
|
297
|
+
else {
|
|
298
|
+
const drain = drainClaim().catch((error) => this.reportDispatchError(error));
|
|
299
|
+
this.activeDrains.add(drain);
|
|
300
|
+
void drain.finally(() => this.activeDrains.delete(drain));
|
|
316
301
|
}
|
|
317
302
|
}
|
|
318
303
|
if (claimBudget !== undefined && claimsDrained >= claimBudget) {
|
|
@@ -373,8 +358,11 @@ function serviceWireCommand(record) {
|
|
|
373
358
|
if (record.parts.length !== 1)
|
|
374
359
|
return undefined;
|
|
375
360
|
const bytes = record.parts[0].data();
|
|
376
|
-
return bytes.byteLength >=
|
|
377
|
-
|
|
361
|
+
return bytes.byteLength >= service_wire_binary_primitives_1.SERVICE_WIRE_PREFIX_SIZE &&
|
|
362
|
+
bytes[0] === service_wire_constants_generated_1.SERVICE_WIRE_MAGIC[0] &&
|
|
363
|
+
bytes[1] === service_wire_constants_generated_1.SERVICE_WIRE_MAGIC[1] &&
|
|
364
|
+
bytes[service_wire_binary_primitives_1.SERVICE_WIRE_MAJOR_OFFSET] === service_wire_constants_generated_1.SERVICE_WIRE_MAJOR
|
|
365
|
+
? bytes[service_wire_binary_primitives_1.SERVICE_WIRE_COMMAND_OFFSET]
|
|
378
366
|
: undefined;
|
|
379
367
|
}
|
|
380
368
|
function yieldToEventLoop() {
|
|
@@ -40,6 +40,8 @@ export declare function submitBindingReply(operation: ZLinkBindingReplyOperation
|
|
|
40
40
|
export declare function submitBindingAsyncSend(operation: ZLinkBindingAsyncSendOperation, payload: unknown): Promise<void>;
|
|
41
41
|
export declare function submitBindingSyncSend(operation: ZLinkBindingAsyncSendOperation, payload: unknown): void;
|
|
42
42
|
export declare function submitBindingRequest(operation: ZLinkBindingRequestOperation, payload: unknown, timeoutMs: number | undefined): Promise<readonly unknown[]>;
|
|
43
|
+
export declare function bindingRequestReply(submission: import('@zlink-systems/zlink').RequestSubmission, deadlineMs: number | undefined): Promise<import('@zlink-systems/zlink').Message[]>;
|
|
44
|
+
export declare function closeBindingReply(replies: readonly import('@zlink-systems/zlink').Message[]): void;
|
|
43
45
|
/**
|
|
44
46
|
* Closes a binding handle once. An already closed or terminated handle counts as
|
|
45
47
|
* closed. A busy close propagates to the caller.
|
|
@@ -50,6 +52,6 @@ export declare function closeBindingHandle(target: {
|
|
|
50
52
|
export declare function isContextTerminatedError(error: unknown): boolean;
|
|
51
53
|
export declare function disableSocketLinger(target: unknown): void;
|
|
52
54
|
export declare function toNativeRoutingId(routingId: unknown): unknown;
|
|
53
|
-
export declare function translateBindingResultError(error: unknown): unknown;
|
|
55
|
+
export declare function translateBindingResultError(error: unknown, phase?: 'submit' | 'completion'): unknown;
|
|
54
56
|
export declare function toNativeActorRef(actor: unknown): unknown;
|
|
55
57
|
export {};
|
|
@@ -8,18 +8,23 @@ exports.submitBindingReply = submitBindingReply;
|
|
|
8
8
|
exports.submitBindingAsyncSend = submitBindingAsyncSend;
|
|
9
9
|
exports.submitBindingSyncSend = submitBindingSyncSend;
|
|
10
10
|
exports.submitBindingRequest = submitBindingRequest;
|
|
11
|
+
exports.bindingRequestReply = bindingRequestReply;
|
|
12
|
+
exports.closeBindingReply = closeBindingReply;
|
|
11
13
|
exports.closeBindingHandle = closeBindingHandle;
|
|
12
14
|
exports.isContextTerminatedError = isContextTerminatedError;
|
|
13
15
|
exports.disableSocketLinger = disableSocketLinger;
|
|
14
16
|
exports.toNativeRoutingId = toNativeRoutingId;
|
|
15
17
|
exports.translateBindingResultError = translateBindingResultError;
|
|
16
18
|
exports.toNativeActorRef = toNativeActorRef;
|
|
19
|
+
const node_os_1 = require("node:os");
|
|
20
|
+
const request_deadline_1 = require("../../messaging/request-deadline");
|
|
21
|
+
const submission_result_1 = require("../../messaging/submission-result");
|
|
17
22
|
const node_backend_adapter_1 = require("../node-backend-adapter");
|
|
18
23
|
const runtime_values_1 = require("../runtime-values");
|
|
19
|
-
const
|
|
24
|
+
const nativeErrnoValues = node_os_1.constants.errno;
|
|
20
25
|
exports.zlink = (0, node_backend_adapter_1.loadBinding)();
|
|
21
26
|
function isBindingNotFound(error) {
|
|
22
|
-
return error instanceof exports.zlink.
|
|
27
|
+
return error instanceof exports.zlink.ConnectError && error.result === exports.zlink.ConnectResult.NotFound;
|
|
23
28
|
}
|
|
24
29
|
function isNonBlockingRecvEmpty(error) {
|
|
25
30
|
return error instanceof exports.zlink.RecvError && error.result === exports.zlink.RecvResult.NoData;
|
|
@@ -32,7 +37,8 @@ function isRouteRecvRetryable(error) {
|
|
|
32
37
|
isNativeBadAddress(error)));
|
|
33
38
|
}
|
|
34
39
|
function isNativeBadAddress(error) {
|
|
35
|
-
return error.nativeErrno ===
|
|
40
|
+
return (error.nativeErrno === nativeErrnoValues.EFAULT ||
|
|
41
|
+
/Bad address/i.test(String(error.message ?? '')));
|
|
36
42
|
}
|
|
37
43
|
function submitBindingPublish(operation, payload) {
|
|
38
44
|
try {
|
|
@@ -50,7 +56,7 @@ function submitBindingPublish(operation, payload) {
|
|
|
50
56
|
translated.operation === 'submit' &&
|
|
51
57
|
(translated.result === runtime_values_1.SubmitResult.Backpressured ||
|
|
52
58
|
translated.result === runtime_values_1.SubmitResult.NotAdmitted)) {
|
|
53
|
-
(0, submission_result_1.
|
|
59
|
+
(0, submission_result_1.requireClassicFanoutCompletion)({ status: submission_result_1.ZLinkSubmitStatus.Backpressured }, 'Classic fanout publish');
|
|
54
60
|
}
|
|
55
61
|
throw translated;
|
|
56
62
|
}
|
|
@@ -70,6 +76,7 @@ function submitBindingReply(operation, payload) {
|
|
|
70
76
|
}
|
|
71
77
|
}
|
|
72
78
|
async function submitBindingAsyncSend(operation, payload) {
|
|
79
|
+
let submission;
|
|
73
80
|
try {
|
|
74
81
|
let current;
|
|
75
82
|
const parts = Array.isArray(payload) ? payload : [payload];
|
|
@@ -78,10 +85,18 @@ async function submitBindingAsyncSend(operation, payload) {
|
|
|
78
85
|
current = current === undefined ? operation.message(nativePart) : current.message(nativePart);
|
|
79
86
|
}
|
|
80
87
|
current ??= operation.message(Buffer.alloc(0));
|
|
81
|
-
|
|
88
|
+
submission = current.submit();
|
|
82
89
|
}
|
|
83
90
|
catch (error) {
|
|
84
|
-
throw translateBindingResultError(error);
|
|
91
|
+
throw translateBindingResultError(error, 'submit');
|
|
92
|
+
}
|
|
93
|
+
if (submission.result === runtime_values_1.SubmitResult.Backpressured) {
|
|
94
|
+
try {
|
|
95
|
+
await submission.admitted;
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
throw translateBindingResultError(error, 'completion');
|
|
99
|
+
}
|
|
85
100
|
}
|
|
86
101
|
}
|
|
87
102
|
function submitBindingSyncSend(operation, payload) {
|
|
@@ -100,6 +115,7 @@ function submitBindingSyncSend(operation, payload) {
|
|
|
100
115
|
}
|
|
101
116
|
}
|
|
102
117
|
async function submitBindingRequest(operation, payload, timeoutMs) {
|
|
118
|
+
const deadlineMs = timeoutMs === undefined ? undefined : performance.now() + timeoutMs;
|
|
103
119
|
try {
|
|
104
120
|
let current;
|
|
105
121
|
if (Array.isArray(payload)) {
|
|
@@ -116,12 +132,30 @@ async function submitBindingRequest(operation, payload, timeoutMs) {
|
|
|
116
132
|
if (timeoutMs !== undefined) {
|
|
117
133
|
current = current.timeout(timeoutMs);
|
|
118
134
|
}
|
|
119
|
-
return await current.submit()
|
|
135
|
+
return await bindingRequestReply(current.submit(), deadlineMs);
|
|
120
136
|
}
|
|
121
137
|
catch (error) {
|
|
122
138
|
throw translateBindingResultError(error);
|
|
123
139
|
}
|
|
124
140
|
}
|
|
141
|
+
async function bindingRequestReply(submission, deadlineMs) {
|
|
142
|
+
const reply = submission.reply;
|
|
143
|
+
if (submission.result === runtime_values_1.SubmitResult.Backpressured) {
|
|
144
|
+
try {
|
|
145
|
+
const [, replies] = await (0, request_deadline_1.waitRequestReply)(Promise.all([submission.admitted, reply]), 'Request', deadlineMs);
|
|
146
|
+
return replies;
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
void reply.then(closeBindingReply, () => undefined);
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return reply;
|
|
154
|
+
}
|
|
155
|
+
function closeBindingReply(replies) {
|
|
156
|
+
for (const reply of replies)
|
|
157
|
+
reply.close();
|
|
158
|
+
}
|
|
125
159
|
/**
|
|
126
160
|
* Closes a binding handle once. An already closed or terminated handle counts as
|
|
127
161
|
* closed. A busy close propagates to the caller.
|
|
@@ -139,7 +173,11 @@ function isSuccessfulOrAlreadyShutdownCloseError(error) {
|
|
|
139
173
|
return (isContextTerminatedError(error) ||
|
|
140
174
|
(error instanceof Error &&
|
|
141
175
|
'code' in error &&
|
|
142
|
-
[
|
|
176
|
+
[
|
|
177
|
+
exports.zlink.CloseResult.Ok,
|
|
178
|
+
exports.zlink.CloseResult.Shutdown,
|
|
179
|
+
exports.zlink.CloseResult.InvalidHandle
|
|
180
|
+
].includes(error.code)));
|
|
143
181
|
}
|
|
144
182
|
function isContextTerminatedError(error) {
|
|
145
183
|
return error instanceof Error && /context was terminated/i.test(error.message);
|
|
@@ -182,9 +220,12 @@ function toNativeMessageLike(message) {
|
|
|
182
220
|
}
|
|
183
221
|
return message;
|
|
184
222
|
}
|
|
185
|
-
function translateBindingResultError(error) {
|
|
223
|
+
function translateBindingResultError(error, phase = 'completion') {
|
|
186
224
|
if (error instanceof exports.zlink.SubmitError) {
|
|
187
|
-
return new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, {
|
|
225
|
+
return new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, {
|
|
226
|
+
cause: error,
|
|
227
|
+
phase
|
|
228
|
+
});
|
|
188
229
|
}
|
|
189
230
|
if (error instanceof exports.zlink.RequestError) {
|
|
190
231
|
return new runtime_values_1.ZLinkBackendResultError('request', error.result, error.nativeErrno, {
|
|
@@ -6,7 +6,7 @@ export declare class ZLinkDealerChannelClientTransport implements ZLinkChannelCl
|
|
|
6
6
|
private readonly dealer;
|
|
7
7
|
private readonly publisher?;
|
|
8
8
|
constructor(dealer: DealerSocket, publisher?: PubSocket | undefined);
|
|
9
|
-
send(channelName: string, packetName: string | undefined, message: Message,
|
|
9
|
+
send(channelName: string, packetName: string | undefined, message: Message, metadata?: ReadonlyMap<string, string>): Promise<ZLinkSubmitResult>;
|
|
10
10
|
request<TReply>(channelName: string, packetName: string | undefined, request: Message, timeoutMs: number | undefined, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>): Promise<TReply>;
|
|
11
11
|
tryPublish(channelName: string, topic: string, packetName: string | undefined, event: Message, metadata?: ReadonlyMap<string, string>): ZLinkSubmitResult;
|
|
12
12
|
publish(channelName: string, topic: string, packetName: string | undefined, event: Message, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>): Promise<ZLinkSubmitResult>;
|
|
@@ -16,8 +16,7 @@ class ZLinkDealerChannelClientTransport {
|
|
|
16
16
|
this.dealer = dealer;
|
|
17
17
|
this.publisher = publisher;
|
|
18
18
|
}
|
|
19
|
-
async send(channelName, packetName, message,
|
|
20
|
-
(0, abort_1.throwIfAborted)(signal);
|
|
19
|
+
async send(channelName, packetName, message, metadata = EMPTY_METADATA) {
|
|
21
20
|
// Call-scoped flow (spec 27 §4): the envelope flow pair does not outlive
|
|
22
21
|
// this outbound call.
|
|
23
22
|
await (0, flow_context_1.runWithOutboundFlow)(true, () => (0, channel_multipart_1.appendParts)(this.dealer.send(), (0, channel_envelope_1.encodeChannelEnvelopeParts)(3 /* ZLinkChannelMessageKind.Command */, channelName, packetName, message, undefined, undefined, undefined, undefined, true, metadata)).submit().admitted);
|
|
@@ -9,8 +9,8 @@ export declare class ZLinkNodeEventLoopPoller {
|
|
|
9
9
|
private readonly events;
|
|
10
10
|
private readableHandler;
|
|
11
11
|
private disposed;
|
|
12
|
-
constructor(socket: Socket, pollCompletion: boolean, readableHandler: () => void, pollRoute?: boolean);
|
|
13
|
-
setReadableHandler(handler: () => void): void;
|
|
12
|
+
constructor(socket: Socket, pollCompletion: boolean, readableHandler: (receiveReady: boolean, routeReady: boolean) => void, pollRoute?: boolean);
|
|
13
|
+
setReadableHandler(handler: (receiveReady: boolean, routeReady: boolean) => void): void;
|
|
14
14
|
dispose(): void;
|
|
15
15
|
private readonly onReady;
|
|
16
16
|
}
|