@zlink-systems/framework 0.25.0 → 0.27.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/Channels/IZLinkFanoutClient.d.ts +0 -6
- 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/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 -0
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
- 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/RouteMesh/RuntimeTopology.d.ts +8 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +5 -0
- package/dist/internal.js +16 -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 +28 -0
- package/dist/runtime/activation-admission.js +57 -0
- 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 +42 -143
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +19 -17
- package/dist/runtime/actors/actor-handoff.d.ts +13 -7
- package/dist/runtime/actors/actor-handoff.js +36 -25
- 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 +85 -123
- 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 +3 -3
- package/dist/runtime/actors/actor-remote-joiner.js +11 -17
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
- package/dist/runtime/actors/actor-request-deadline.js +31 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
- 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/actor-source-transfer.d.ts +5 -5
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
- package/dist/runtime/actors/deferred-join-completion.js +21 -0
- package/dist/runtime/actors/index.d.ts +10 -8
- package/dist/runtime/actors/index.js +101 -73
- 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 +7 -1
- package/dist/runtime/admission.js +11 -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 +8 -33
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
- 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-factory.d.ts +1 -2
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
- package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +13 -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 -9
- package/dist/runtime/channels/channel-clients.js +68 -60
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.js +47 -29
- package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
- package/dist/runtime/channels/channel-outbound-operations.js +9 -18
- 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 +2 -5
- package/dist/runtime/channels/channel-runtime-manager.js +4 -12
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
- package/dist/runtime/channels/channel-socket-registry.js +296 -235
- package/dist/runtime/channels/channel-transports.d.ts +11 -20
- package/dist/runtime/channels/channel-transports.js +68 -47
- 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 +133 -81
- 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.js +3 -2
- 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 +22 -9
- package/dist/runtime/execution/index.js +107 -37
- package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
- package/dist/runtime/execution/serial-execution-queue.js +99 -26
- 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/listener-records.d.ts +11 -0
- package/dist/runtime/foundation/listener-records.js +20 -0
- 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 +18 -26
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
- 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.d.ts +1 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +30 -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 +23 -8
- 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-coordinator.d.ts +9 -0
- package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
- package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
- 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 -19
- 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 +28 -24
- package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
- package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
- package/dist/runtime/foundation/service-topology-registry.js +22 -61
- 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 +9 -6
- package/dist/runtime/host/actor-packet-relay.js +48 -91
- 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 +28 -28
- package/dist/runtime/host/actor-transfer-runtime.js +210 -256
- 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 +19 -14
- package/dist/runtime/host/index.js +234 -175
- 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 +11 -23
- package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
- package/dist/runtime/host/route-mesh-runtime.js +178 -257
- 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 +71 -38
- package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
- package/dist/runtime/host/spot-address-transport.d.ts +2 -3
- package/dist/runtime/host/spot-address-transport.js +34 -136
- 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 -7
- package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
- package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
- package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
- 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 +79 -27
- 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 +5 -10
- package/dist/runtime/locations/lifecycle.js +4 -33
- 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 +303 -332
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +44 -30
- 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 +8 -2
- package/dist/runtime/locations/spot-location-claims.js +40 -23
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/submission-result.d.ts +3 -0
- package/dist/runtime/messaging/submission-result.js +48 -0
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
- package/dist/runtime/spots/index.d.ts +29 -29
- package/dist/runtime/spots/index.js +441 -313
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
- package/dist/runtime/spots/spot-activation-registry.js +27 -60
- package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
- package/dist/runtime/spots/spot-activation-state.js +4 -17
- package/dist/runtime/spots/spot-activation.d.ts +10 -9
- package/dist/runtime/spots/spot-activation.js +103 -81
- 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 +5 -55
- package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
- package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
- package/dist/runtime/spots/spot-actor-membership.js +44 -53
- 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 +3 -4
- package/dist/runtime/spots/spot-entry-activation.js +9 -21
- 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 +6 -5
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
- package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +10 -37
- 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 -2
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
- 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 +4 -20
- package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
- package/dist/runtime/spots/spot-serial-executor.js +9 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
- package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
- package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -19
- package/dist/runtime/streams/index.d.ts +15 -14
- package/dist/runtime/streams/index.js +38 -39
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +17 -8
- package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
- 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 +1 -1
- package/dist/runtime/streams/session-calls.js +5 -4
- package/dist/runtime/streams/session-context.d.ts +6 -6
- package/dist/runtime/streams/session-context.js +22 -4
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/session-serial-executor.js +2 -2
- 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/Channels/IZLinkFanoutClient.ts +0 -7
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -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 -68
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
- 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/RouteMesh/RuntimeTopology.ts +10 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- package/src/internal.ts +15 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +72 -0
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +77 -204
- package/src/runtime/actors/actor-context.ts +45 -39
- package/src/runtime/actors/actor-handoff.ts +55 -45
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +174 -215
- 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 +15 -36
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/actor-source-transfer.ts +5 -18
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +44 -0
- package/src/runtime/actors/index.ts +122 -88
- 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 +13 -2
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +15 -42
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
- package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
- package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
- package/src/runtime/backend/raw-binding-port.ts +14 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +58 -29
- package/src/runtime/channels/channel-outbound-operations.ts +10 -31
- 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 +8 -15
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +369 -262
- package/src/runtime/channels/channel-transports.ts +161 -115
- 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 +175 -106
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +5 -2
- 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 +116 -38
- package/src/runtime/execution/serial-execution-queue.ts +179 -34
- 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/listener-records.ts +21 -0
- 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 +170 -571
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +41 -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 +30 -19
- 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-coordinator.ts +13 -0
- package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
- 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 -25
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
- package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
- package/src/runtime/foundation/service-topology-registry.ts +30 -79
- 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 +57 -147
- 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 +266 -418
- 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 +408 -312
- 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 +12 -44
- package/src/runtime/host/route-mesh-runtime.ts +236 -275
- 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 +1161 -904
- package/src/runtime/host/spot-address-transport.ts +73 -195
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
- package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
- package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
- 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 +110 -31
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +16 -45
- 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 +450 -478
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +90 -58
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +54 -26
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/submission-result.ts +57 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
- package/src/runtime/spots/index.ts +687 -437
- package/src/runtime/spots/spot-activation-registry.ts +42 -71
- package/src/runtime/spots/spot-activation-state.ts +4 -16
- package/src/runtime/spots/spot-activation.ts +167 -115
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
- package/src/runtime/spots/spot-actor-membership.ts +107 -75
- 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 -33
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +29 -21
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
- package/src/runtime/spots/spot-outbound.ts +47 -68
- 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 -6
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +10 -43
- package/src/runtime/spots/spot-serial-executor.ts +10 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +23 -37
- package/src/runtime/streams/index.ts +102 -88
- package/src/runtime/streams/managed-stream.ts +29 -10
- package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
- 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 +6 -5
- package/src/runtime/streams/session-context.ts +54 -10
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/session-serial-executor.ts +2 -2
- 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/deferred-join-accepted-journal.d.ts +0 -47
- package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
- 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/deferred-join-accepted-journal.ts +0 -1346
- 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): {
|
|
@@ -210,7 +211,7 @@ export interface ZLinkBackendMeshNode {
|
|
|
210
211
|
timeoutMs?: number;
|
|
211
212
|
applicationMetadata?: Buffer;
|
|
212
213
|
}): MeshOperationId;
|
|
213
|
-
sendActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, parts: MessageLike | readonly MessageLike[], flags?: number
|
|
214
|
+
sendActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, parts: MessageLike | readonly MessageLike[], flags?: number): Promise<SubmitResult>;
|
|
214
215
|
closeActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, timeoutMs?: number): MeshOperationId;
|
|
215
216
|
leaveActor(actor: ZLinkBackendActorRef, expectedMembershipEpoch: bigint, timeoutMs?: number): MeshOperationId;
|
|
216
217
|
setReadyHandler(handler: (readyDomains: number) => number): void;
|
|
@@ -237,14 +238,8 @@ export interface ZLinkBackendActorRef {
|
|
|
237
238
|
readonly actorId: string;
|
|
238
239
|
readonly generation: bigint;
|
|
239
240
|
}
|
|
240
|
-
export interface ZLinkBackendActorSessionSendFence {
|
|
241
|
-
readonly targetNodeGeneration: bigint;
|
|
242
|
-
readonly authorityOwnerGeneration: bigint;
|
|
243
|
-
readonly ownerLeaseGeneration: bigint;
|
|
244
|
-
}
|
|
245
241
|
export interface ZLinkBackendActorSessionNode {
|
|
246
|
-
|
|
247
|
-
sendActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, parts: readonly Message[], flags: number, actorFence?: ZLinkBackendActorSessionSendFence): Promise<ZLinkSubmitResult>;
|
|
242
|
+
sendActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, parts: readonly Message[], flags: number): Promise<ZLinkSubmitResult>;
|
|
248
243
|
closeActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, timeoutMs: number, signal?: AbortSignal): Promise<void>;
|
|
249
244
|
}
|
|
250
245
|
export interface ZLinkBackendActorRecvInfo {
|
|
@@ -254,24 +249,6 @@ export interface ZLinkBackendActorRecvInfo {
|
|
|
254
249
|
readonly requestId: bigint;
|
|
255
250
|
readonly flags: number;
|
|
256
251
|
}
|
|
257
|
-
export interface ZLinkBackendActorJoinInfo {
|
|
258
|
-
readonly sourceActor: ZLinkBackendActorRef;
|
|
259
|
-
readonly targetActor: ZLinkBackendActorRef;
|
|
260
|
-
readonly sourceNodeRid: RoutingId;
|
|
261
|
-
readonly sourceSpotId: RoutingId;
|
|
262
|
-
readonly targetNodeRid: RoutingId;
|
|
263
|
-
readonly targetSpotId: RoutingId;
|
|
264
|
-
readonly joinEpoch: bigint;
|
|
265
|
-
readonly flags: number;
|
|
266
|
-
}
|
|
267
|
-
export interface ZLinkBackendActorJoinRequest {
|
|
268
|
-
readonly info: ZLinkBackendActorJoinInfo;
|
|
269
|
-
readonly message: Message;
|
|
270
|
-
}
|
|
271
|
-
export interface ZLinkBackendActorJoinReplyOperation {
|
|
272
|
-
message(message: Message): ZLinkBackendActorJoinReplyOperation;
|
|
273
|
-
submit(): void;
|
|
274
|
-
}
|
|
275
252
|
export interface ZLinkBackendSpotDispatchInfo {
|
|
276
253
|
readonly event: ZLinkBackendSpotDispatchEvent;
|
|
277
254
|
readonly subjectKind?: number;
|
|
@@ -280,6 +257,7 @@ export interface ZLinkBackendSpotDispatchInfo {
|
|
|
280
257
|
}
|
|
281
258
|
export interface ZLinkBackendSocketMonitorEvent {
|
|
282
259
|
readonly nativeEvent: MonitorEventType;
|
|
260
|
+
readonly readyEdge: boolean;
|
|
283
261
|
readonly routingId?: unknown;
|
|
284
262
|
readonly localAddr: string;
|
|
285
263
|
readonly remoteAddr: string;
|
|
@@ -354,6 +332,7 @@ export interface ZLinkBackendRouterSocket extends ZLinkBackendConnectableSocket
|
|
|
354
332
|
reply(routingId: RoutingId, replyToken: unknown, message: Message | readonly Message[]): void;
|
|
355
333
|
}
|
|
356
334
|
export interface ZLinkBackendPublisherSocket extends ZLinkBackendSocket {
|
|
335
|
+
sendTimeoutMs: number;
|
|
357
336
|
sendHighWaterMark: number;
|
|
358
337
|
noDrop: boolean;
|
|
359
338
|
publish(topic: string, message: Message | readonly Message[]): void;
|
|
@@ -446,15 +425,12 @@ export interface ZLinkBackendSpot extends ZLinkBackendObject {
|
|
|
446
425
|
recvActorLifecycle(flags: ZLinkBackendRecvFlags): unknown | null;
|
|
447
426
|
drainReply(): number;
|
|
448
427
|
drainChannelReply(subjectHandle: bigint): number;
|
|
449
|
-
recvRoute(result: Received, flags: ZLinkBackendRecvFlags): boolean;
|
|
450
428
|
setDispatchHandler(handler: (info: ZLinkBackendSpotDispatchInfo) => void): void;
|
|
451
429
|
requestToChannel(channelName: string, payload: Message | readonly Message[], timeoutMs?: number): Promise<readonly Message[]>;
|
|
452
430
|
sendToChannel(channelName: string, payload: Message | readonly Message[]): Promise<void>;
|
|
453
431
|
publish(topic: string, payload: Message | readonly Message[], flags: ZLinkBackendSendFlags): boolean;
|
|
454
432
|
sendToSpot(targetRid: RoutingId, spotId: RoutingId, payload: Message | readonly Message[]): Promise<void>;
|
|
455
433
|
requestToSpot(targetRid: RoutingId, spotId: RoutingId, payload: Message | readonly Message[], timeoutMs?: number): Promise<readonly Message[]>;
|
|
456
|
-
recvActorJoin(flags: ZLinkBackendRecvFlags): ZLinkBackendActorJoinRequest | null;
|
|
457
|
-
replyActorJoin(request: ZLinkBackendActorJoinRequest, joinResultCode: number): ZLinkBackendActorJoinReplyOperation;
|
|
458
434
|
dispose(): Promise<void>;
|
|
459
435
|
}
|
|
460
436
|
export interface ZLinkChannelBackendAdapter {
|
|
@@ -486,7 +462,6 @@ export interface ZLinkMonitoringBackendAdapter {
|
|
|
486
462
|
openSocketMonitor(socket: ZLinkBackendSocket): ZLinkBackendSocketMonitor;
|
|
487
463
|
}
|
|
488
464
|
export interface ZLinkBackendAdapterFactory {
|
|
489
|
-
createReceived(): Received;
|
|
490
465
|
createTopicMessage(): TopicMessage;
|
|
491
466
|
createChannelAdapter(): ZLinkChannelBackendAdapter;
|
|
492
467
|
createMeshAdapter(): ZLinkMeshBackendAdapter;
|
|
@@ -1,36 +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
|
-
const routing_id_1 = require("../routing-id");
|
|
8
6
|
function meshActorSessionNodeAdapter(node, completions) {
|
|
9
7
|
return {
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
return (0,
|
|
13
|
-
? status.lifecycleGeneration
|
|
14
|
-
: undefined;
|
|
15
|
-
},
|
|
16
|
-
async sendActorBoundSession(actor, expectedBindingGeneration, parts, flags, actorFence) {
|
|
17
|
-
const result = await node.sendActorBoundSession(actor, expectedBindingGeneration, parts, flags, actorFence);
|
|
18
|
-
switch (result) {
|
|
19
|
-
case runtime_values_1.SubmitResult.Ok:
|
|
20
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
21
|
-
case runtime_values_1.SubmitResult.Backpressured:
|
|
22
|
-
case runtime_values_1.SubmitResult.NotAdmitted:
|
|
23
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Backpressured };
|
|
24
|
-
case runtime_values_1.SubmitResult.NotFound:
|
|
25
|
-
case runtime_values_1.SubmitResult.InvalidState:
|
|
26
|
-
return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
|
|
27
|
-
case runtime_values_1.SubmitResult.NotConnected:
|
|
28
|
-
return { status: submission_result_1.ZLinkSubmitStatus.RouteNotConnected };
|
|
29
|
-
case runtime_values_1.SubmitResult.Terminated:
|
|
30
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Shutdown };
|
|
31
|
-
default:
|
|
32
|
-
throw new Error(`Actor bound-session send failed with result '${result}'.`);
|
|
33
|
-
}
|
|
8
|
+
async sendActorBoundSession(actor, expectedBindingGeneration, parts, flags) {
|
|
9
|
+
const result = await node.sendActorBoundSession(actor, expectedBindingGeneration, parts, flags);
|
|
10
|
+
return (0, submission_result_1.classifySubmitResult)(result, 'Actor bound-session send');
|
|
34
11
|
},
|
|
35
12
|
async closeActorBoundSession(actor, expectedBindingGeneration, timeoutMs, signal) {
|
|
36
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() {
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { TopicMessage } from '@zlink-systems/zlink';
|
|
2
|
-
import type { ZLinkBackendAdapterFactory,
|
|
2
|
+
import type { ZLinkBackendAdapterFactory, ZLinkChannelBackendAdapter, ZLinkMonitoringBackendAdapter, ZLinkStreamBackendAdapter } from '../contracts';
|
|
3
3
|
import { ZLinkNodeMeshBackendAdapter } from './node-mesh-backend-adapter';
|
|
4
4
|
export declare class ZLinkNodeBackendAdapterFactory implements ZLinkBackendAdapterFactory {
|
|
5
|
-
createReceived(): ZLinkBackendReceived;
|
|
6
5
|
createTopicMessage(): TopicMessage;
|
|
7
6
|
createChannelAdapter(): ZLinkChannelBackendAdapter;
|
|
8
7
|
createMeshAdapter(): ZLinkNodeMeshBackendAdapter;
|
|
@@ -6,9 +6,6 @@ const node_monitor_backend_adapter_1 = require("./node-monitor-backend-adapter")
|
|
|
6
6
|
const node_socket_backend_adapter_1 = require("./node-socket-backend-adapter");
|
|
7
7
|
const node_mesh_backend_adapter_1 = require("./node-mesh-backend-adapter");
|
|
8
8
|
class ZLinkNodeBackendAdapterFactory {
|
|
9
|
-
createReceived() {
|
|
10
|
-
return new node_backend_adapter_support_1.zlink.Received();
|
|
11
|
-
}
|
|
12
9
|
createTopicMessage() {
|
|
13
10
|
return new node_backend_adapter_support_1.zlink.TopicMessage();
|
|
14
11
|
}
|
|
@@ -51,7 +48,8 @@ class ZLinkNodeChannelBackendAdapter {
|
|
|
51
48
|
}
|
|
52
49
|
class ZLinkNodeStreamBackendAdapter {
|
|
53
50
|
createStreamSocket(context) {
|
|
54
|
-
const
|
|
51
|
+
const nodeContext = asNodeContext(context);
|
|
52
|
+
const socket = node_backend_adapter_support_1.zlink.createStreamSocket(nodeContext);
|
|
55
53
|
socket.options.recvMode = node_backend_adapter_support_1.zlink.StreamRecvMode.Packet;
|
|
56
54
|
return (0, node_socket_backend_adapter_1.wrapSocket)(socket, true);
|
|
57
55
|
}
|
|
@@ -93,20 +91,8 @@ class ZLinkNodeBackendContext {
|
|
|
93
91
|
this.nativeInstance.resetCoreHwmBudgetMetrics();
|
|
94
92
|
}
|
|
95
93
|
async dispose() {
|
|
96
|
-
//
|
|
97
|
-
|
|
98
|
-
// (`zlink_ctx_shutdown` then `zlink_ctx_term`). Without the shutdown signal
|
|
99
|
-
// termination can block forever waiting on the reaper even after every
|
|
100
|
-
// socket this runtime owns has been closed.
|
|
101
|
-
try {
|
|
102
|
-
this.nativeInstance.shutdown();
|
|
103
|
-
}
|
|
104
|
-
catch (error) {
|
|
105
|
-
if (!(0, node_backend_adapter_support_1.isContextTerminatedError)(error)) {
|
|
106
|
-
throw error;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
await (0, node_backend_adapter_support_1.closeWithBusyRetry)(this.nativeInstance);
|
|
94
|
+
// Binding Context.close() shuts down and then terminates the native context.
|
|
95
|
+
(0, node_backend_adapter_support_1.closeBindingHandle)(this.nativeInstance);
|
|
110
96
|
}
|
|
111
97
|
close() {
|
|
112
98
|
this.nativeInstance.close();
|
|
@@ -35,18 +35,21 @@ interface ZLinkBindingRequestSubmitOperation {
|
|
|
35
35
|
}
|
|
36
36
|
export declare function isBindingNotFound(error: unknown): boolean;
|
|
37
37
|
export declare function isRouteRecvRetryable(error: unknown): boolean;
|
|
38
|
-
export declare function isPollerInterruptedError(error: unknown): boolean;
|
|
39
38
|
export declare function submitBindingPublish(operation: ZLinkBindingPublishOperation, payload: unknown): void;
|
|
40
39
|
export declare function submitBindingReply(operation: ZLinkBindingReplyOperation, payload: unknown): void;
|
|
41
40
|
export declare function submitBindingAsyncSend(operation: ZLinkBindingAsyncSendOperation, payload: unknown): Promise<void>;
|
|
42
41
|
export declare function submitBindingSyncSend(operation: ZLinkBindingAsyncSendOperation, payload: unknown): void;
|
|
43
42
|
export declare function submitBindingRequest(operation: ZLinkBindingRequestOperation, payload: unknown, timeoutMs: number | undefined): Promise<readonly unknown[]>;
|
|
44
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Closes a binding handle once. An already closed or terminated handle counts as
|
|
45
|
+
* closed. A busy close propagates to the caller.
|
|
46
|
+
*/
|
|
47
|
+
export declare function closeBindingHandle(target: {
|
|
45
48
|
close(): void;
|
|
46
|
-
}):
|
|
49
|
+
}): void;
|
|
47
50
|
export declare function isContextTerminatedError(error: unknown): boolean;
|
|
48
51
|
export declare function disableSocketLinger(target: unknown): void;
|
|
49
52
|
export declare function toNativeRoutingId(routingId: unknown): unknown;
|
|
50
|
-
export declare function translateBindingResultError(error: unknown): unknown;
|
|
53
|
+
export declare function translateBindingResultError(error: unknown, phase?: 'submit' | 'completion'): unknown;
|
|
51
54
|
export declare function toNativeActorRef(actor: unknown): unknown;
|
|
52
55
|
export {};
|