@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
|
@@ -10,7 +10,11 @@ import type {
|
|
|
10
10
|
ZLinkMessageSerializer,
|
|
11
11
|
ZLinkStream
|
|
12
12
|
} from '../../contracts';
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
ZLinkSubmitStatus,
|
|
15
|
+
classifySubmitResult,
|
|
16
|
+
type ZLinkSubmitResult
|
|
17
|
+
} from '../messaging/submission-result';
|
|
14
18
|
import type { Message } from '../../contracts/Common/Message';
|
|
15
19
|
import { throwIfAborted } from '../abort';
|
|
16
20
|
import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
|
|
@@ -19,14 +23,16 @@ import type {
|
|
|
19
23
|
ZLinkBackendSendFlags,
|
|
20
24
|
ZLinkBackendStreamSocket
|
|
21
25
|
} from '../backend/contracts';
|
|
22
|
-
import { RequestResult,
|
|
26
|
+
import { RequestResult, isZLinkBackendResultError } from '../backend/runtime-values';
|
|
23
27
|
import { ZLinkBufferMessage as NativeMessage } from '../backend/runtime-message';
|
|
28
|
+
import { diagnosticTextOrAbsent } from '../diagnostics/diagnostic-text';
|
|
24
29
|
import type {
|
|
25
30
|
StreamSessionActorAuthorityFence,
|
|
26
31
|
StreamSessionService
|
|
27
32
|
} from '../foundation/service-runtime-contracts';
|
|
28
33
|
import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
|
|
29
34
|
import type { ServiceActorRef } from '../foundation/service-stateful-registry';
|
|
35
|
+
import type { ServiceStreamSessionBinding } from '../foundation/service-runtime-contracts';
|
|
30
36
|
import {
|
|
31
37
|
closeMeshCompletion,
|
|
32
38
|
type ZLinkMeshCompletion,
|
|
@@ -55,7 +61,8 @@ export interface ZLinkNativeSessionRoute {
|
|
|
55
61
|
|
|
56
62
|
interface ZLinkManagedActorBinding {
|
|
57
63
|
readonly actor: ZLinkBackendActorRef;
|
|
58
|
-
|
|
64
|
+
/** The Session owner's registry snapshot of this binding (Session–Actor binding §5-2). */
|
|
65
|
+
readonly binding?: ServiceStreamSessionBinding;
|
|
59
66
|
readonly route?: ZLinkNativeSessionRoute;
|
|
60
67
|
}
|
|
61
68
|
|
|
@@ -90,7 +97,12 @@ export class ZLinkManagedStream implements ZLinkStream {
|
|
|
90
97
|
}
|
|
91
98
|
|
|
92
99
|
actorBindingGeneration(actorId: string): bigint | undefined {
|
|
93
|
-
return this.nativeActorBindings.get(actorId)?.bindingGeneration;
|
|
100
|
+
return this.nativeActorBindings.get(actorId)?.binding?.bindingGeneration;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/** The Session owner's registry snapshot of the Actor's current native binding. */
|
|
104
|
+
actorBinding(actorId: string): ServiceStreamSessionBinding | undefined {
|
|
105
|
+
return this.nativeActorBindings.get(actorId)?.binding;
|
|
94
106
|
}
|
|
95
107
|
|
|
96
108
|
private isTransportClosed(): boolean {
|
|
@@ -118,27 +130,19 @@ export class ZLinkManagedStream implements ZLinkStream {
|
|
|
118
130
|
return this.socket.send(this.backendRoutingId(), payload, flags ?? 0);
|
|
119
131
|
}
|
|
120
132
|
|
|
121
|
-
async submitRaw(
|
|
122
|
-
payload: Message,
|
|
123
|
-
signal?: AbortSignal,
|
|
124
|
-
timeoutMs?: number
|
|
125
|
-
): Promise<ZLinkSubmitResult> {
|
|
133
|
+
async submitRaw(payload: Message): Promise<ZLinkSubmitResult> {
|
|
126
134
|
try {
|
|
127
|
-
|
|
128
|
-
await this.socket.submit(this.backendRoutingId(), payload, timeoutMs);
|
|
135
|
+
await this.socket.submit(this.backendRoutingId(), payload);
|
|
129
136
|
return { status: ZLinkSubmitStatus.Submitted };
|
|
130
137
|
} catch (error) {
|
|
131
|
-
if (
|
|
138
|
+
if (isZLinkBackendResultError(error) && error.operation === 'submit') {
|
|
139
|
+
return classifySubmitResult(error.result, 'STREAM submit', error.phase);
|
|
140
|
+
}
|
|
132
141
|
throw error;
|
|
133
142
|
}
|
|
134
143
|
}
|
|
135
144
|
|
|
136
|
-
async submitBoundActor(
|
|
137
|
-
actorId: string,
|
|
138
|
-
parts: readonly Message[],
|
|
139
|
-
signal?: AbortSignal
|
|
140
|
-
): Promise<ZLinkSubmitResult> {
|
|
141
|
-
throwIfAborted(signal);
|
|
145
|
+
async submitBoundActor(actorId: string, parts: readonly Message[]): Promise<ZLinkSubmitResult> {
|
|
142
146
|
return (await this.sendBoundActor(actorId, parts, ZLINK_SEND_DONT_WAIT))
|
|
143
147
|
? { status: ZLinkSubmitStatus.Submitted }
|
|
144
148
|
: { status: ZLinkSubmitStatus.Backpressured };
|
|
@@ -268,7 +272,7 @@ export class ZLinkManagedStream implements ZLinkStream {
|
|
|
268
272
|
}
|
|
269
273
|
this.nativeActorBindings.set(actor.actorId, {
|
|
270
274
|
actor: nativeActor,
|
|
271
|
-
|
|
275
|
+
binding,
|
|
272
276
|
route
|
|
273
277
|
});
|
|
274
278
|
return;
|
|
@@ -309,7 +313,11 @@ export class ZLinkManagedStream implements ZLinkStream {
|
|
|
309
313
|
ZLinkFrameworkInternalErrorKind.ActorRouteNotFound,
|
|
310
314
|
`Actor '${actor.actorId}' native route fence does not match its ActorRef ` +
|
|
311
315
|
`(expected ${String(actor.nodeRid)}/${actor.objectGeneration}, ` +
|
|
312
|
-
`resolved ${
|
|
316
|
+
`resolved ${diagnosticTextOrAbsent(
|
|
317
|
+
resolved === undefined
|
|
318
|
+
? undefined
|
|
319
|
+
: `${String(resolved.nodeRid)}/${resolved.generation}`
|
|
320
|
+
)}, ` +
|
|
313
321
|
`terminal=${completion.terminalResult}, failure=${completion.failureErrno}).`
|
|
314
322
|
);
|
|
315
323
|
}
|
|
@@ -329,7 +337,8 @@ export class ZLinkManagedStream implements ZLinkStream {
|
|
|
329
337
|
const binding = this.nativeActorBindings.get(actorId);
|
|
330
338
|
if (binding?.route !== undefined) {
|
|
331
339
|
const route = binding.route;
|
|
332
|
-
|
|
340
|
+
const bindingGeneration = binding.binding!.bindingGeneration;
|
|
341
|
+
if (!this.hasNativeBinding(route, actorId, bindingGeneration)) {
|
|
333
342
|
this.nativeActorBindings.delete(actorId);
|
|
334
343
|
return;
|
|
335
344
|
}
|
|
@@ -340,7 +349,7 @@ export class ZLinkManagedStream implements ZLinkStream {
|
|
|
340
349
|
route.service.unbindActor(
|
|
341
350
|
this.backendRoutingId(),
|
|
342
351
|
binding.actor as never,
|
|
343
|
-
|
|
352
|
+
bindingGeneration,
|
|
344
353
|
timeoutMs
|
|
345
354
|
),
|
|
346
355
|
signal
|
|
@@ -356,7 +365,7 @@ export class ZLinkManagedStream implements ZLinkStream {
|
|
|
356
365
|
// tombstone. A transport teardown can therefore report an internal
|
|
357
366
|
// completion after the exact binding is already gone. Treat only that
|
|
358
367
|
// exact missing binding as stale cleanup; preserve other failures.
|
|
359
|
-
if (this.hasNativeBinding(route, actorId,
|
|
368
|
+
if (this.hasNativeBinding(route, actorId, bindingGeneration)) {
|
|
360
369
|
throw error;
|
|
361
370
|
}
|
|
362
371
|
}
|
|
@@ -32,7 +32,6 @@ import {
|
|
|
32
32
|
type ZLinkStreamFrameHeader
|
|
33
33
|
} from './protocol';
|
|
34
34
|
import type { ZLinkNativeFallbackBoundSessionPort } from './stream-binding-runtime-ports';
|
|
35
|
-
import { throwIfAborted } from '../abort';
|
|
36
35
|
import type { ZLinkBackendActorSessionNode } from '../backend';
|
|
37
36
|
import { resolveFrameworkPacketName } from '../messaging/packet-name';
|
|
38
37
|
import { currentOrCreateFlow, runWithOutboundFlow } from '../diagnostics/flow-context';
|
|
@@ -87,8 +86,7 @@ export class ZLinkNativeFallbackBoundSession implements ZLinkBoundSession {
|
|
|
87
86
|
return;
|
|
88
87
|
}
|
|
89
88
|
await this.options.routedTransport.sendToSpot(target, payload, {
|
|
90
|
-
packetName: ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET
|
|
91
|
-
signal
|
|
89
|
+
packetName: ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET
|
|
92
90
|
});
|
|
93
91
|
return;
|
|
94
92
|
}
|
|
@@ -126,7 +124,7 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
|
|
|
126
124
|
return this;
|
|
127
125
|
}
|
|
128
126
|
|
|
129
|
-
async submit(
|
|
127
|
+
async submit(): Promise<void> {
|
|
130
128
|
if (this.executed) {
|
|
131
129
|
throwAlreadySubmitted('Bound session send call');
|
|
132
130
|
}
|
|
@@ -136,8 +134,7 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
|
|
|
136
134
|
'Bound session'
|
|
137
135
|
);
|
|
138
136
|
this.executed = true;
|
|
139
|
-
|
|
140
|
-
const result = await this.execute(packetName, signal);
|
|
137
|
+
const result = await this.execute(packetName);
|
|
141
138
|
requireOneWayCompletion(
|
|
142
139
|
result,
|
|
143
140
|
'Bound session send',
|
|
@@ -145,30 +142,25 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
|
|
|
145
142
|
);
|
|
146
143
|
}
|
|
147
144
|
|
|
148
|
-
private execute(packetName: string
|
|
145
|
+
private execute(packetName: string): Promise<ZLinkSubmitResult> {
|
|
149
146
|
// Call-scoped flow (spec 27 §4): the relay JSON flow pair and any nested
|
|
150
147
|
// routed-transport envelope share one ambient flow that does not outlive
|
|
151
148
|
// this submit call.
|
|
152
149
|
return runWithOutboundFlow(this.options.flowCreationEnabled?.() ?? true, () =>
|
|
153
|
-
this.executeScoped(packetName
|
|
150
|
+
this.executeScoped(packetName)
|
|
154
151
|
);
|
|
155
152
|
}
|
|
156
153
|
|
|
157
|
-
private async executeScoped(
|
|
158
|
-
packetName: string,
|
|
159
|
-
signal?: AbortSignal
|
|
160
|
-
): Promise<ZLinkSubmitResult> {
|
|
154
|
+
private async executeScoped(packetName: string): Promise<ZLinkSubmitResult> {
|
|
161
155
|
const localActor = this.options.localActorProvider?.() === true;
|
|
162
156
|
const remoteTarget = this.options.remoteBoundSessionTargetProvider();
|
|
163
|
-
const sealedRemoteTarget = remoteTarget?.relocationSealId !== undefined;
|
|
164
157
|
let nativeAttempted = false;
|
|
165
|
-
if (localActor
|
|
158
|
+
if (localActor) {
|
|
166
159
|
const result = await this.options.runtime.submitLocalBoundSession(
|
|
167
160
|
this.options.actorId,
|
|
168
161
|
this.message,
|
|
169
162
|
packetName,
|
|
170
|
-
this.selectedMetadata
|
|
171
|
-
signal
|
|
163
|
+
this.selectedMetadata
|
|
172
164
|
);
|
|
173
165
|
if (result.status !== ZLinkSubmitStatus.TargetNotFound) {
|
|
174
166
|
this.traceSubmitted(result, packetName);
|
|
@@ -189,8 +181,7 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
|
|
|
189
181
|
actorRef,
|
|
190
182
|
this.message,
|
|
191
183
|
packetName,
|
|
192
|
-
this.selectedMetadata
|
|
193
|
-
signal
|
|
184
|
+
this.selectedMetadata
|
|
194
185
|
);
|
|
195
186
|
if (result.status !== ZLinkSubmitStatus.TargetNotFound) {
|
|
196
187
|
this.traceSubmitted(result, packetName);
|
|
@@ -213,7 +204,6 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
|
|
|
213
204
|
actorNodeRidHex: (actorRef?.nodeRid as { toHex?: () => string } | undefined)?.toHex?.(),
|
|
214
205
|
actorGeneration: actorRef?.objectGeneration.toString(),
|
|
215
206
|
actorOwnershipGeneration: ownershipGeneration?.toString(),
|
|
216
|
-
relocationSealId: remoteTarget.relocationSealId,
|
|
217
207
|
message: this.message,
|
|
218
208
|
boundPacketName: packetName,
|
|
219
209
|
metadata: this.selectedMetadata,
|
|
@@ -236,15 +226,14 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
|
|
|
236
226
|
spotKind: ZLinkSpotKind.Entry
|
|
237
227
|
},
|
|
238
228
|
payload,
|
|
239
|
-
{ packetName: ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET
|
|
229
|
+
{ packetName: ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET }
|
|
240
230
|
)
|
|
241
231
|
: await submit.call(
|
|
242
232
|
this.options.routedTransport,
|
|
243
233
|
remoteTarget.routerChannelId,
|
|
244
234
|
String(remoteTarget.targetNodeRid),
|
|
245
235
|
ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET,
|
|
246
|
-
payload
|
|
247
|
-
signal
|
|
236
|
+
payload
|
|
248
237
|
);
|
|
249
238
|
this.traceSubmitted(result, packetName);
|
|
250
239
|
return result;
|
|
@@ -253,8 +242,7 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
|
|
|
253
242
|
this.options.actorId,
|
|
254
243
|
this.message,
|
|
255
244
|
packetName,
|
|
256
|
-
this.selectedMetadata
|
|
257
|
-
signal
|
|
245
|
+
this.selectedMetadata
|
|
258
246
|
);
|
|
259
247
|
if (localResult.status !== ZLinkSubmitStatus.TargetNotFound) {
|
|
260
248
|
this.traceSubmitted(localResult, packetName);
|
|
@@ -274,8 +262,7 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
|
|
|
274
262
|
actorRef,
|
|
275
263
|
this.message,
|
|
276
264
|
packetName,
|
|
277
|
-
this.selectedMetadata
|
|
278
|
-
signal
|
|
265
|
+
this.selectedMetadata
|
|
279
266
|
);
|
|
280
267
|
this.traceSubmitted(result, packetName);
|
|
281
268
|
return result;
|
|
@@ -291,8 +278,7 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
|
|
|
291
278
|
this.options.actorId,
|
|
292
279
|
this.message,
|
|
293
280
|
packetName,
|
|
294
|
-
this.selectedMetadata
|
|
295
|
-
signal
|
|
281
|
+
this.selectedMetadata
|
|
296
282
|
);
|
|
297
283
|
this.traceSubmitted(result, packetName);
|
|
298
284
|
return result;
|
|
@@ -1,90 +1,52 @@
|
|
|
1
|
-
import type { Message } from '../../contracts/Common/Message';
|
|
2
|
-
import type { ZLinkFlowOrigin } from '../../contracts';
|
|
3
|
-
import { resolveFrameworkPacketName } from '../messaging/packet-name';
|
|
4
1
|
import {
|
|
2
|
+
ZlinkStreamCloseReasonCode as ZLinkStreamCloseReasonCode,
|
|
3
|
+
ZlinkStreamCodec as ZLinkStreamCodec,
|
|
4
|
+
ZlinkStreamHeaderFlags as ZLinkStreamHeaderFlags,
|
|
5
|
+
ZlinkStreamMessageKind as ZLinkStreamMessageKind,
|
|
6
|
+
ZlinkStreamControlPacket,
|
|
5
7
|
decodeStreamWireFrame,
|
|
6
8
|
decodeStreamWireHeader,
|
|
9
|
+
defaultMaxDecompressedPayloadSize,
|
|
10
|
+
encodeStreamWireActorBoundPayload,
|
|
11
|
+
encodeStreamWireActorUnboundPayload,
|
|
7
12
|
encodeStreamWireFrame,
|
|
8
13
|
encodeStreamWireHeader,
|
|
14
|
+
encodeStreamWireSessionClosingPayload,
|
|
9
15
|
lz4PickleUncompressed,
|
|
10
16
|
lz4UnpicklePayload,
|
|
11
17
|
tryDecodeStreamWireFrame,
|
|
12
|
-
|
|
18
|
+
streamCodecContentType as wireCodecContentType,
|
|
19
|
+
streamCodecForContentType as wireCodecForContentType
|
|
13
20
|
} from '@zlink-systems/stream-wire';
|
|
21
|
+
import type { ZLinkFlowOrigin } from '../../contracts';
|
|
22
|
+
import type { Message } from '../../contracts/Common/Message';
|
|
23
|
+
import { resolveFrameworkPacketName } from '../messaging/packet-name';
|
|
14
24
|
import { throwAlreadySubmitted } from '../messaging/submission-result';
|
|
25
|
+
export {
|
|
26
|
+
ZlinkStreamMessageKind as ZLinkStreamMessageKind,
|
|
27
|
+
ZlinkStreamHeaderFlags as ZLinkStreamHeaderFlags,
|
|
28
|
+
ZlinkStreamCloseReasonCode as ZLinkStreamCloseReasonCode
|
|
29
|
+
} from '@zlink-systems/stream-wire';
|
|
15
30
|
|
|
16
31
|
export { utf8Decode, utf8Encode } from '@zlink-systems/stream-wire';
|
|
17
32
|
|
|
18
|
-
const defaultMaxDecompressedPayloadSize = 64 * 1024;
|
|
19
33
|
const actorRequestDeadlineMetadataKey = '$zlink.actor-request-deadline-unix-ms';
|
|
20
34
|
// Shared empty metadata for the dominant no-metadata frame; ReadonlyMap
|
|
21
35
|
// keeps every consumer from mutating it.
|
|
22
36
|
const EMPTY_STREAM_METADATA: ReadonlyMap<string, string> = new Map();
|
|
23
37
|
|
|
24
|
-
export
|
|
25
|
-
Raw = 0,
|
|
26
|
-
Json = 1,
|
|
27
|
-
MessagePack = 2,
|
|
28
|
-
Protobuf = 3
|
|
29
|
-
}
|
|
38
|
+
export { ZlinkStreamCodec as ZLinkStreamCodec } from '@zlink-systems/stream-wire';
|
|
30
39
|
|
|
31
40
|
export function streamCodecContentType(codec: ZLinkStreamCodec): string {
|
|
32
|
-
|
|
33
|
-
case ZLinkStreamCodec.Json:
|
|
34
|
-
return 'application/json';
|
|
35
|
-
case ZLinkStreamCodec.MessagePack:
|
|
36
|
-
return 'application/x-msgpack';
|
|
37
|
-
case ZLinkStreamCodec.Protobuf:
|
|
38
|
-
return 'application/x-protobuf';
|
|
39
|
-
case ZLinkStreamCodec.Raw:
|
|
40
|
-
return 'application/octet-stream';
|
|
41
|
-
}
|
|
42
|
-
throw new TypeError(`Unsupported STREAM codec '${codec}'.`);
|
|
41
|
+
return wireCodecContentType(codec);
|
|
43
42
|
}
|
|
44
43
|
|
|
45
44
|
export function streamCodecForContentType(contentType: string): ZLinkStreamCodec {
|
|
46
|
-
|
|
47
|
-
case 'application/json':
|
|
48
|
-
return ZLinkStreamCodec.Json;
|
|
49
|
-
case 'application/x-msgpack':
|
|
50
|
-
return ZLinkStreamCodec.MessagePack;
|
|
51
|
-
case 'application/x-protobuf':
|
|
52
|
-
return ZLinkStreamCodec.Protobuf;
|
|
53
|
-
case 'application/octet-stream':
|
|
54
|
-
return ZLinkStreamCodec.Raw;
|
|
55
|
-
}
|
|
56
|
-
throw new TypeError(`Unsupported STREAM content type '${contentType}'.`);
|
|
45
|
+
return wireCodecForContentType(contentType);
|
|
57
46
|
}
|
|
58
47
|
|
|
59
|
-
export
|
|
60
|
-
|
|
61
|
-
Request = 2,
|
|
62
|
-
Response = 3,
|
|
63
|
-
Error = 4,
|
|
64
|
-
Control = 5
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export enum ZLinkStreamHeaderFlags {
|
|
68
|
-
None = 0,
|
|
69
|
-
HasRequestSeq = 0x01,
|
|
70
|
-
HasMetadata = 0x02,
|
|
71
|
-
PayloadCompressed = 0x04,
|
|
72
|
-
HasCorrelationId = 0x08,
|
|
73
|
-
HasFlowId = 0x10,
|
|
74
|
-
HasActorSlot = 0x20
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export enum ZLinkStreamCloseReasonCode {
|
|
78
|
-
ClientClose = 1,
|
|
79
|
-
IdleTimeout = 2,
|
|
80
|
-
HeartbeatTimeout = 3,
|
|
81
|
-
ServerDrain = 4,
|
|
82
|
-
ProtocolError = 5,
|
|
83
|
-
TransportError = 6
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export const ZLINK_STREAM_HEARTBEAT_PING = '$zlink.heartbeat.ping';
|
|
87
|
-
export const ZLINK_STREAM_HEARTBEAT_PONG = '$zlink.heartbeat.pong';
|
|
48
|
+
export const ZLINK_STREAM_HEARTBEAT_PING = ZlinkStreamControlPacket.HeartbeatPing;
|
|
49
|
+
export const ZLINK_STREAM_HEARTBEAT_PONG = ZlinkStreamControlPacket.HeartbeatPong;
|
|
88
50
|
|
|
89
51
|
export interface ZLinkStreamFrameHeader {
|
|
90
52
|
readonly kind: ZLinkStreamMessageKind;
|
|
@@ -142,48 +104,32 @@ export function encodeStreamControlFrame(name: string): Uint8Array {
|
|
|
142
104
|
}
|
|
143
105
|
|
|
144
106
|
export function encodeActorBoundFrame(actorSlot: number, actorId: string): Uint8Array {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
const payload = new Uint8Array(4 + actorIdBytes.length);
|
|
150
|
-
payload[0] = 1;
|
|
151
|
-
payload[1] = actorSlot >>> 8;
|
|
152
|
-
payload[2] = actorSlot & 0xff;
|
|
153
|
-
payload[3] = actorIdBytes.length;
|
|
154
|
-
payload.set(actorIdBytes, 4);
|
|
155
|
-
return encodeStreamFrame(controlHeader('$zlink.actor.bound'), payload);
|
|
107
|
+
return encodeStreamFrame(
|
|
108
|
+
controlHeader(ZlinkStreamControlPacket.ActorBound),
|
|
109
|
+
encodeStreamWireActorBoundPayload(actorSlot, actorId)
|
|
110
|
+
);
|
|
156
111
|
}
|
|
157
112
|
|
|
158
113
|
export function encodeActorUnboundFrame(actorSlot: number): Uint8Array {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
return encodeStreamFrame(controlHeader('$zlink.actor.unbound'), payload);
|
|
114
|
+
return encodeStreamFrame(
|
|
115
|
+
controlHeader(ZlinkStreamControlPacket.ActorUnbound),
|
|
116
|
+
encodeStreamWireActorUnboundPayload(actorSlot)
|
|
117
|
+
);
|
|
164
118
|
}
|
|
165
119
|
|
|
166
120
|
export function encodeSessionClosingFrame(
|
|
167
121
|
diagnostic = '',
|
|
168
122
|
reason = ZLinkStreamCloseReasonCode.ServerDrain
|
|
169
123
|
): Uint8Array {
|
|
170
|
-
const diagnosticBytes = utf8Encode(diagnostic);
|
|
171
|
-
if (diagnosticBytes.length > 512) throw new Error('Session-closing diagnostic is too large.');
|
|
172
|
-
const payload = new Uint8Array(4 + diagnosticBytes.length);
|
|
173
|
-
payload[0] = 1;
|
|
174
|
-
payload[1] = reason;
|
|
175
|
-
payload[2] = diagnosticBytes.length >>> 8;
|
|
176
|
-
payload[3] = diagnosticBytes.length & 0xff;
|
|
177
|
-
payload.set(diagnosticBytes, 4);
|
|
178
124
|
return encodeStreamFrame(
|
|
179
125
|
{
|
|
180
126
|
kind: ZLinkStreamMessageKind.Control,
|
|
181
127
|
codec: ZLinkStreamCodec.Raw,
|
|
182
128
|
flags: ZLinkStreamHeaderFlags.None,
|
|
183
|
-
name:
|
|
129
|
+
name: ZlinkStreamControlPacket.SessionClosing,
|
|
184
130
|
metadata: new Map()
|
|
185
131
|
},
|
|
186
|
-
|
|
132
|
+
encodeStreamWireSessionClosingPayload(reason, diagnostic)
|
|
187
133
|
);
|
|
188
134
|
}
|
|
189
135
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS } from './bound-actor-relay-sender';
|
|
1
2
|
import {
|
|
2
3
|
ZLinkFrameworkInternalErrorKind,
|
|
3
4
|
createInternalFrameworkException
|
|
@@ -13,6 +14,7 @@ import {
|
|
|
13
14
|
import { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
|
|
14
15
|
import { ZLinkManagedStream } from './managed-stream';
|
|
15
16
|
import { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './session-context';
|
|
17
|
+
import type { ZLinkSessionBindingConfirmationOptions } from './stream-binding-runtime-ports';
|
|
16
18
|
|
|
17
19
|
export interface ZLinkSessionActorCoordinatorOptions {
|
|
18
20
|
readonly actorBindTimeoutMs?: number;
|
|
@@ -31,7 +33,7 @@ export interface ZLinkSessionActorCoordinatorOptions {
|
|
|
31
33
|
actor: ActorRef,
|
|
32
34
|
sessionRid: ActorRef['nodeRid'],
|
|
33
35
|
signal?: AbortSignal,
|
|
34
|
-
options?:
|
|
36
|
+
options?: ZLinkSessionBindingConfirmationOptions
|
|
35
37
|
) => Promise<void>;
|
|
36
38
|
readonly errorSink?: () =>
|
|
37
39
|
| {
|
|
@@ -181,7 +183,13 @@ export class ZLinkSessionActorCoordinator {
|
|
|
181
183
|
boundActorRef,
|
|
182
184
|
this.actorBindingRoutingId(context),
|
|
183
185
|
undefined,
|
|
184
|
-
{
|
|
186
|
+
{
|
|
187
|
+
waitForAcknowledgement,
|
|
188
|
+
binding:
|
|
189
|
+
context.stream instanceof ZLinkManagedStream
|
|
190
|
+
? context.stream.actorBinding(actorRef.actorId)
|
|
191
|
+
: undefined
|
|
192
|
+
}
|
|
185
193
|
);
|
|
186
194
|
const reportFailure = (error: unknown) => {
|
|
187
195
|
// A fire-and-forget route update retains the already-current binding;
|
|
@@ -204,7 +212,7 @@ export class ZLinkSessionActorCoordinator {
|
|
|
204
212
|
if (context.stream instanceof ZLinkManagedStream) {
|
|
205
213
|
await context.stream.unbindActor(
|
|
206
214
|
actorRef.actorId,
|
|
207
|
-
this.options.actorBindTimeoutMs ??
|
|
215
|
+
this.options.actorBindTimeoutMs ?? DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS
|
|
208
216
|
);
|
|
209
217
|
}
|
|
210
218
|
} catch (cleanupError) {
|
|
@@ -354,7 +362,11 @@ export class ZLinkSessionActorCoordinator {
|
|
|
354
362
|
true
|
|
355
363
|
);
|
|
356
364
|
}
|
|
357
|
-
route
|
|
365
|
+
// A location refresh never changes the route's Session binding
|
|
366
|
+
// generation; the native bind owns it.
|
|
367
|
+
route.actor.updateRef(
|
|
368
|
+
withBindingGeneration(normalizedActorRef, bindingGenerationOf(route.actor.ref), undefined)
|
|
369
|
+
);
|
|
358
370
|
if (authorityFence !== undefined) {
|
|
359
371
|
await this.routes.updateAuthorityFence(normalizedActorRef.actorId, authorityFence);
|
|
360
372
|
}
|
|
@@ -463,7 +475,7 @@ export class ZLinkSessionActorCoordinator {
|
|
|
463
475
|
try {
|
|
464
476
|
await context.stream.bindActor(
|
|
465
477
|
actorRef,
|
|
466
|
-
this.options.actorBindTimeoutMs ??
|
|
478
|
+
this.options.actorBindTimeoutMs ?? DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS,
|
|
467
479
|
signal,
|
|
468
480
|
context.actorBindingReplacedHandler,
|
|
469
481
|
authorityFence
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import { ZLinkFrameworkInternalErrorKind } from '../framework-errors-internal';
|
|
2
1
|
import type {
|
|
3
2
|
ZLinkBoundSessionSendCall,
|
|
4
3
|
ZLinkSessionReplyCall,
|
|
5
4
|
ZLinkSessionSendCall
|
|
6
5
|
} from '../../contracts';
|
|
7
|
-
import type { ZLinkSubmitResult } from '../messaging/submission-result';
|
|
8
|
-
import { requireOneWayCompletion } from '../messaging/submission-result';
|
|
9
6
|
import type { Message } from '../../contracts/Common/Message';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
7
|
+
import { ZLinkFrameworkInternalErrorKind } from '../framework-errors-internal';
|
|
8
|
+
import { type ZLinkSubmitResult, requireOneWayCompletion } from '../messaging/submission-result';
|
|
9
|
+
|
|
12
10
|
import {
|
|
13
11
|
ensureSingleSubmit,
|
|
14
12
|
resolvePacketName,
|
|
@@ -22,19 +20,14 @@ export interface ZLinkBoundSessionSendRuntime {
|
|
|
22
20
|
actorId: string,
|
|
23
21
|
message: unknown,
|
|
24
22
|
packetName: string | undefined,
|
|
25
|
-
metadata: ReadonlyMap<string, string
|
|
26
|
-
signal?: AbortSignal
|
|
23
|
+
metadata: ReadonlyMap<string, string>
|
|
27
24
|
): Promise<ZLinkSubmitResult>;
|
|
28
25
|
}
|
|
29
26
|
|
|
30
27
|
export interface ZLinkSessionCallContext {
|
|
31
28
|
readonly stream: {
|
|
32
29
|
writeRaw(payload: Message): boolean;
|
|
33
|
-
submitRaw(
|
|
34
|
-
payload: Message,
|
|
35
|
-
signal?: AbortSignal,
|
|
36
|
-
timeoutMs?: number
|
|
37
|
-
): Promise<ZLinkSubmitResult>;
|
|
30
|
+
submitRaw(payload: Message): Promise<ZLinkSubmitResult>;
|
|
38
31
|
};
|
|
39
32
|
readonly dispatchHeader: ZLinkStreamFrameHeader | undefined;
|
|
40
33
|
createJsonFrameMessage(
|
|
@@ -87,17 +80,15 @@ export class DefaultZLinkBoundSessionSendCall implements ZLinkBoundSessionSendCa
|
|
|
87
80
|
return this;
|
|
88
81
|
}
|
|
89
82
|
|
|
90
|
-
async submit(
|
|
83
|
+
async submit(): Promise<void> {
|
|
91
84
|
ensureSingleSubmit(this.executed);
|
|
92
85
|
const packetName = resolvePacketName(this.message, this.selectedPacketName);
|
|
93
86
|
this.executed = true;
|
|
94
|
-
throwIfAborted(signal);
|
|
95
87
|
const result = await this.runtime.sendBoundSession(
|
|
96
88
|
this.actorId,
|
|
97
89
|
this.message,
|
|
98
90
|
packetName,
|
|
99
|
-
this.selectedMetadata
|
|
100
|
-
signal
|
|
91
|
+
this.selectedMetadata
|
|
101
92
|
);
|
|
102
93
|
requireOneWayCompletion(
|
|
103
94
|
result,
|
|
@@ -111,7 +102,6 @@ export class DefaultZLinkSessionSendCall implements ZLinkSessionSendCall {
|
|
|
111
102
|
private selectedPacketName: string | undefined;
|
|
112
103
|
private readonly selectedMetadata = new Map<string, string>();
|
|
113
104
|
private compressionEnabled = false;
|
|
114
|
-
private selectedTimeoutMs: number | undefined;
|
|
115
105
|
private executed = false;
|
|
116
106
|
|
|
117
107
|
constructor(
|
|
@@ -134,21 +124,10 @@ export class DefaultZLinkSessionSendCall implements ZLinkSessionSendCall {
|
|
|
134
124
|
return this;
|
|
135
125
|
}
|
|
136
126
|
|
|
137
|
-
|
|
138
|
-
if (!Number.isInteger(timeoutMs) || timeoutMs < 1 || timeoutMs > 2_147_483_647) {
|
|
139
|
-
throw new ZLinkConfigurationException(
|
|
140
|
-
'STREAM session send timeout must be an integer from 1 through 2147483647 milliseconds.'
|
|
141
|
-
);
|
|
142
|
-
}
|
|
143
|
-
this.selectedTimeoutMs = timeoutMs;
|
|
144
|
-
return this;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
async submit(signal?: AbortSignal): Promise<void> {
|
|
127
|
+
async submit(): Promise<void> {
|
|
148
128
|
ensureSingleSubmit(this.executed);
|
|
149
129
|
const packetName = resolvePacketName(this.message, this.selectedPacketName);
|
|
150
130
|
this.executed = true;
|
|
151
|
-
throwIfAborted(signal);
|
|
152
131
|
const message = this.context.createJsonFrameMessage(
|
|
153
132
|
ZLinkStreamMessageKind.Send,
|
|
154
133
|
packetName,
|
|
@@ -158,7 +137,7 @@ export class DefaultZLinkSessionSendCall implements ZLinkSessionSendCall {
|
|
|
158
137
|
this.message
|
|
159
138
|
);
|
|
160
139
|
try {
|
|
161
|
-
const result = await this.context.stream.submitRaw(message
|
|
140
|
+
const result = await this.context.stream.submitRaw(message);
|
|
162
141
|
requireOneWayCompletion(result, 'STREAM session send');
|
|
163
142
|
this.context.traceFrameWritten?.(ZLinkStreamMessageKind.Send, packetName, undefined);
|
|
164
143
|
} finally {
|
|
@@ -181,7 +160,7 @@ export class DefaultZLinkSessionReplyCall implements ZLinkSessionReplyCall {
|
|
|
181
160
|
return this;
|
|
182
161
|
}
|
|
183
162
|
|
|
184
|
-
async submit(
|
|
163
|
+
async submit(): Promise<void> {
|
|
185
164
|
ensureSingleSubmit(this.executed);
|
|
186
165
|
this.executed = true;
|
|
187
166
|
const requestHeader = this.context.dispatchHeader;
|
|
@@ -189,10 +168,6 @@ export class DefaultZLinkSessionReplyCall implements ZLinkSessionReplyCall {
|
|
|
189
168
|
throw new Error('Reply is only available while handling a request packet.');
|
|
190
169
|
}
|
|
191
170
|
this.context.claimReply(requestHeader);
|
|
192
|
-
// Reply-token validity wins over caller cancellation. Claiming before the
|
|
193
|
-
// pre-cancel check keeps duplicate calls deterministic while still making
|
|
194
|
-
// a pre-cancelled first call perform no transport admission.
|
|
195
|
-
throwIfAborted(signal);
|
|
196
171
|
const message = this.context.createJsonReplyFrameMessage(
|
|
197
172
|
requestHeader,
|
|
198
173
|
ZLinkStreamMessageKind.Response,
|
|
@@ -201,7 +176,7 @@ export class DefaultZLinkSessionReplyCall implements ZLinkSessionReplyCall {
|
|
|
201
176
|
this.message
|
|
202
177
|
);
|
|
203
178
|
try {
|
|
204
|
-
const result = await this.context.stream.submitRaw(message
|
|
179
|
+
const result = await this.context.stream.submitRaw(message);
|
|
205
180
|
requireOneWayCompletion(result, 'STREAM session reply');
|
|
206
181
|
this.context.traceFrameWritten?.(
|
|
207
182
|
ZLinkStreamMessageKind.Response,
|