@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
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ZLinkBoundActorRelaySender = void 0;
|
|
4
|
-
const
|
|
3
|
+
exports.ZLinkBoundActorRelaySender = exports.DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS = void 0;
|
|
4
|
+
const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
|
|
5
|
+
const diagnostics_1 = require("../diagnostics");
|
|
5
6
|
const payload_codec_1 = require("../messaging/payload-codec");
|
|
6
|
-
const
|
|
7
|
-
const abort_1 = require("../abort");
|
|
8
|
-
const execution_1 = require("../execution");
|
|
7
|
+
const submission_result_1 = require("../messaging/submission-result");
|
|
9
8
|
const actor_session_binding_registry_1 = require("./actor-session-binding-registry");
|
|
10
9
|
const actor_session_lifecycle_coordinator_1 = require("./actor-session-lifecycle-coordinator");
|
|
11
10
|
const managed_stream_1 = require("./managed-stream");
|
|
11
|
+
const protocol_1 = require("./protocol");
|
|
12
|
+
exports.DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS = 2000;
|
|
12
13
|
class ZLinkBoundActorRelaySender {
|
|
13
14
|
routes;
|
|
14
15
|
frameMessages;
|
|
@@ -20,51 +21,71 @@ class ZLinkBoundActorRelaySender {
|
|
|
20
21
|
this.options = options;
|
|
21
22
|
this.lifecycle = lifecycle;
|
|
22
23
|
}
|
|
23
|
-
async relay(actor, payload,
|
|
24
|
+
async relay(actor, payload, dispatchHeader) {
|
|
24
25
|
const header = dispatchHeader === undefined
|
|
25
26
|
? await this.currentHeader(actor)
|
|
26
27
|
: await this.requireDispatchHeader(actor, dispatchHeader);
|
|
27
28
|
if (header.kind === protocol_1.ZLinkStreamMessageKind.Request && header.requestSeq !== undefined) {
|
|
28
29
|
const operation = async () => {
|
|
29
|
-
const admission = await this.routes.beginAcceptedRequestFrameWhenReady(actor.actorId, actor.bindingToken
|
|
30
|
+
const admission = await this.routes.beginAcceptedRequestFrameWhenReady(actor.actorId, actor.bindingToken);
|
|
30
31
|
try {
|
|
31
|
-
return await this.relayAcceptedFrame(actor, payload,
|
|
32
|
+
return await this.relayAcceptedFrame(actor, payload, header, admission);
|
|
32
33
|
}
|
|
33
34
|
finally {
|
|
34
35
|
await admission.complete();
|
|
35
36
|
}
|
|
36
37
|
};
|
|
37
|
-
if ((await this.routes.isSealed(actor.actorId)) &&
|
|
38
|
-
(0, execution_1.captureZLinkExecutionTurn)() !== undefined) {
|
|
39
|
-
void operation().catch(() => undefined);
|
|
40
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
41
|
-
}
|
|
42
38
|
return await operation();
|
|
43
39
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
40
|
+
const held = await this.routes.acceptOneWay(actor.actorId, actor.bindingToken, () => {
|
|
41
|
+
let heldMessage = (0, payload_codec_1.encodeFrameworkPayloadMessage)(payload, this.options.messageSerializers);
|
|
42
|
+
return {
|
|
43
|
+
deliver: async () => {
|
|
44
|
+
try {
|
|
45
|
+
const result = await this.routes.runAcceptedFrameWhenReady(actor.actorId, actor.bindingToken, () => this.relayAcceptedFrame(actor, payload, header, undefined, heldMessage));
|
|
46
|
+
if (result.status !== submission_result_1.ZLinkSubmitStatus.Submitted) {
|
|
47
|
+
this.traceHeldDrop(header, result.status === submission_result_1.ZLinkSubmitStatus.Backpressured ||
|
|
48
|
+
result.status === submission_result_1.ZLinkSubmitStatus.TimedOut
|
|
49
|
+
? 'backpressure'
|
|
50
|
+
: result.status === submission_result_1.ZLinkSubmitStatus.Shutdown
|
|
51
|
+
? 'shutdown'
|
|
52
|
+
: 'stale_target');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
heldMessage?.close();
|
|
57
|
+
heldMessage = undefined;
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
drop: (reason, error) => {
|
|
61
|
+
heldMessage?.close();
|
|
62
|
+
heldMessage = undefined;
|
|
63
|
+
this.traceHeldDrop(header, reason, error);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
if (held) {
|
|
60
68
|
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
61
69
|
}
|
|
62
|
-
return this.routes.runAcceptedFrameWhenReady(actor.actorId, actor.bindingToken, () => this.relayAcceptedFrame(actor, payload
|
|
70
|
+
return this.routes.runAcceptedFrameWhenReady(actor.actorId, actor.bindingToken, () => this.relayAcceptedFrame(actor, payload));
|
|
63
71
|
}
|
|
64
|
-
|
|
72
|
+
traceHeldDrop(header, reason, error) {
|
|
73
|
+
(0, diagnostics_1.flowIfEnabled)(this.options.dispatchErrors?.flow, ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped, undefined, header.flowId)?.trace({
|
|
74
|
+
outcome: ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped,
|
|
75
|
+
surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.StreamSession,
|
|
76
|
+
messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send,
|
|
77
|
+
packetName: header.name,
|
|
78
|
+
flowId: header.flowId,
|
|
79
|
+
flowOrigin: header.flowOrigin,
|
|
80
|
+
correlationId: header.correlationId,
|
|
81
|
+
errorReason: reason,
|
|
82
|
+
...(error instanceof Error ? { errorType: error.name, errorMessage: error.message } : {})
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
async relayAcceptedFrame(actor, payload, header, requestAdmission, acceptedPayload) {
|
|
65
86
|
const activeHeader = header ?? (await this.currentHeader(actor));
|
|
66
87
|
const started = await this.lifecycle.run(actor.actorId, async () => {
|
|
67
|
-
const completion = this.relayInsideLifecycle(actor, payload,
|
|
88
|
+
const completion = this.relayInsideLifecycle(actor, payload, activeHeader, requestAdmission, acceptedPayload);
|
|
68
89
|
if (activeHeader.kind === protocol_1.ZLinkStreamMessageKind.Request &&
|
|
69
90
|
activeHeader.requestSeq !== undefined) {
|
|
70
91
|
// A routed REQUEST only needs this lane while its ordered submission
|
|
@@ -96,16 +117,15 @@ class ZLinkBoundActorRelaySender {
|
|
|
96
117
|
}
|
|
97
118
|
return header;
|
|
98
119
|
}
|
|
99
|
-
async relayInsideLifecycle(actor, payload,
|
|
120
|
+
async relayInsideLifecycle(actor, payload, currentHeader, requestAdmission, acceptedPayload) {
|
|
100
121
|
const header = currentHeader ?? (await this.currentHeader(actor));
|
|
101
|
-
const held = requestAdmission?.beginSubmission(
|
|
122
|
+
const held = requestAdmission?.beginSubmission();
|
|
102
123
|
if (held !== undefined)
|
|
103
124
|
await held;
|
|
104
|
-
(0,
|
|
105
|
-
const payloadMessage = (0, payload_codec_1.encodeFrameworkPayloadMessage)(payload, this.options.messageSerializers);
|
|
125
|
+
const payloadMessage = acceptedPayload ?? (0, payload_codec_1.encodeFrameworkPayloadMessage)(payload, this.options.messageSerializers);
|
|
106
126
|
try {
|
|
107
127
|
if (this.options.relay !== undefined) {
|
|
108
|
-
const handled = await this.options.relay(actor, header, payloadMessage
|
|
128
|
+
const handled = await this.options.relay(actor, header, payloadMessage);
|
|
109
129
|
if (handled) {
|
|
110
130
|
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
111
131
|
}
|
|
@@ -117,7 +137,10 @@ class ZLinkBoundActorRelaySender {
|
|
|
117
137
|
const headerMessage = this.frameMessages.createBinaryMessage((0, protocol_1.encodeStreamHeader)(header));
|
|
118
138
|
const framePayloadMessage = this.frameMessages.createBinaryMessage((0, protocol_1.messageToBytes)(payloadMessage));
|
|
119
139
|
try {
|
|
120
|
-
return await route.context.stream.submitBoundActor(actor.actorId, [
|
|
140
|
+
return await route.context.stream.submitBoundActor(actor.actorId, [
|
|
141
|
+
headerMessage,
|
|
142
|
+
framePayloadMessage
|
|
143
|
+
]);
|
|
121
144
|
}
|
|
122
145
|
finally {
|
|
123
146
|
headerMessage.close();
|
|
@@ -125,7 +148,8 @@ class ZLinkBoundActorRelaySender {
|
|
|
125
148
|
}
|
|
126
149
|
}
|
|
127
150
|
finally {
|
|
128
|
-
|
|
151
|
+
if (acceptedPayload === undefined)
|
|
152
|
+
payloadMessage.close();
|
|
129
153
|
}
|
|
130
154
|
}
|
|
131
155
|
async notifyDisconnected(actor, signal) {
|
|
@@ -141,13 +165,13 @@ class ZLinkBoundActorRelaySender {
|
|
|
141
165
|
if (unbindNative &&
|
|
142
166
|
detached.bindingToken === actor.bindingToken &&
|
|
143
167
|
detached.context.stream instanceof managed_stream_1.ZLinkManagedStream) {
|
|
144
|
-
await detached.context.stream.unbindActor(actor.actorId, this.options.actorBindTimeoutMs ??
|
|
168
|
+
await detached.context.stream.unbindActor(actor.actorId, this.options.actorBindTimeoutMs ?? exports.DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS, signal);
|
|
145
169
|
}
|
|
146
170
|
await this.options.notifyDisconnected?.(actor, signal);
|
|
147
171
|
}
|
|
148
172
|
async notifyPhysicalDisconnect(context) {
|
|
149
173
|
const snapshot = [...context.boundActors];
|
|
150
|
-
const timeoutMs = this.options.actorBindTimeoutMs ??
|
|
174
|
+
const timeoutMs = this.options.actorBindTimeoutMs ?? exports.DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS;
|
|
151
175
|
await Promise.allSettled(snapshot.map(async (actor) => {
|
|
152
176
|
const detached = await this.lifecycle.run(actor.actorId, async () => {
|
|
153
177
|
const route = await this.routes.route(actor.actorId);
|
|
@@ -5,6 +5,7 @@ import { ZLinkActorSessionBindingRegistry } from './actor-session-binding-regist
|
|
|
5
5
|
import type { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './session-context';
|
|
6
6
|
import { ZLinkStreamFrameMessageFactory } from './stream-frame-factory';
|
|
7
7
|
import { ZLinkManagedStream } from './managed-stream';
|
|
8
|
+
import type { ZLinkSessionBindingIdentity } from './stream-binding-runtime-ports';
|
|
8
9
|
export interface ZLinkBoundSessionTransport {
|
|
9
10
|
send(actorId: string, message: unknown, options: ZLinkBoundSessionSendOptions): Promise<ZLinkSubmitResult>;
|
|
10
11
|
disconnect(actorId: string, options: ZLinkBoundSessionDisconnectOptions): Promise<void>;
|
|
@@ -39,6 +40,12 @@ export declare class ZLinkBoundSessionService {
|
|
|
39
40
|
sendNativeBoundSessionError(node: ZLinkBackendActorSessionNode, actorRef: ActorRef, packetName: string, requestSeq: bigint, error: unknown, metadata: ReadonlyMap<string, string>, signal?: AbortSignal): Promise<void>;
|
|
40
41
|
disconnectNativeBoundSession(node: ZLinkBackendActorSessionNode, actorRef: ActorRef, signal?: AbortSignal): Promise<void>;
|
|
41
42
|
disconnectBoundSession(actorId: string, signal?: AbortSignal): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Closes the physical Session of one exact binding after its relocation
|
|
45
|
+
* failed (Session–Actor binding §8.1). A newer binding of the same Actor is
|
|
46
|
+
* not selected.
|
|
47
|
+
*/
|
|
48
|
+
closeSessionBinding(actorId: string, expected: ZLinkSessionBindingIdentity, signal?: AbortSignal): Promise<void>;
|
|
42
49
|
relayRemoteBoundSessionBind(stream: ZLinkManagedStream, actorRef: ActorRef): Promise<void>;
|
|
43
50
|
private writeLocalBoundSessionFrame;
|
|
44
51
|
private sendNativeBoundSessionPayload;
|
|
@@ -7,6 +7,7 @@ const submission_result_1 = require("../messaging/submission-result");
|
|
|
7
7
|
const abort_1 = require("../abort");
|
|
8
8
|
const protocol_1 = require("./protocol");
|
|
9
9
|
const bound_session_response_target_1 = require("./bound-session-response-target");
|
|
10
|
+
const spot_remote_codec_1 = require("../spots/spot-remote-codec");
|
|
10
11
|
const ZLINK_SEND_DONT_WAIT = 1;
|
|
11
12
|
class ZLinkBoundSessionService {
|
|
12
13
|
routes;
|
|
@@ -46,7 +47,7 @@ class ZLinkBoundSessionService {
|
|
|
46
47
|
if ((await this.routes.route(actorId))?.bindingToken !== route.bindingToken) {
|
|
47
48
|
return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
|
|
48
49
|
}
|
|
49
|
-
return await route.context.stream.submitRaw(frame
|
|
50
|
+
return await route.context.stream.submitRaw(frame);
|
|
50
51
|
}
|
|
51
52
|
finally {
|
|
52
53
|
frame.close();
|
|
@@ -102,12 +103,21 @@ class ZLinkBoundSessionService {
|
|
|
102
103
|
await this.routes.unbind(actorId, route.context, route.bindingToken);
|
|
103
104
|
}
|
|
104
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Closes the physical Session of one exact binding after its relocation
|
|
108
|
+
* failed (Session–Actor binding §8.1). A newer binding of the same Actor is
|
|
109
|
+
* not selected.
|
|
110
|
+
*/
|
|
111
|
+
async closeSessionBinding(actorId, expected, signal) {
|
|
112
|
+
const route = await this.routes.routeForSessionBinding(actorId, expected.sessionRid, expected.bindingGeneration);
|
|
113
|
+
await route?.context.close(signal);
|
|
114
|
+
}
|
|
105
115
|
async relayRemoteBoundSessionBind(stream, actorRef) {
|
|
106
116
|
const encodedBindHeader = (0, protocol_1.encodeStreamHeader)({
|
|
107
117
|
kind: protocol_1.ZLinkStreamMessageKind.Send,
|
|
108
118
|
codec: protocol_1.ZLinkStreamCodec.Raw,
|
|
109
119
|
flags: protocol_1.ZLinkStreamHeaderFlags.None,
|
|
110
|
-
name:
|
|
120
|
+
name: spot_remote_codec_1.REMOTE_BOUND_SESSION_BIND_PACKET,
|
|
111
121
|
metadata: new Map()
|
|
112
122
|
});
|
|
113
123
|
// encodeStreamHeader returns a fresh, unaliased array; view it without re-copying.
|
|
@@ -1,22 +1,21 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { ActorRef, ZLinkActor, ZLinkBoundSession, ZLinkSessionActor, ZLinkMessageSerializer, ZLinkStreamCompressionOptions } from '../../contracts';
|
|
3
|
-
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
4
|
-
import type { ZLinkSubmitResult } from '../messaging/submission-result';
|
|
5
|
-
import { ZLinkMessage } from '../../contracts';
|
|
1
|
+
import { type ActorRef, type ZLinkActor, type ZLinkBoundSession, type ZLinkMessageSerializer, type ZLinkSessionActor, type ZLinkStreamCompressionOptions, ZLinkMessage } from '../../contracts';
|
|
6
2
|
import type { Message } from '../../contracts/Common/Message';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import type { ZLinkBackendAdapterFactory, ZLinkBackendActorSessionNode, ZLinkBackendContext, ZLinkBackendMeshNode } from '../backend/contracts';
|
|
3
|
+
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
4
|
+
import type { ZLinkBackendActorSessionNode, ZLinkBackendAdapterFactory, ZLinkBackendContext, ZLinkBackendMeshNode } from '../backend/contracts';
|
|
10
5
|
import type { ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
|
|
11
|
-
import {
|
|
12
|
-
import { type
|
|
6
|
+
import { ZLinkDispatchErrorReporter } from '../channels';
|
|
7
|
+
import { type ZLinkFrameworkRegistration } from '../configuration';
|
|
8
|
+
import type { ZLinkListenerRecords } from '../foundation/listener-records';
|
|
13
9
|
import { ApplicationJobQueue } from '../host/application-job-queue';
|
|
14
|
-
import {
|
|
10
|
+
import type { ZLinkSubmitResult } from '../messaging/submission-result';
|
|
11
|
+
import { type ZLinkActorSessionAuthorityFence } from './actor-session-binding-registry';
|
|
15
12
|
import { type ZLinkBoundSessionResponseTarget } from './bound-session-response-target';
|
|
16
13
|
import { type ZLinkBoundSessionTransport } from './bound-session-service';
|
|
17
14
|
import { ZLinkManagedStream } from './managed-stream';
|
|
15
|
+
import { ZLinkStreamCodec, ZLinkStreamMessageKind, type ZLinkStreamFrameHeader, type ZLinkStreamReplyMessageKind } from './protocol';
|
|
16
|
+
import { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './session-context';
|
|
17
|
+
import type { ZLinkActorRouteCommitOptions, ZLinkSessionBindingConfirmationOptions, ZLinkSessionBindingIdentity } from './stream-binding-runtime-ports';
|
|
18
18
|
import { ZLinkStreamSessionNodeRuntime as ZLinkStreamSessionNodeRuntimeCore, ZLinkStreamSessionRuntime as ZLinkStreamSessionRuntimeCore, type ZLinkStreamSessionNodeRuntimeOptions as ZLinkStreamSessionNodeRuntimeCoreOptions, type ZLinkStreamSessionRuntimeOptions as ZLinkStreamSessionRuntimeCoreOptions } from './stream-session-runtime';
|
|
19
|
-
import type { ZLinkActorRouteCommitOptions } from './stream-binding-runtime-ports';
|
|
20
19
|
export { ZLinkPendingSessionRequest } from './session-requests';
|
|
21
20
|
export { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
|
|
22
21
|
export { ZLinkActorSessionBindingRegistry } from './actor-session-binding-registry';
|
|
@@ -26,6 +25,7 @@ export { DefaultZLinkBoundSession, DefaultZLinkBoundSessionFactory, DefaultZLink
|
|
|
26
25
|
export type { ZLinkBoundSessionResponseTarget } from './bound-session-response-target';
|
|
27
26
|
export type { ZLinkBoundSessionDisconnectOptions, ZLinkBoundSessionSendOptions, ZLinkBoundSessionTransport } from './bound-session-service';
|
|
28
27
|
export interface ZLinkStreamBindingRuntimeOptions {
|
|
28
|
+
readonly dispatchErrors?: ZLinkDispatchErrorReporter;
|
|
29
29
|
readonly transport?: ZLinkBoundSessionTransport;
|
|
30
30
|
readonly messageFactory?: ZLinkStreamMessageFactory;
|
|
31
31
|
readonly streamPayloadCodec?: ZLinkStreamPayloadCodec;
|
|
@@ -41,13 +41,11 @@ export interface ZLinkStreamBindingRuntimeOptions {
|
|
|
41
41
|
readonly routingId: unknown;
|
|
42
42
|
};
|
|
43
43
|
} | undefined;
|
|
44
|
-
readonly confirmRemoteActorSessionBinding?: (actor: ActorRef, sessionRid: ActorRef['nodeRid'], signal?: AbortSignal, options?:
|
|
45
|
-
readonly waitForAcknowledgement?: boolean;
|
|
46
|
-
}) => Promise<void>;
|
|
44
|
+
readonly confirmRemoteActorSessionBinding?: (actor: ActorRef, sessionRid: ActorRef['nodeRid'], signal?: AbortSignal, options?: ZLinkSessionBindingConfirmationOptions) => Promise<void>;
|
|
47
45
|
readonly errorSink?: () => {
|
|
48
46
|
reportRuntimeTaskException(taskName: string, error: unknown): void;
|
|
49
47
|
} | undefined;
|
|
50
|
-
readonly relay?: (actor: ZLinkSessionActor, header: ZLinkStreamFrameHeader, payload: Message
|
|
48
|
+
readonly relay?: (actor: ZLinkSessionActor, header: ZLinkStreamFrameHeader, payload: Message) => Promise<boolean>;
|
|
51
49
|
readonly notifyDisconnected?: (actor: ZLinkSessionActor, signal?: AbortSignal) => Promise<void>;
|
|
52
50
|
readonly flowCreationEnabled?: () => boolean;
|
|
53
51
|
readonly metrics?: import('../diagnostics').ZLinkRuntimeMetrics;
|
|
@@ -144,7 +142,8 @@ export declare class ZLinkStreamBindingRuntime {
|
|
|
144
142
|
sendNativeBoundSessionError(node: ZLinkBackendActorSessionNode, actorRef: ActorRef, packetName: string, requestSeq: bigint, error: unknown, metadata: ReadonlyMap<string, string>, signal?: AbortSignal): Promise<void>;
|
|
145
143
|
disconnectNativeBoundSession(node: ZLinkBackendActorSessionNode, actorRef: ActorRef, signal?: AbortSignal): Promise<void>;
|
|
146
144
|
disconnectBoundSession(actorId: string, signal?: AbortSignal): Promise<void>;
|
|
147
|
-
|
|
145
|
+
closeSessionBinding(actorId: string, expected: ZLinkSessionBindingIdentity, signal?: AbortSignal): Promise<void>;
|
|
146
|
+
relay(actor: DefaultZLinkSessionActor, payload: ZLinkMessage, dispatchHeader?: ZLinkStreamFrameHeader): Promise<ZLinkSubmitResult>;
|
|
148
147
|
notifyDisconnected(actor: DefaultZLinkSessionActor, signal?: AbortSignal): Promise<void>;
|
|
149
148
|
createTextMessage(payload: string): Message;
|
|
150
149
|
createBinaryMessage(payload: Uint8Array): Message;
|
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkStreamBindingRuntime = exports.ZLinkStreamSessionNodeRuntime = exports.ZLinkStreamSessionRuntime = exports.ZLinkStreamRuntimeManager = exports.DefaultZLinkSessionContext = exports.DefaultZLinkSessionActor = exports.DefaultZLinkBoundSessionFactory = exports.DefaultZLinkBoundSession = exports.ZLinkManagedStream = exports.zlinkStreamLz4CompressionCodec = exports.ZLinkActorSessionBindingRegistry = exports.ZLinkActorSessionLifecycleCoordinator = exports.ZLinkPendingSessionRequest = void 0;
|
|
4
|
+
const InternalDefaults_1 = require("../../contracts/Configuration/InternalDefaults");
|
|
5
|
+
const Options_1 = require("../../contracts/Locations/Options");
|
|
4
6
|
const configuration_1 = require("../configuration");
|
|
5
7
|
const service_session_binding_ingress_port_1 = require("../foundation/service-session-binding-ingress-port");
|
|
6
|
-
const
|
|
8
|
+
const application_job_queue_1 = require("../host/application-job-queue");
|
|
7
9
|
const actor_session_binding_registry_1 = require("./actor-session-binding-registry");
|
|
8
10
|
const actor_session_binding_runtime_owner_1 = require("./actor-session-binding-runtime-owner");
|
|
9
11
|
const actor_session_lifecycle_coordinator_1 = require("./actor-session-lifecycle-coordinator");
|
|
10
|
-
const
|
|
11
|
-
const application_job_queue_1 = require("../host/application-job-queue");
|
|
12
|
-
const stream_message_utils_1 = require("./stream-message-utils");
|
|
13
|
-
const session_context_1 = require("./session-context");
|
|
12
|
+
const bound_actor_relay_sender_1 = require("./bound-actor-relay-sender");
|
|
14
13
|
const bound_session_response_target_1 = require("./bound-session-response-target");
|
|
15
14
|
const bound_session_service_1 = require("./bound-session-service");
|
|
15
|
+
const protocol_1 = require("./protocol");
|
|
16
16
|
const session_actor_coordinator_1 = require("./session-actor-coordinator");
|
|
17
|
-
const
|
|
17
|
+
const session_context_1 = require("./session-context");
|
|
18
18
|
const session_provider_1 = require("./session-provider");
|
|
19
|
-
const
|
|
19
|
+
const stream_frame_factory_1 = require("./stream-frame-factory");
|
|
20
|
+
const stream_message_utils_1 = require("./stream-message-utils");
|
|
20
21
|
const stream_session_runtime_1 = require("./stream-session-runtime");
|
|
22
|
+
const DEFAULT_STREAM_SERVICE_SHUTDOWN_TIMEOUT_MS = 1000;
|
|
21
23
|
var session_requests_1 = require("./session-requests");
|
|
22
24
|
Object.defineProperty(exports, "ZLinkPendingSessionRequest", { enumerable: true, get: function () { return session_requests_1.ZLinkPendingSessionRequest; } });
|
|
23
25
|
var actor_session_lifecycle_coordinator_2 = require("./actor-session-lifecycle-coordinator");
|
|
@@ -94,9 +96,7 @@ class ZLinkStreamRuntimeManager {
|
|
|
94
96
|
node.nativeSessionServices.push(service);
|
|
95
97
|
const bindingOwner = (0, actor_session_binding_runtime_owner_1.actorSessionBindingRuntimeOwner)(this.options.bindingRuntime);
|
|
96
98
|
(0, service_session_binding_ingress_port_1.registerServiceSessionBindingIngressPort)(service, {
|
|
97
|
-
actorSlot: (actorId, sessionRid) => bindingOwner.actorSlot(actorId, sessionRid)
|
|
98
|
-
retainOutbound: (actorId, delivery) => bindingOwner.retainRelocationOutbound(actorId, delivery),
|
|
99
|
-
clearOutbound: (actorId, error) => bindingOwner.clearRelocation(actorId, error)
|
|
99
|
+
actorSlot: (actorId, sessionRid) => bindingOwner.actorSlot(actorId, sessionRid)
|
|
100
100
|
});
|
|
101
101
|
nativeSessionRoutes.set(meshName, {
|
|
102
102
|
service,
|
|
@@ -140,16 +140,16 @@ class ZLinkStreamRuntimeManager {
|
|
|
140
140
|
}
|
|
141
141
|
async dispose() {
|
|
142
142
|
const nodes = [...this.nodes.values()];
|
|
143
|
-
this.nodes.clear();
|
|
144
143
|
for (const node of nodes.reverse()) {
|
|
145
144
|
await node.runtime?.dispose();
|
|
146
145
|
for (const service of node.nativeSessionServices) {
|
|
147
|
-
service.shutdown(
|
|
146
|
+
service.shutdown(DEFAULT_STREAM_SERVICE_SHUTDOWN_TIMEOUT_MS);
|
|
148
147
|
service.close();
|
|
149
148
|
}
|
|
150
149
|
await node.monitor?.dispose();
|
|
151
150
|
await node.socket.dispose();
|
|
152
151
|
}
|
|
152
|
+
this.nodes.clear();
|
|
153
153
|
}
|
|
154
154
|
async notifyServerDrain(meshName) {
|
|
155
155
|
await Promise.all([...this.nodes.values()]
|
|
@@ -170,6 +170,7 @@ class ZLinkStreamSessionRuntime extends stream_session_runtime_1.ZLinkStreamSess
|
|
|
170
170
|
// dispatch-error flow tracer.
|
|
171
171
|
const bindingRuntime = options.bindingRuntime ??
|
|
172
172
|
new ZLinkStreamBindingRuntime({
|
|
173
|
+
dispatchErrors: options.dispatchErrors,
|
|
173
174
|
flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
|
|
174
175
|
});
|
|
175
176
|
super({
|
|
@@ -187,6 +188,7 @@ class ZLinkStreamSessionNodeRuntime extends stream_session_runtime_1.ZLinkStream
|
|
|
187
188
|
// process diagnostics Off gate (see ZLinkStreamSessionRuntime above).
|
|
188
189
|
const bindingRuntime = options.bindingRuntime ??
|
|
189
190
|
new ZLinkStreamBindingRuntime({
|
|
191
|
+
dispatchErrors: options.dispatchErrors,
|
|
190
192
|
flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
|
|
191
193
|
});
|
|
192
194
|
super({
|
|
@@ -208,7 +210,8 @@ class ZLinkStreamBindingRuntime {
|
|
|
208
210
|
...options,
|
|
209
211
|
actorBindTimeoutMs: options.actorBindTimeoutMs ?? DEFAULT_ACTOR_BIND_TIMEOUT_MS
|
|
210
212
|
};
|
|
211
|
-
this.routes = new actor_session_binding_registry_1.ZLinkActorSessionBindingRegistry(
|
|
213
|
+
this.routes = new actor_session_binding_registry_1.ZLinkActorSessionBindingRegistry(actor_session_binding_registry_1.DEFAULT_TERMINAL_RELOCATION_CAPACITY, runtimeOptions.sessionRelocationSealTimeoutMs ??
|
|
214
|
+
Options_1.zlinkDefaultLocationOptions.sessionRelocationSealTimeoutMs, runtimeOptions.errorSink);
|
|
212
215
|
this.compressionCodec = (0, stream_frame_factory_1.resolveStreamCompressionCodec)(runtimeOptions.streamCompression);
|
|
213
216
|
this.frameMessages = new stream_frame_factory_1.ZLinkStreamFrameMessageFactory(runtimeOptions);
|
|
214
217
|
this.boundSessions = new bound_session_service_1.ZLinkBoundSessionService(this.routes, this.frameMessages, runtimeOptions);
|
|
@@ -216,16 +219,9 @@ class ZLinkStreamBindingRuntime {
|
|
|
216
219
|
this.sessionActors = new session_actor_coordinator_1.ZLinkSessionActorCoordinator(this.routes, this, runtimeOptions, actorSessionLifecycle);
|
|
217
220
|
this.boundActorRelay = new bound_actor_relay_sender_1.ZLinkBoundActorRelaySender(this.routes, this.frameMessages, runtimeOptions, actorSessionLifecycle);
|
|
218
221
|
(0, actor_session_binding_runtime_owner_1.registerActorSessionBindingRuntimeOwner)(this, {
|
|
219
|
-
actorSlot: async (actorId, sessionRid) =>
|
|
220
|
-
const route = await this.routes.route(actorId);
|
|
221
|
-
return route !== undefined && route.sessionIdentity === sessionRid
|
|
222
|
-
? route.actorSlot
|
|
223
|
-
: undefined;
|
|
224
|
-
},
|
|
222
|
+
actorSlot: async (actorId, sessionRid) => (await this.routes.routeForSessionBinding(actorId, sessionRid))?.actorSlot,
|
|
225
223
|
sealRelocation: (claim, expected, signal) => this.routes.sealRelocation(claim, expected, signal),
|
|
226
224
|
relocationSnapshot: (actorId, sealId) => this.routes.relocationSnapshot(actorId, sealId),
|
|
227
|
-
retainRelocationOutbound: (actorId, operation, sealId) => this.routes.retainRelocationOutbound(actorId, operation, sealId),
|
|
228
|
-
discardRelocationOutbound: (actorId, sealId, error) => this.routes.discardRelocationOutbound(actorId, sealId, error),
|
|
229
225
|
applyRelocation: (...args) => this.routes.applyRelocation(...args),
|
|
230
226
|
observeRelocationTerminal: (...args) => this.routes.observeRelocationTerminal(...args),
|
|
231
227
|
clearRelocation: (actorId, error) => this.routes.clearRelocation(actorId, error),
|
|
@@ -328,8 +324,11 @@ class ZLinkStreamBindingRuntime {
|
|
|
328
324
|
async disconnectBoundSession(actorId, signal) {
|
|
329
325
|
await this.boundSessions.disconnectBoundSession(actorId, signal);
|
|
330
326
|
}
|
|
331
|
-
async
|
|
332
|
-
|
|
327
|
+
async closeSessionBinding(actorId, expected, signal) {
|
|
328
|
+
await this.boundSessions.closeSessionBinding(actorId, expected, signal);
|
|
329
|
+
}
|
|
330
|
+
async relay(actor, payload, dispatchHeader) {
|
|
331
|
+
return await this.boundActorRelay.relay(actor, payload, dispatchHeader);
|
|
333
332
|
}
|
|
334
333
|
async notifyDisconnected(actor, signal) {
|
|
335
334
|
await this.boundActorRelay.notifyDisconnected(actor, signal);
|
|
@@ -5,6 +5,7 @@ import type { ZLinkBackendSendFlags, ZLinkBackendStreamSocket } from '../backend
|
|
|
5
5
|
import type { StreamSessionService } from '../foundation/service-runtime-contracts';
|
|
6
6
|
import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
|
|
7
7
|
import type { ServiceActorRef } from '../foundation/service-stateful-registry';
|
|
8
|
+
import type { ServiceStreamSessionBinding } from '../foundation/service-runtime-contracts';
|
|
8
9
|
import { type ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
|
|
9
10
|
import { ZLinkStreamCloseReasonCode } from './protocol';
|
|
10
11
|
import type { ZLinkActorSessionAuthorityFence } from './actor-session-binding-registry';
|
|
@@ -29,13 +30,15 @@ export declare class ZLinkManagedStream implements ZLinkStream {
|
|
|
29
30
|
get routingId(): RoutingId;
|
|
30
31
|
get actorBindingRoutingId(): RoutingId;
|
|
31
32
|
actorBindingGeneration(actorId: string): bigint | undefined;
|
|
33
|
+
/** The Session owner's registry snapshot of the Actor's current native binding. */
|
|
34
|
+
actorBinding(actorId: string): ServiceStreamSessionBinding | undefined;
|
|
32
35
|
private isTransportClosed;
|
|
33
36
|
get localAddr(): string | undefined;
|
|
34
37
|
get remoteAddr(): string | undefined;
|
|
35
38
|
write(payload: ZLinkMessage, flags?: ZLinkBackendSendFlags): boolean;
|
|
36
39
|
writeRaw(payload: Message, flags?: ZLinkBackendSendFlags): boolean;
|
|
37
|
-
submitRaw(payload: Message
|
|
38
|
-
submitBoundActor(actorId: string, parts: readonly Message[]
|
|
40
|
+
submitRaw(payload: Message): Promise<ZLinkSubmitResult>;
|
|
41
|
+
submitBoundActor(actorId: string, parts: readonly Message[]): Promise<ZLinkSubmitResult>;
|
|
39
42
|
close(signal?: AbortSignal): Promise<void>;
|
|
40
43
|
closeForDrain(signal?: AbortSignal): Promise<void>;
|
|
41
44
|
writeControl(name: string): Promise<void>;
|
|
@@ -8,6 +8,7 @@ const abort_1 = require("../abort");
|
|
|
8
8
|
const payload_codec_1 = require("../messaging/payload-codec");
|
|
9
9
|
const runtime_values_1 = require("../backend/runtime-values");
|
|
10
10
|
const runtime_message_1 = require("../backend/runtime-message");
|
|
11
|
+
const diagnostic_text_1 = require("../diagnostics/diagnostic-text");
|
|
11
12
|
const mesh_completion_table_1 = require("../backend/mesh-completion-table");
|
|
12
13
|
const protocol_1 = require("./protocol");
|
|
13
14
|
const ZLINK_SEND_DONT_WAIT = 1;
|
|
@@ -47,7 +48,11 @@ class ZLinkManagedStream {
|
|
|
47
48
|
return this.backendSessionRoutingId;
|
|
48
49
|
}
|
|
49
50
|
actorBindingGeneration(actorId) {
|
|
50
|
-
return this.nativeActorBindings.get(actorId)?.bindingGeneration;
|
|
51
|
+
return this.nativeActorBindings.get(actorId)?.binding?.bindingGeneration;
|
|
52
|
+
}
|
|
53
|
+
/** The Session owner's registry snapshot of the Actor's current native binding. */
|
|
54
|
+
actorBinding(actorId) {
|
|
55
|
+
return this.nativeActorBindings.get(actorId)?.binding;
|
|
51
56
|
}
|
|
52
57
|
isTransportClosed() {
|
|
53
58
|
return this.transportClosed;
|
|
@@ -70,20 +75,19 @@ class ZLinkManagedStream {
|
|
|
70
75
|
writeRaw(payload, flags) {
|
|
71
76
|
return this.socket.send(this.backendRoutingId(), payload, flags ?? 0);
|
|
72
77
|
}
|
|
73
|
-
async submitRaw(payload
|
|
78
|
+
async submitRaw(payload) {
|
|
74
79
|
try {
|
|
75
|
-
(
|
|
76
|
-
await this.socket.submit(this.backendRoutingId(), payload, timeoutMs);
|
|
80
|
+
await this.socket.submit(this.backendRoutingId(), payload);
|
|
77
81
|
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
78
82
|
}
|
|
79
83
|
catch (error) {
|
|
80
|
-
if ((0, runtime_values_1.
|
|
81
|
-
return
|
|
84
|
+
if ((0, runtime_values_1.isZLinkBackendResultError)(error) && error.operation === 'submit') {
|
|
85
|
+
return (0, submission_result_1.classifySubmitResult)(error.result, 'STREAM submit', error.phase);
|
|
86
|
+
}
|
|
82
87
|
throw error;
|
|
83
88
|
}
|
|
84
89
|
}
|
|
85
|
-
async submitBoundActor(actorId, parts
|
|
86
|
-
(0, abort_1.throwIfAborted)(signal);
|
|
90
|
+
async submitBoundActor(actorId, parts) {
|
|
87
91
|
return (await this.sendBoundActor(actorId, parts, ZLINK_SEND_DONT_WAIT))
|
|
88
92
|
? { status: submission_result_1.ZLinkSubmitStatus.Submitted }
|
|
89
93
|
: { status: submission_result_1.ZLinkSubmitStatus.Backpressured };
|
|
@@ -157,7 +161,7 @@ class ZLinkManagedStream {
|
|
|
157
161
|
}
|
|
158
162
|
this.nativeActorBindings.set(actor.actorId, {
|
|
159
163
|
actor: nativeActor,
|
|
160
|
-
|
|
164
|
+
binding,
|
|
161
165
|
route
|
|
162
166
|
});
|
|
163
167
|
return;
|
|
@@ -179,7 +183,9 @@ class ZLinkManagedStream {
|
|
|
179
183
|
String(resolved.nodeRid) !== String(actor.nodeRid)) {
|
|
180
184
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorRouteNotFound, `Actor '${actor.actorId}' native route fence does not match its ActorRef ` +
|
|
181
185
|
`(expected ${String(actor.nodeRid)}/${actor.objectGeneration}, ` +
|
|
182
|
-
`resolved ${
|
|
186
|
+
`resolved ${(0, diagnostic_text_1.diagnosticTextOrAbsent)(resolved === undefined
|
|
187
|
+
? undefined
|
|
188
|
+
: `${String(resolved.nodeRid)}/${resolved.generation}`)}, ` +
|
|
183
189
|
`terminal=${completion.terminalResult}, failure=${completion.failureErrno}).`);
|
|
184
190
|
}
|
|
185
191
|
}
|
|
@@ -198,12 +204,13 @@ class ZLinkManagedStream {
|
|
|
198
204
|
const binding = this.nativeActorBindings.get(actorId);
|
|
199
205
|
if (binding?.route !== undefined) {
|
|
200
206
|
const route = binding.route;
|
|
201
|
-
|
|
207
|
+
const bindingGeneration = binding.binding.bindingGeneration;
|
|
208
|
+
if (!this.hasNativeBinding(route, actorId, bindingGeneration)) {
|
|
202
209
|
this.nativeActorBindings.delete(actorId);
|
|
203
210
|
return;
|
|
204
211
|
}
|
|
205
212
|
try {
|
|
206
|
-
await this.requireSuccessfulCompletion(route.completions.submit(() => route.service.unbindActor(this.backendRoutingId(), binding.actor,
|
|
213
|
+
await this.requireSuccessfulCompletion(route.completions.submit(() => route.service.unbindActor(this.backendRoutingId(), binding.actor, bindingGeneration, timeoutMs), signal), `Actor '${actorId}' native session unbind`,
|
|
207
214
|
// Destroy can remove the actor registry entry before the old
|
|
208
215
|
// session owner processes its cleanup. Both a disconnected route and
|
|
209
216
|
// that stale actor route are idempotent unbind outcomes.
|
|
@@ -214,7 +221,7 @@ class ZLinkManagedStream {
|
|
|
214
221
|
// tombstone. A transport teardown can therefore report an internal
|
|
215
222
|
// completion after the exact binding is already gone. Treat only that
|
|
216
223
|
// exact missing binding as stale cleanup; preserve other failures.
|
|
217
|
-
if (this.hasNativeBinding(route, actorId,
|
|
224
|
+
if (this.hasNativeBinding(route, actorId, bindingGeneration)) {
|
|
218
225
|
throw error;
|
|
219
226
|
}
|
|
220
227
|
}
|