@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,11 +1,10 @@
|
|
|
1
|
-
import { ZLinkFrameworkInternalErrorKind } from '../framework-errors-internal';
|
|
2
1
|
import type {
|
|
3
2
|
ActorRef,
|
|
4
3
|
RoutingId,
|
|
5
4
|
Type,
|
|
6
|
-
ZLinkMessage,
|
|
7
5
|
ZLinkActor,
|
|
8
6
|
ZLinkBoundSession,
|
|
7
|
+
ZLinkMessage,
|
|
9
8
|
ZLinkSessionActor,
|
|
10
9
|
ZLinkSessionActors,
|
|
11
10
|
ZLinkSessionClient,
|
|
@@ -17,18 +16,27 @@ import type {
|
|
|
17
16
|
ZLinkSessionSendCall,
|
|
18
17
|
ZLinkStream
|
|
19
18
|
} from '../../contracts';
|
|
20
|
-
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
21
|
-
import type { ZLinkSubmitResult } from '../messaging/submission-result';
|
|
22
|
-
import { requireOneWayCompletion } from '../messaging/submission-result';
|
|
23
19
|
import type { Message } from '../../contracts/Common/Message';
|
|
20
|
+
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
24
21
|
import { readZLinkDecoratorMetadata } from '../../contracts/Handlers/Attributes';
|
|
25
22
|
import { throwIfAborted } from '../abort';
|
|
23
|
+
import { releaseApplicationJobPermitBeforeHandler } from '../application-jobs/application-job-queue-scope';
|
|
26
24
|
import { ZLinkConfigurationException } from '../configuration';
|
|
25
|
+
import {
|
|
26
|
+
guardStateLaneCompletion,
|
|
27
|
+
isStructuralGuardEnabled,
|
|
28
|
+
trackDiagnosticCompletion
|
|
29
|
+
} from '../execution/state-lane';
|
|
30
|
+
import type { ServiceActorRef } from '../foundation/service-stateful-registry';
|
|
31
|
+
import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
|
|
32
|
+
import { ZLinkFrameworkInternalErrorKind } from '../framework-errors-internal';
|
|
33
|
+
import { type ZLinkSubmitResult, requireOneWayCompletion } from '../messaging/submission-result';
|
|
34
|
+
|
|
27
35
|
import {
|
|
28
36
|
messageToBytes,
|
|
29
|
-
type ZLinkStreamFrameHeader,
|
|
30
37
|
ZLinkStreamHeaderFlags,
|
|
31
38
|
ZLinkStreamMessageKind,
|
|
39
|
+
type ZLinkStreamFrameHeader,
|
|
32
40
|
type ZLinkStreamReplyMessageKind
|
|
33
41
|
} from './protocol';
|
|
34
42
|
import {
|
|
@@ -36,15 +44,12 @@ import {
|
|
|
36
44
|
DefaultZLinkSessionReplyCall,
|
|
37
45
|
DefaultZLinkSessionSendCall
|
|
38
46
|
} from './session-calls';
|
|
39
|
-
import { ZLinkSessionRequestTracker, type ZLinkPendingSessionRequest } from './session-requests';
|
|
40
47
|
import { ZLinkSessionLocalActorBindings } from './session-local-actors';
|
|
41
|
-
import type
|
|
42
|
-
import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
|
|
43
|
-
import { releaseApplicationJobPermitBeforeHandler } from '../application-jobs/application-job-queue-scope';
|
|
48
|
+
import { ZLinkSessionRequestTracker, type ZLinkPendingSessionRequest } from './session-requests';
|
|
44
49
|
|
|
45
50
|
export interface ZLinkSessionContextStream extends ZLinkStream {
|
|
46
51
|
writeRaw(payload: Message, flags?: number): boolean;
|
|
47
|
-
submitRaw(payload: Message
|
|
52
|
+
submitRaw(payload: Message): Promise<ZLinkSubmitResult>;
|
|
48
53
|
enqueueActorBound?(actorSlot: number, actorId: string): Promise<void>;
|
|
49
54
|
enqueueActorUnbound?(actorSlot: number): Promise<void>;
|
|
50
55
|
}
|
|
@@ -83,7 +88,6 @@ interface ZLinkSessionContextRuntime {
|
|
|
83
88
|
relay(
|
|
84
89
|
actor: DefaultZLinkSessionActor,
|
|
85
90
|
payload: ZLinkMessage,
|
|
86
|
-
signal?: AbortSignal,
|
|
87
91
|
dispatchHeader?: ZLinkStreamFrameHeader
|
|
88
92
|
): Promise<ZLinkSubmitResult>;
|
|
89
93
|
notifyDisconnected(actor: DefaultZLinkSessionActor, signal?: AbortSignal): Promise<void>;
|
|
@@ -533,30 +537,22 @@ export class DefaultZLinkSessionActor implements ZLinkSessionActor {
|
|
|
533
537
|
this.currentRef = ref;
|
|
534
538
|
}
|
|
535
539
|
|
|
536
|
-
async relay(payload: ZLinkMessage
|
|
537
|
-
async relay(
|
|
538
|
-
dispatch: ZLinkSessionDispatchContext,
|
|
539
|
-
payload: ZLinkMessage,
|
|
540
|
-
signal?: AbortSignal
|
|
541
|
-
): Promise<void>;
|
|
540
|
+
async relay(payload: ZLinkMessage): Promise<void>;
|
|
541
|
+
async relay(dispatch: ZLinkSessionDispatchContext, payload: ZLinkMessage): Promise<void>;
|
|
542
542
|
async relay(
|
|
543
543
|
dispatchOrPayload: ZLinkSessionDispatchContext | ZLinkMessage,
|
|
544
|
-
|
|
545
|
-
signal?: AbortSignal
|
|
544
|
+
selectedPayload?: ZLinkMessage
|
|
546
545
|
): Promise<void> {
|
|
547
546
|
const dispatch = isSessionDispatchContext(dispatchOrPayload) ? dispatchOrPayload : undefined;
|
|
548
547
|
let payload: ZLinkMessage;
|
|
549
|
-
let relaySignal: AbortSignal | undefined;
|
|
550
548
|
let header: ZLinkStreamFrameHeader | undefined;
|
|
551
549
|
if (dispatch === undefined) {
|
|
552
550
|
payload = dispatchOrPayload as ZLinkMessage;
|
|
553
|
-
relaySignal = payloadOrSignal as AbortSignal | undefined;
|
|
554
551
|
} else {
|
|
555
|
-
payload =
|
|
556
|
-
relaySignal = signal;
|
|
552
|
+
payload = selectedPayload as ZLinkMessage;
|
|
557
553
|
header = sessionDispatchHeader(dispatch);
|
|
558
554
|
}
|
|
559
|
-
const result = await this.runtime.relay(this, payload,
|
|
555
|
+
const result = await this.runtime.relay(this, payload, header);
|
|
560
556
|
requireOneWayCompletion(
|
|
561
557
|
result,
|
|
562
558
|
'Session Actor relay',
|
|
@@ -652,3 +648,42 @@ function sameRetiredSession(
|
|
|
652
648
|
left.retiredBindingGeneration === right.retiredBindingGeneration
|
|
653
649
|
);
|
|
654
650
|
}
|
|
651
|
+
|
|
652
|
+
if (isStructuralGuardEnabled()) {
|
|
653
|
+
const controlsGetter = Object.getOwnPropertyDescriptor(
|
|
654
|
+
DefaultZLinkSessionContext.prototype,
|
|
655
|
+
'actorSlotControls'
|
|
656
|
+
)?.get;
|
|
657
|
+
if (controlsGetter !== undefined) {
|
|
658
|
+
Object.defineProperty(DefaultZLinkSessionContext.prototype, 'actorSlotControls', {
|
|
659
|
+
configurable: true,
|
|
660
|
+
get(this: DefaultZLinkSessionContext) {
|
|
661
|
+
const controls = controlsGetter.call(this) as
|
|
662
|
+
| {
|
|
663
|
+
enqueueBound(actorSlot: number, actorId: string): Promise<void>;
|
|
664
|
+
enqueueUnbound(actorSlot: number): Promise<void>;
|
|
665
|
+
}
|
|
666
|
+
| undefined;
|
|
667
|
+
if (controls === undefined) return undefined;
|
|
668
|
+
return {
|
|
669
|
+
enqueueBound: (actorSlot: number, actorId: string) =>
|
|
670
|
+
guardStateLaneCompletion(
|
|
671
|
+
trackDiagnosticCompletion(
|
|
672
|
+
controls.enqueueBound(actorSlot, actorId),
|
|
673
|
+
`binding transport bound ${actorId}`
|
|
674
|
+
),
|
|
675
|
+
'binding transport completion'
|
|
676
|
+
),
|
|
677
|
+
enqueueUnbound: (actorSlot: number) =>
|
|
678
|
+
guardStateLaneCompletion(
|
|
679
|
+
trackDiagnosticCompletion(
|
|
680
|
+
controls.enqueueUnbound(actorSlot),
|
|
681
|
+
`binding transport unbound ${actorSlot}`
|
|
682
|
+
),
|
|
683
|
+
'binding transport completion'
|
|
684
|
+
)
|
|
685
|
+
};
|
|
686
|
+
}
|
|
687
|
+
});
|
|
688
|
+
}
|
|
689
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { UINT64_MAX } from '@zlink-systems/stream-wire';
|
|
1
2
|
import type { Message } from '../../contracts/Common/Message';
|
|
2
3
|
import { copyMessage } from './stream-message-utils';
|
|
3
4
|
|
|
@@ -102,7 +103,7 @@ export class ZLinkSessionRequestTracker {
|
|
|
102
103
|
|
|
103
104
|
private next(): bigint {
|
|
104
105
|
do {
|
|
105
|
-
this.nextRequestSeq = (this.nextRequestSeq + 1n) &
|
|
106
|
+
this.nextRequestSeq = (this.nextRequestSeq + 1n) & UINT64_MAX;
|
|
106
107
|
} while (this.nextRequestSeq === 0n);
|
|
107
108
|
return this.nextRequestSeq;
|
|
108
109
|
}
|
|
@@ -3,6 +3,7 @@ import type { ZLinkBackendActorSessionNode } from '../backend';
|
|
|
3
3
|
import type { ZLinkSubmitResult } from '../messaging/submission-result';
|
|
4
4
|
import type { DefaultZLinkSessionActor } from './session-context';
|
|
5
5
|
import type { ZLinkBoundSessionResponseTarget } from './bound-session-response-target';
|
|
6
|
+
import type { ServiceStreamSessionBinding } from '../foundation/service-runtime-contracts';
|
|
6
7
|
|
|
7
8
|
export interface ZLinkStreamActorLookupPort {
|
|
8
9
|
find(actorId: string): Promise<DefaultZLinkSessionActor | undefined>;
|
|
@@ -74,8 +75,28 @@ export interface ZLinkBoundSessionResponsePort {
|
|
|
74
75
|
): Promise<boolean>;
|
|
75
76
|
}
|
|
76
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Session–Actor binding §5: the Session owner's registry snapshot travels with
|
|
80
|
+
* the bind confirmation so a same-node Actor owner installs the same identity a
|
|
81
|
+
* remote command 38 would carry.
|
|
82
|
+
*/
|
|
83
|
+
export interface ZLinkSessionBindingConfirmationOptions {
|
|
84
|
+
readonly waitForAcknowledgement?: boolean;
|
|
85
|
+
readonly binding?: ServiceStreamSessionBinding;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** The exact Session binding identity a relocation validated (§8.1). */
|
|
89
|
+
export interface ZLinkSessionBindingIdentity {
|
|
90
|
+
readonly sessionRid: string;
|
|
91
|
+
readonly bindingGeneration: bigint;
|
|
92
|
+
}
|
|
93
|
+
|
|
77
94
|
export interface ZLinkRemoteBoundSessionPort extends ZLinkStreamActorLifecyclePort {
|
|
78
|
-
|
|
95
|
+
closeSessionBinding(
|
|
96
|
+
actorId: string,
|
|
97
|
+
expected: ZLinkSessionBindingIdentity,
|
|
98
|
+
signal?: AbortSignal
|
|
99
|
+
): Promise<void>;
|
|
79
100
|
sendLocalBoundSession(
|
|
80
101
|
actorId: string,
|
|
81
102
|
message: unknown,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ZLinkStreamCompressionCodec, ZLinkStreamCompressionOptions } from '../../contracts';
|
|
2
|
+
import { defaultMaxDecompressedPayloadSize } from '@zlink-systems/stream-wire';
|
|
2
3
|
import type { Message } from '../../contracts/Common/Message';
|
|
3
4
|
import { ZLinkBufferMessage as ZLinkBindingMessage } from '../backend/runtime-message';
|
|
4
5
|
import { currentOrCreateFlow } from '../diagnostics/flow-context';
|
|
@@ -18,8 +19,6 @@ import {
|
|
|
18
19
|
type ZLinkStreamReplyMessageKind
|
|
19
20
|
} from './protocol';
|
|
20
21
|
|
|
21
|
-
const DEFAULT_MAX_DECOMPRESSED_STREAM_PAYLOAD_SIZE = 64 * 1024;
|
|
22
|
-
|
|
23
22
|
export interface ZLinkStreamFramePayloadCodec {
|
|
24
23
|
encode(
|
|
25
24
|
payload: unknown,
|
|
@@ -245,7 +244,7 @@ function compressStreamPayload(
|
|
|
245
244
|
export function decompressStreamPayload(
|
|
246
245
|
payload: Uint8Array,
|
|
247
246
|
codec: ZLinkStreamCompressionCodec | undefined,
|
|
248
|
-
maxDecompressedSize =
|
|
247
|
+
maxDecompressedSize = defaultMaxDecompressedPayloadSize
|
|
249
248
|
): Uint8Array {
|
|
250
249
|
if (codec === undefined) {
|
|
251
250
|
throw new Error('Compression codec is not configured.');
|
|
@@ -1,61 +1,66 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
createInternalFrameworkException
|
|
4
|
-
} from '../framework-errors-internal';
|
|
5
|
-
import type { ZLinkMessageSerializer, RoutingId, ZLinkSession } from '../../contracts';
|
|
1
|
+
import type { RoutingId, ZLinkMessageSerializer, ZLinkSession } from '../../contracts';
|
|
2
|
+
import type { Message } from '../../contracts/Common/Message';
|
|
6
3
|
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
7
|
-
import {
|
|
4
|
+
import { DEFAULT_SESSION_REPLACEMENT_CALLBACK_TIMEOUT_MS } from '../../contracts/Configuration/Registration';
|
|
8
5
|
import {
|
|
9
|
-
ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome,
|
|
10
6
|
ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
|
|
11
7
|
ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
|
|
12
8
|
ZLinkDispatchErrorSurface,
|
|
13
|
-
ZLinkDispatchMessageKind
|
|
9
|
+
ZLinkDispatchMessageKind,
|
|
10
|
+
ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome
|
|
14
11
|
} from '../../contracts/Dispatch/ZLinkDispatchOptions';
|
|
15
|
-
import type { Message } from '../../contracts/Common/Message';
|
|
16
12
|
import { throwIfAborted } from '../abort';
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
import {
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
import { type ZLinkApplicationWorkClaim, shouldCompactBackingArray } from '../admission';
|
|
14
|
+
|
|
15
|
+
import {
|
|
16
|
+
releaseApplicationJobPermitBeforeHandler,
|
|
17
|
+
runWithApplicationJobPermit
|
|
18
|
+
} from '../application-jobs/application-job-queue-scope';
|
|
19
|
+
import type {
|
|
20
|
+
ApplicationJobPermitPort,
|
|
21
|
+
ApplicationJobQueuePort
|
|
22
|
+
} from '../application-jobs/contracts';
|
|
22
23
|
import type {
|
|
24
|
+
ZLinkBackendReadablePoller,
|
|
23
25
|
ZLinkBackendSocketMonitor,
|
|
24
26
|
ZLinkBackendSocketMonitorEvent,
|
|
25
|
-
ZLinkBackendReadablePoller,
|
|
26
27
|
ZLinkBackendStreamPacket,
|
|
27
28
|
ZLinkBackendStreamSocket
|
|
28
29
|
} from '../backend/contracts';
|
|
29
30
|
import type { ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
|
|
31
|
+
import { ZLinkDispatchErrorReporter, ZLinkRouteDisconnectedError } from '../channels';
|
|
32
|
+
import { type ZLinkRuntimeMetrics, flowIfEnabled } from '../diagnostics';
|
|
33
|
+
|
|
34
|
+
import { createInboundFlow, runWithFlow } from '../diagnostics/flow-context';
|
|
35
|
+
import { ZLinkSocketNativeEventType } from '../diagnostics/internal-event-contracts';
|
|
36
|
+
import { METRIC_NAMES } from '../diagnostics/runtime-metrics';
|
|
30
37
|
import type { StreamSessionService } from '../foundation/service-runtime-contracts';
|
|
38
|
+
import type { ServiceActorRef } from '../foundation/service-stateful-registry';
|
|
39
|
+
import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
|
|
40
|
+
import {
|
|
41
|
+
createInternalFrameworkException,
|
|
42
|
+
ZLinkFrameworkInternalErrorKind
|
|
43
|
+
} from '../framework-errors-internal';
|
|
44
|
+
import { wrapFrameworkPayloadMessage } from '../messaging/payload-codec';
|
|
45
|
+
import { boundSessionErrorPayload } from './bound-session-response-target';
|
|
46
|
+
import {
|
|
47
|
+
streamSessionIdFromRoutingId,
|
|
48
|
+
ZLinkManagedStream,
|
|
49
|
+
type ZLinkNativeSessionRoute
|
|
50
|
+
} from './managed-stream';
|
|
31
51
|
import {
|
|
32
52
|
decodeStreamHeader,
|
|
33
53
|
messageToBytes,
|
|
34
54
|
streamCodecContentType,
|
|
35
|
-
type ZLinkStreamFrameHeader,
|
|
36
55
|
ZLINK_STREAM_HEARTBEAT_PING,
|
|
37
56
|
ZLINK_STREAM_HEARTBEAT_PONG,
|
|
38
57
|
ZLinkStreamCloseReasonCode,
|
|
39
|
-
ZLinkStreamMessageKind
|
|
58
|
+
ZLinkStreamMessageKind,
|
|
59
|
+
type ZLinkStreamFrameHeader
|
|
40
60
|
} from './protocol';
|
|
41
|
-
import { createInboundFlow, runWithFlow } from '../diagnostics/flow-context';
|
|
42
|
-
import {
|
|
43
|
-
streamSessionIdFromRoutingId,
|
|
44
|
-
ZLinkManagedStream,
|
|
45
|
-
type ZLinkNativeSessionRoute
|
|
46
|
-
} from './managed-stream';
|
|
47
61
|
import { createSessionDispatchContext, DefaultZLinkSessionContext } from './session-context';
|
|
48
62
|
import { ZLinkSessionSerialExecutor } from './session-serial-executor';
|
|
49
|
-
import type { ZLinkApplicationWorkClaim } from '../admission';
|
|
50
63
|
import { ownedMessage } from './stream-message-utils';
|
|
51
|
-
import type { ServiceActorRef } from '../foundation/service-stateful-registry';
|
|
52
|
-
import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
|
|
53
|
-
import type {
|
|
54
|
-
ApplicationJobPermitPort,
|
|
55
|
-
ApplicationJobQueuePort
|
|
56
|
-
} from '../application-jobs/contracts';
|
|
57
|
-
import { runWithApplicationJobPermit } from '../application-jobs/application-job-queue-scope';
|
|
58
|
-
import { releaseApplicationJobPermitBeforeHandler } from '../application-jobs/application-job-queue-scope';
|
|
59
64
|
|
|
60
65
|
const ZLINK_SEND_DONT_WAIT = 1;
|
|
61
66
|
const ZLINK_RECV_DONT_WAIT = 1;
|
|
@@ -63,7 +68,6 @@ const ZLINK_STREAM_HEARTBEAT_INTERVAL_MS = 1_000;
|
|
|
63
68
|
const ZLINK_STREAM_HEARTBEAT_TIMEOUT_MS = 5_000;
|
|
64
69
|
const ZLINK_STREAM_APPLICATION_IDLE_TIMEOUT_MS = 30_000;
|
|
65
70
|
const ZLINK_STREAM_RECEIVE_FRAME_BATCH_LIMIT = 64;
|
|
66
|
-
const ZLINK_STREAM_ACTOR_BINDING_REPLACEMENT_CALLBACK_TIMEOUT_MS = 30_000;
|
|
67
71
|
const ZLINK_STREAM_ACTOR_BINDING_REPLACEMENT_CLOSE_DELAY_MS = 100;
|
|
68
72
|
const ZLINK_STREAM_MONITOR_IDLE_MIN_DELAY_MS = 1;
|
|
69
73
|
const ZLINK_STREAM_MONITOR_IDLE_MAX_DELAY_MS = 20;
|
|
@@ -162,7 +166,7 @@ export class ZLinkStreamSessionRuntime {
|
|
|
162
166
|
private metricsClosed = false;
|
|
163
167
|
private readonly livenessClock: ZLinkStreamLivenessClock;
|
|
164
168
|
private lastApplicationActivityAt = 0;
|
|
165
|
-
private
|
|
169
|
+
private lastInboundFrameAt = 0;
|
|
166
170
|
private livenessTimer: unknown;
|
|
167
171
|
|
|
168
172
|
constructor(
|
|
@@ -243,6 +247,7 @@ export class ZLinkStreamSessionRuntime {
|
|
|
243
247
|
terminalOwner?: ZLinkRetainedStreamOwner,
|
|
244
248
|
applicationJobPermit?: ApplicationJobPermitPort
|
|
245
249
|
): void {
|
|
250
|
+
this.lastInboundFrameAt = Math.max(this.lastInboundFrameAt, this.livenessClock.now());
|
|
246
251
|
let terminalReleased = false;
|
|
247
252
|
const releaseTerminal = (): void => {
|
|
248
253
|
if (terminalReleased) return;
|
|
@@ -389,7 +394,7 @@ export class ZLinkStreamSessionRuntime {
|
|
|
389
394
|
}
|
|
390
395
|
forcedClose = true;
|
|
391
396
|
void this.close().catch((error) => this.options.onError?.(error));
|
|
392
|
-
}, this.options.replacementCallbackTimeoutMs ??
|
|
397
|
+
}, this.options.replacementCallbackTimeoutMs ?? DEFAULT_SESSION_REPLACEMENT_CALLBACK_TIMEOUT_MS);
|
|
393
398
|
|
|
394
399
|
const callback = session.onActorBindingReplaced;
|
|
395
400
|
if (callback === undefined) {
|
|
@@ -453,10 +458,12 @@ export class ZLinkStreamSessionRuntime {
|
|
|
453
458
|
return;
|
|
454
459
|
}
|
|
455
460
|
this.connected = true;
|
|
456
|
-
|
|
461
|
+
const connectedAt = this.livenessClock.now();
|
|
462
|
+
this.lastApplicationActivityAt = connectedAt;
|
|
463
|
+
this.lastInboundFrameAt = Math.max(this.lastInboundFrameAt, connectedAt);
|
|
457
464
|
this.scheduleLivenessCheck();
|
|
458
|
-
this.options.metrics?.change(
|
|
459
|
-
this.options.metrics?.count(
|
|
465
|
+
this.options.metrics?.change(METRIC_NAMES.StreamConnectionsActive, 1, { transport: 'tcp' });
|
|
466
|
+
this.options.metrics?.count(METRIC_NAMES.StreamConnectionsOpened, 1, { transport: 'tcp' });
|
|
460
467
|
const session = await this.requireSession();
|
|
461
468
|
await session.onConnected?.(this.context);
|
|
462
469
|
}
|
|
@@ -650,7 +657,6 @@ export class ZLinkStreamSessionRuntime {
|
|
|
650
657
|
return;
|
|
651
658
|
}
|
|
652
659
|
if (header.name === ZLINK_STREAM_HEARTBEAT_PONG) {
|
|
653
|
-
this.awaitingPongSince = undefined;
|
|
654
660
|
return;
|
|
655
661
|
}
|
|
656
662
|
if (header.name === ZLINK_STREAM_HEARTBEAT_PING) {
|
|
@@ -691,10 +697,7 @@ export class ZLinkStreamSessionRuntime {
|
|
|
691
697
|
);
|
|
692
698
|
return;
|
|
693
699
|
}
|
|
694
|
-
if (
|
|
695
|
-
this.awaitingPongSince !== undefined &&
|
|
696
|
-
now - this.awaitingPongSince >= ZLINK_STREAM_HEARTBEAT_TIMEOUT_MS
|
|
697
|
-
) {
|
|
700
|
+
if (now - this.lastInboundFrameAt >= ZLINK_STREAM_HEARTBEAT_TIMEOUT_MS) {
|
|
698
701
|
await this.closeForLiveness(
|
|
699
702
|
ZLinkStreamCloseReasonCode.HeartbeatTimeout,
|
|
700
703
|
'heartbeat_timeout',
|
|
@@ -703,7 +706,6 @@ export class ZLinkStreamSessionRuntime {
|
|
|
703
706
|
return;
|
|
704
707
|
}
|
|
705
708
|
await this.stream.writeControl(ZLINK_STREAM_HEARTBEAT_PING);
|
|
706
|
-
this.awaitingPongSince ??= now;
|
|
707
709
|
this.scheduleLivenessCheck();
|
|
708
710
|
}
|
|
709
711
|
|
|
@@ -829,8 +831,8 @@ export class ZLinkStreamSessionRuntime {
|
|
|
829
831
|
private async cleanup(): Promise<void> {
|
|
830
832
|
if (this.connected && !this.metricsClosed) {
|
|
831
833
|
this.metricsClosed = true;
|
|
832
|
-
this.options.metrics?.change(
|
|
833
|
-
this.options.metrics?.count(
|
|
834
|
+
this.options.metrics?.change(METRIC_NAMES.StreamConnectionsActive, -1, { transport: 'tcp' });
|
|
835
|
+
this.options.metrics?.count(METRIC_NAMES.StreamConnectionsClosed, 1, {
|
|
834
836
|
transport: 'tcp',
|
|
835
837
|
close_reason: normalizeStreamCloseReason(this.closeReason)
|
|
836
838
|
});
|
|
@@ -956,7 +958,6 @@ export class ZLinkStreamSessionNodeRuntime {
|
|
|
956
958
|
private readonly unaddressedMonitorSessions: Array<string | undefined> = [];
|
|
957
959
|
private unaddressedMonitorSessionHead = 0;
|
|
958
960
|
private unaddressedMonitorSessionCount = 0;
|
|
959
|
-
private readonly disconnectedEndpoints = new Set<string>();
|
|
960
961
|
private pendingEndpointlessDisconnect:
|
|
961
962
|
| {
|
|
962
963
|
readonly session: ZLinkStreamSessionRuntime;
|
|
@@ -1238,18 +1239,12 @@ export class ZLinkStreamSessionNodeRuntime {
|
|
|
1238
1239
|
}
|
|
1239
1240
|
switch (event.nativeEvent) {
|
|
1240
1241
|
case ZLinkSocketNativeEventType.ConnectionReady:
|
|
1242
|
+
if (!event.readyEdge) return;
|
|
1241
1243
|
this.activityVersion += 1;
|
|
1242
|
-
{
|
|
1243
|
-
const endpointKey = streamMonitorEndpointKey(event.localAddr, event.remoteAddr);
|
|
1244
|
-
if (this.disconnectedEndpoints.delete(endpointKey)) {
|
|
1245
|
-
return;
|
|
1246
|
-
}
|
|
1247
|
-
}
|
|
1248
1244
|
if (event.routingId === undefined) {
|
|
1249
1245
|
const endpointKey = streamMonitorEndpointKey(event.localAddr, event.remoteAddr);
|
|
1250
1246
|
const unaddressed = this.firstUnaddressedSession();
|
|
1251
1247
|
if (unaddressed !== undefined) {
|
|
1252
|
-
this.disconnectedEndpoints.delete(endpointKey);
|
|
1253
1248
|
unaddressed.enqueueConnected(event.localAddr, event.remoteAddr);
|
|
1254
1249
|
this.enqueueUnaddressedMonitorSession(unaddressed.stream.sessionId);
|
|
1255
1250
|
return;
|
|
@@ -1272,7 +1267,6 @@ export class ZLinkStreamSessionNodeRuntime {
|
|
|
1272
1267
|
case ZLinkSocketNativeEventType.Disconnected:
|
|
1273
1268
|
{
|
|
1274
1269
|
const endpointKey = streamMonitorEndpointKey(event.localAddr, event.remoteAddr);
|
|
1275
|
-
this.disconnectedEndpoints.add(endpointKey);
|
|
1276
1270
|
this.removePendingConnectionMetadata(endpointKey);
|
|
1277
1271
|
const session = this.resolveMonitorSession(event);
|
|
1278
1272
|
const error = new Error(`Stream disconnected: ${event.nativeEvent}/${event.value}`);
|
|
@@ -1350,8 +1344,10 @@ export class ZLinkStreamSessionNodeRuntime {
|
|
|
1350
1344
|
this.pendingConnectionMetadata.length = 0;
|
|
1351
1345
|
this.pendingConnectionMetadataHead = 0;
|
|
1352
1346
|
} else if (
|
|
1353
|
-
|
|
1354
|
-
|
|
1347
|
+
shouldCompactBackingArray(
|
|
1348
|
+
this.pendingConnectionMetadataHead,
|
|
1349
|
+
this.pendingConnectionMetadata.length
|
|
1350
|
+
)
|
|
1355
1351
|
) {
|
|
1356
1352
|
this.pendingConnectionMetadata.splice(0, this.pendingConnectionMetadataHead);
|
|
1357
1353
|
this.pendingConnectionMetadataHead = 0;
|
|
@@ -1379,8 +1375,10 @@ export class ZLinkStreamSessionNodeRuntime {
|
|
|
1379
1375
|
this.unaddressedMonitorSessions.length = 0;
|
|
1380
1376
|
this.unaddressedMonitorSessionHead = 0;
|
|
1381
1377
|
} else if (
|
|
1382
|
-
|
|
1383
|
-
|
|
1378
|
+
shouldCompactBackingArray(
|
|
1379
|
+
this.unaddressedMonitorSessionHead,
|
|
1380
|
+
this.unaddressedMonitorSessions.length
|
|
1381
|
+
)
|
|
1384
1382
|
) {
|
|
1385
1383
|
this.unaddressedMonitorSessions.splice(0, this.unaddressedMonitorSessionHead);
|
|
1386
1384
|
this.unaddressedMonitorSessionHead = 0;
|
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ZLinkFrameworkInternalErrorKind,
|
|
3
|
-
createInternalFrameworkException
|
|
4
|
-
} from '../framework-errors-internal';
|
|
5
1
|
import { Worker } from 'node:worker_threads';
|
|
6
|
-
import type
|
|
7
|
-
|
|
8
|
-
import type { ZLinkWorkerOptions } from '../configuration';
|
|
9
|
-
import { ZLinkConfigurationException } from '../configuration';
|
|
2
|
+
import { type ZLinkWorkerCall, ZLinkFrameworkException } from '../../contracts';
|
|
3
|
+
|
|
10
4
|
import {
|
|
11
|
-
defaultWorkerMaxThreads,
|
|
12
5
|
DEFAULT_WORKER_IDLE_TIMEOUT_MS,
|
|
13
|
-
DEFAULT_WORKER_MIN_THREADS
|
|
6
|
+
DEFAULT_WORKER_MIN_THREADS,
|
|
7
|
+
defaultWorkerMaxThreads
|
|
14
8
|
} from '../../contracts/Configuration/InternalDefaults';
|
|
15
9
|
import { createAbortError } from '../abort';
|
|
10
|
+
import { shouldCompactBackingArray } from '../admission';
|
|
11
|
+
import { type ZLinkWorkerOptions, ZLinkConfigurationException } from '../configuration';
|
|
12
|
+
|
|
16
13
|
import {
|
|
17
14
|
captureZLinkSpotSerialTurn,
|
|
18
15
|
requireZLinkYieldTurn,
|
|
19
16
|
type ZLinkSpotSerialTurn
|
|
20
17
|
} from '../execution';
|
|
18
|
+
import {
|
|
19
|
+
ZLinkFrameworkInternalErrorKind,
|
|
20
|
+
createInternalFrameworkException
|
|
21
|
+
} from '../framework-errors-internal';
|
|
21
22
|
|
|
22
23
|
export type ZLinkCpuWorkerWork<T> = (signal: AbortSignal) => T;
|
|
23
24
|
export type ZLinkIoWorkerWork<T> = (signal: AbortSignal) => Promise<T>;
|
|
@@ -332,7 +333,7 @@ class ZLinkCpuWorkerPool {
|
|
|
332
333
|
if (this.queueCount === 0) {
|
|
333
334
|
this.queue.length = 0;
|
|
334
335
|
this.queueHead = 0;
|
|
335
|
-
} else if (this.queueHead
|
|
336
|
+
} else if (shouldCompactBackingArray(this.queueHead, this.queue.length)) {
|
|
336
337
|
this.queue.splice(0, this.queueHead);
|
|
337
338
|
this.queueHead = 0;
|
|
338
339
|
}
|
|
@@ -351,7 +352,7 @@ class ZLinkCpuWorkerPool {
|
|
|
351
352
|
while (this.queueHead < this.queue.length && this.queue[this.queueHead] === undefined) {
|
|
352
353
|
this.queueHead += 1;
|
|
353
354
|
}
|
|
354
|
-
if (this.queueHead
|
|
355
|
+
if (shouldCompactBackingArray(this.queueHead, this.queue.length)) {
|
|
355
356
|
this.queue.splice(0, this.queueHead);
|
|
356
357
|
this.queueHead = 0;
|
|
357
358
|
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { RoutingId } from '../../contracts';
|
|
2
|
-
import type { ZLinkLocationLifecycle } from '../locations';
|
|
3
|
-
export interface ZLinkPostCommitActorLocationOptions {
|
|
4
|
-
readonly lifecycle: ZLinkLocationLifecycle;
|
|
5
|
-
readonly reportError?: (error: unknown) => void;
|
|
6
|
-
readonly signal?: AbortSignal;
|
|
7
|
-
}
|
|
8
|
-
export declare class ZLinkPostCommitActorLocation {
|
|
9
|
-
private readonly options;
|
|
10
|
-
private readonly lane;
|
|
11
|
-
private readonly queues;
|
|
12
|
-
private readonly tasks;
|
|
13
|
-
constructor(options: ZLinkPostCommitActorLocationOptions);
|
|
14
|
-
joinedEventually(actorType: string, actorId: string, meshName: string, spotId: RoutingId, spotGeneration: bigint, membershipEpoch: bigint, ownerNodeGeneration: bigint): void;
|
|
15
|
-
leftEventually(actorType: string, actorId: string, entrySpotId: RoutingId, entrySpotGeneration: bigint, membershipEpoch: bigint, ownerNodeGeneration: bigint): void;
|
|
16
|
-
private enqueue;
|
|
17
|
-
private run;
|
|
18
|
-
private completeCore;
|
|
19
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ZLinkPostCommitActorLocation = void 0;
|
|
4
|
-
const state_lane_1 = require("../execution/state-lane");
|
|
5
|
-
const actor_retry_delay_1 = require("./actor-retry-delay");
|
|
6
|
-
class ZLinkPostCommitActorLocation {
|
|
7
|
-
options;
|
|
8
|
-
lane = new state_lane_1.ZLinkStateLane();
|
|
9
|
-
queues = new Map();
|
|
10
|
-
tasks = new Map();
|
|
11
|
-
constructor(options) {
|
|
12
|
-
this.options = options;
|
|
13
|
-
}
|
|
14
|
-
joinedEventually(actorType, actorId, meshName, spotId, spotGeneration, membershipEpoch, ownerNodeGeneration) {
|
|
15
|
-
this.enqueue(actorId, () => this.options.lifecycle.notifyActorJoinedSpot(actorType, actorId, meshName, spotId, spotGeneration, membershipEpoch, ownerNodeGeneration));
|
|
16
|
-
}
|
|
17
|
-
leftEventually(actorType, actorId, entrySpotId, entrySpotGeneration, membershipEpoch, ownerNodeGeneration) {
|
|
18
|
-
this.enqueue(actorId, () => this.options.lifecycle.notifyActorLeftSpot(actorType, actorId, entrySpotId, entrySpotGeneration, membershipEpoch, ownerNodeGeneration));
|
|
19
|
-
}
|
|
20
|
-
enqueue(actorId, operation) {
|
|
21
|
-
const queue = this.queues.get(actorId) ?? { operations: [], head: 0, count: 0 };
|
|
22
|
-
queue.operations.push(operation);
|
|
23
|
-
queue.count += 1;
|
|
24
|
-
this.queues.set(actorId, queue);
|
|
25
|
-
if (this.tasks.has(actorId)) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
let task;
|
|
29
|
-
task = this.run(actorId).finally(async () => await this.lane.run(() => {
|
|
30
|
-
if (this.tasks.get(actorId) === task) {
|
|
31
|
-
this.tasks.delete(actorId);
|
|
32
|
-
}
|
|
33
|
-
}));
|
|
34
|
-
this.tasks.set(actorId, task);
|
|
35
|
-
}
|
|
36
|
-
async run(actorId) {
|
|
37
|
-
const retryDelay = new actor_retry_delay_1.ZLinkActorRetryDelay();
|
|
38
|
-
while (this.options.signal?.aborted !== true) {
|
|
39
|
-
const queue = this.queues.get(actorId);
|
|
40
|
-
const operation = queue?.operations[queue.head];
|
|
41
|
-
if (queue === undefined || operation === undefined) {
|
|
42
|
-
this.queues.delete(actorId);
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
try {
|
|
46
|
-
await operation();
|
|
47
|
-
await this.lane.run(() => this.completeCore(queue));
|
|
48
|
-
retryDelay.reset();
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
this.options.reportError?.(error);
|
|
52
|
-
if (!(await retryDelay.wait(this.options.signal))) {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
completeCore(queue) {
|
|
59
|
-
queue.operations[queue.head] = undefined;
|
|
60
|
-
queue.head += 1;
|
|
61
|
-
queue.count -= 1;
|
|
62
|
-
if (queue.count === 0) {
|
|
63
|
-
queue.operations.length = 0;
|
|
64
|
-
queue.head = 0;
|
|
65
|
-
}
|
|
66
|
-
else if (queue.head >= 1024 && queue.head * 2 >= queue.operations.length) {
|
|
67
|
-
queue.operations.splice(0, queue.head);
|
|
68
|
-
queue.head = 0;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
exports.ZLinkPostCommitActorLocation = ZLinkPostCommitActorLocation;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { ZLinkActor, ZLinkMessage, ZLinkMessageSerializer, ZLinkSpotActorJoinResult } from '../../contracts';
|
|
2
|
-
import type { ZLinkBackendActorJoinRequest, ZLinkBackendSpot } from '../backend/contracts';
|
|
3
|
-
import type { ZLinkDispatchErrorReporter } from '../channels';
|
|
4
|
-
import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
|
|
5
|
-
interface ZLinkNativeActorJoinAdmissionTarget {
|
|
6
|
-
onActorJoin?(actorId: string, request: ZLinkMessage): Promise<ZLinkSpotActorJoinResult>;
|
|
7
|
-
onJoinedActor?(actor: ZLinkActor): Promise<void>;
|
|
8
|
-
}
|
|
9
|
-
interface ZLinkSpotNativeActorJoinAdmissionOptions {
|
|
10
|
-
readonly nativeSpot: ZLinkBackendSpot;
|
|
11
|
-
readonly serial: ZLinkSpotSerialTurnExecutor;
|
|
12
|
-
readonly resolveActor: (actorId: string) => ZLinkActor | undefined;
|
|
13
|
-
readonly getTarget: () => ZLinkNativeActorJoinAdmissionTarget;
|
|
14
|
-
readonly defaultAccept: boolean;
|
|
15
|
-
readonly commitAcceptedActor?: (actor: ZLinkActor) => Promise<void>;
|
|
16
|
-
readonly messageSerializers?: ReadonlyMap<string, ZLinkMessageSerializer>;
|
|
17
|
-
readonly dispatchErrors?: ZLinkDispatchErrorReporter;
|
|
18
|
-
}
|
|
19
|
-
export declare class ZLinkSpotNativeActorJoinAdmission {
|
|
20
|
-
private readonly options;
|
|
21
|
-
constructor(options: ZLinkSpotNativeActorJoinAdmissionOptions);
|
|
22
|
-
admit(request: ZLinkBackendActorJoinRequest, rejectClosing?: boolean): Promise<void>;
|
|
23
|
-
private decodeNativeActorJoinRequest;
|
|
24
|
-
private reportHandlerException;
|
|
25
|
-
}
|
|
26
|
-
export {};
|