@zlink-systems/framework 0.25.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +5 -0
- package/dist/internal.js +16 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +28 -0
- package/dist/runtime/activation-admission.js +57 -0
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +42 -143
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +19 -17
- package/dist/runtime/actors/actor-handoff.d.ts +13 -7
- package/dist/runtime/actors/actor-handoff.js +36 -25
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +85 -123
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
- package/dist/runtime/actors/actor-remote-joiner.js +11 -17
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
- package/dist/runtime/actors/actor-request-deadline.js +31 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
- package/dist/runtime/actors/deferred-join-completion.js +21 -0
- package/dist/runtime/actors/index.d.ts +10 -8
- package/dist/runtime/actors/index.js +101 -73
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +7 -1
- package/dist/runtime/admission.js +11 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +8 -33
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
- package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -9
- package/dist/runtime/channels/channel-clients.js +68 -60
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.js +47 -29
- package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
- package/dist/runtime/channels/channel-outbound-operations.js +9 -18
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
- package/dist/runtime/channels/channel-runtime-manager.js +4 -12
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
- package/dist/runtime/channels/channel-socket-registry.js +296 -235
- package/dist/runtime/channels/channel-transports.d.ts +11 -20
- package/dist/runtime/channels/channel-transports.js +68 -47
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +133 -81
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.js +3 -2
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +22 -9
- package/dist/runtime/execution/index.js +107 -37
- package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
- package/dist/runtime/execution/serial-execution-queue.js +99 -26
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/listener-records.d.ts +11 -0
- package/dist/runtime/foundation/listener-records.js +20 -0
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
- package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
- package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
- package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
- package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
- package/dist/runtime/foundation/service-topology-registry.js +22 -61
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
- package/dist/runtime/host/actor-packet-relay.js +48 -91
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
- package/dist/runtime/host/actor-transfer-runtime.js +210 -256
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +19 -14
- package/dist/runtime/host/index.js +234 -175
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +11 -23
- package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
- package/dist/runtime/host/route-mesh-runtime.js +178 -257
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
- package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
- package/dist/runtime/host/spot-address-transport.d.ts +2 -3
- package/dist/runtime/host/spot-address-transport.js +34 -136
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
- package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
- package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
- package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +5 -10
- package/dist/runtime/locations/lifecycle.js +4 -33
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +303 -332
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +44 -30
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
- package/dist/runtime/locations/spot-location-claims.js +40 -23
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/submission-result.d.ts +3 -0
- package/dist/runtime/messaging/submission-result.js +48 -0
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
- package/dist/runtime/spots/index.d.ts +29 -29
- package/dist/runtime/spots/index.js +441 -313
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
- package/dist/runtime/spots/spot-activation-registry.js +27 -60
- package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
- package/dist/runtime/spots/spot-activation-state.js +4 -17
- package/dist/runtime/spots/spot-activation.d.ts +10 -9
- package/dist/runtime/spots/spot-activation.js +103 -81
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
- package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
- package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
- package/dist/runtime/spots/spot-actor-membership.js +44 -53
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-entry-activation.js +9 -21
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +6 -5
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
- package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +10 -37
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
- package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
- package/dist/runtime/spots/spot-serial-executor.js +9 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
- package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
- package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -19
- package/dist/runtime/streams/index.d.ts +15 -14
- package/dist/runtime/streams/index.js +38 -39
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +17 -8
- package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +1 -1
- package/dist/runtime/streams/session-calls.js +5 -4
- package/dist/runtime/streams/session-context.d.ts +6 -6
- package/dist/runtime/streams/session-context.js +22 -4
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/session-serial-executor.js +2 -2
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- package/src/internal.ts +15 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +72 -0
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +77 -204
- package/src/runtime/actors/actor-context.ts +45 -39
- package/src/runtime/actors/actor-handoff.ts +55 -45
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +174 -215
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +15 -36
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/actor-source-transfer.ts +5 -18
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +44 -0
- package/src/runtime/actors/index.ts +122 -88
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +13 -2
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +15 -42
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
- package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
- package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
- package/src/runtime/backend/raw-binding-port.ts +14 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +58 -29
- package/src/runtime/channels/channel-outbound-operations.ts +10 -31
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +8 -15
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +369 -262
- package/src/runtime/channels/channel-transports.ts +161 -115
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +175 -106
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +5 -2
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +116 -38
- package/src/runtime/execution/serial-execution-queue.ts +179 -34
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/listener-records.ts +21 -0
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
- package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
- package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
- package/src/runtime/foundation/service-topology-registry.ts +30 -79
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +57 -147
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +266 -418
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +408 -312
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +12 -44
- package/src/runtime/host/route-mesh-runtime.ts +236 -275
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
- package/src/runtime/host/spot-address-transport.ts +73 -195
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
- package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
- package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +16 -45
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +450 -478
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +90 -58
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +54 -26
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/submission-result.ts +57 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
- package/src/runtime/spots/index.ts +687 -437
- package/src/runtime/spots/spot-activation-registry.ts +42 -71
- package/src/runtime/spots/spot-activation-state.ts +4 -16
- package/src/runtime/spots/spot-activation.ts +167 -115
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
- package/src/runtime/spots/spot-actor-membership.ts +107 -75
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -33
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +29 -21
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
- package/src/runtime/spots/spot-outbound.ts +47 -68
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +10 -43
- package/src/runtime/spots/spot-serial-executor.ts +10 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +23 -37
- package/src/runtime/streams/index.ts +102 -88
- package/src/runtime/streams/managed-stream.ts +29 -10
- package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +6 -5
- package/src/runtime/streams/session-context.ts +54 -10
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/session-serial-executor.ts +2 -2
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
- package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -1,33 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkNodeRawMeshBackend = void 0;
|
|
4
|
-
exports.
|
|
4
|
+
exports.requestFailureResult = requestFailureResult;
|
|
5
|
+
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
6
|
+
const zlink_1 = require("@zlink-systems/zlink");
|
|
5
7
|
const node_crypto_1 = require("node:crypto");
|
|
6
8
|
const promises_1 = require("node:timers/promises");
|
|
7
|
-
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
8
|
-
const node_socket_backend_adapter_1 = require("./node-socket-backend-adapter");
|
|
9
9
|
const contracts_1 = require("../../../contracts");
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
10
|
+
const ConfigurationException_1 = require("../../../contracts/Configuration/ConfigurationException");
|
|
11
|
+
const EndpointNotation_1 = require("../../../contracts/Configuration/EndpointNotation");
|
|
12
|
+
const InternalDefaults_1 = require("../../../contracts/Configuration/InternalDefaults");
|
|
13
|
+
const Registration_1 = require("../../../contracts/Configuration/Registration");
|
|
14
|
+
const RegistrationBuilderPolicy_1 = require("../../../contracts/Configuration/RegistrationBuilderPolicy");
|
|
15
|
+
const admission_1 = require("../../admission");
|
|
16
|
+
const operation_identity_1 = require("../../foundation/operation-identity");
|
|
15
17
|
const operation_registry_1 = require("../../foundation/operation-registry");
|
|
16
18
|
const raw_service_mesh_runtime_1 = require("../../foundation/raw-service-mesh-runtime");
|
|
17
|
-
const service_wire_m6a_codec_1 = require("../../foundation/service-wire-m6a-codec");
|
|
18
|
-
const service_wire_constants_generated_1 = require("../../foundation/service-wire-constants.generated");
|
|
19
|
-
const service_stateful_runtime_1 = require("../../foundation/service-stateful-runtime");
|
|
20
|
-
const service_session_binding_ingress_port_1 = require("../../foundation/service-session-binding-ingress-port");
|
|
21
19
|
const service_metadata_codec_1 = require("../../foundation/service-metadata-codec");
|
|
22
|
-
const
|
|
23
|
-
const
|
|
20
|
+
const service_runtime_contracts_1 = require("../../foundation/service-runtime-contracts");
|
|
21
|
+
const service_session_binding_ingress_port_1 = require("../../foundation/service-session-binding-ingress-port");
|
|
22
|
+
const service_stateful_runtime_1 = require("../../foundation/service-stateful-runtime");
|
|
23
|
+
const service_wire_binary_primitives_1 = require("../../foundation/service-wire-binary-primitives");
|
|
24
|
+
const service_wire_constants_generated_1 = require("../../foundation/service-wire-constants.generated");
|
|
25
|
+
const service_wire_m6a_codec_1 = require("../../foundation/service-wire-m6a-codec");
|
|
26
|
+
const submission_result_1 = require("../../messaging/submission-result");
|
|
27
|
+
const framework_errors_internal_1 = require("../../framework-errors-internal");
|
|
28
|
+
const runtime_message_1 = require("../runtime-message");
|
|
29
|
+
const runtime_values_1 = require("../runtime-values");
|
|
30
|
+
const node_backend_adapter_support_1 = require("./node-backend-adapter-support");
|
|
31
|
+
const node_socket_backend_adapter_1 = require("./node-socket-backend-adapter");
|
|
32
|
+
const DEFAULT_NATIVE_ACTIVE_CAPACITY = 10_000;
|
|
33
|
+
const UNSTARTED_DIAGNOSTIC_ENDPOINT = 'inproc://not-started';
|
|
24
34
|
const MULTIPART_PACKET_NAME = service_wire_constants_generated_1.SERVICE_FRAMEWORK_MULTIPART_PACKET_NAME;
|
|
25
35
|
const MULTIPART_CONTENT_TYPE = service_wire_constants_generated_1.SERVICE_FRAMEWORK_MULTIPART_CONTENT_TYPE;
|
|
26
36
|
const FATAL_UTF8 = new TextDecoder('utf-8', { fatal: true });
|
|
27
37
|
const MAX_DRAIN_RECORDS = 64;
|
|
28
|
-
// Preserve the existing
|
|
38
|
+
// Preserve the existing route observation/admission/liveness cadence. Only the binding
|
|
29
39
|
// readable handler admits receive work; this timer never probes the socket.
|
|
30
40
|
const MESH_BACKEND_MAINTENANCE_INTERVAL_MS = 1;
|
|
41
|
+
// Spec 08 §4.2 bounds the combined turn. Raw gets one equal share; stateful
|
|
42
|
+
// can use the remaining turn, including time the raw registry did not consume.
|
|
43
|
+
const MESH_BACKEND_RAW_MAINTENANCE_SHARE = 1 / 2;
|
|
31
44
|
/**
|
|
32
45
|
* Conservative Actor Join admission cap for relocation state chunks (spec 15
|
|
33
46
|
* §4.2): a stable lower bound safe on any deployment, never lowered on
|
|
@@ -60,22 +73,33 @@ class ZLinkNodeRawMeshBackend {
|
|
|
60
73
|
readyHandler;
|
|
61
74
|
maintenanceTimer;
|
|
62
75
|
pumping = false;
|
|
63
|
-
readable =
|
|
64
|
-
onReadable = () => {
|
|
65
|
-
|
|
76
|
+
readable = 0;
|
|
77
|
+
onReadable = (receiveReady, routeReady) => {
|
|
78
|
+
if (receiveReady)
|
|
79
|
+
this.readable |= 1;
|
|
80
|
+
if (routeReady)
|
|
81
|
+
this.readable |= 2;
|
|
66
82
|
if (!this.closed && !this.pumping)
|
|
67
83
|
void this.pump();
|
|
68
84
|
};
|
|
69
85
|
onMaintenance = () => {
|
|
70
86
|
this.maintenanceTimer = undefined;
|
|
87
|
+
if (this.closed)
|
|
88
|
+
return;
|
|
89
|
+
const nowMs = performance.now();
|
|
90
|
+
const turnDeadlineMs = nowMs + raw_service_mesh_runtime_1.RAW_MESH_RECEIVE_TIME_BUDGET_MS;
|
|
91
|
+
this.runtime?.expireOperations(nowMs, nowMs + raw_service_mesh_runtime_1.RAW_MESH_RECEIVE_TIME_BUDGET_MS * MESH_BACKEND_RAW_MAINTENANCE_SHARE);
|
|
92
|
+
this.stateful?.expireOperations(nowMs, turnDeadlineMs);
|
|
93
|
+
this.scheduleMaintenance();
|
|
71
94
|
void this.pump();
|
|
72
95
|
};
|
|
96
|
+
onPendingOperationsChanged = () => this.scheduleMaintenance();
|
|
73
97
|
nextPeerIntent = 1n;
|
|
74
98
|
closed = false;
|
|
75
99
|
objectRole = 'none';
|
|
76
|
-
placementWeight =
|
|
77
|
-
activeCapacityLimit =
|
|
78
|
-
pendingCapacityLimit =
|
|
100
|
+
placementWeight = RegistrationBuilderPolicy_1.ZLINK_DEFAULT_PUBLIC_WEIGHT;
|
|
101
|
+
activeCapacityLimit = DEFAULT_NATIVE_ACTIVE_CAPACITY;
|
|
102
|
+
pendingCapacityLimit = InternalDefaults_1.DEFAULT_ACTIVATION_CONCURRENCY_LIMIT;
|
|
79
103
|
objectCapabilities = [];
|
|
80
104
|
maintenanceWave;
|
|
81
105
|
mailboxRecordDropped;
|
|
@@ -176,6 +200,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
176
200
|
throw new Error('MeshNode bind endpoint is not configured.');
|
|
177
201
|
const descriptor = this.createDescriptor();
|
|
178
202
|
const runtime = new raw_service_mesh_runtime_1.RawServiceMeshRuntime({
|
|
203
|
+
onPendingOperationsChanged: this.onPendingOperationsChanged,
|
|
179
204
|
descriptor,
|
|
180
205
|
resolveAdvertisedEndpoint: (boundEndpoint) => this.resolveAdvertisedEndpoint(boundEndpoint),
|
|
181
206
|
bindingPort: this.bindingPort,
|
|
@@ -209,7 +234,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
209
234
|
}
|
|
210
235
|
});
|
|
211
236
|
runtime.start();
|
|
212
|
-
this.stateful = new service_stateful_runtime_1.ServiceStatefulRuntime(runtime, descriptor.nodeRoutingId, descriptor.lifecycleGeneration);
|
|
237
|
+
this.stateful = new service_stateful_runtime_1.ServiceStatefulRuntime(runtime, descriptor.nodeRoutingId, descriptor.lifecycleGeneration, this.onPendingOperationsChanged);
|
|
213
238
|
if (this.dispatchErrors !== undefined) {
|
|
214
239
|
this.stateful.setDispatchErrorReporter(this.dispatchErrors, this.meshName);
|
|
215
240
|
}
|
|
@@ -245,7 +270,6 @@ class ZLinkNodeRawMeshBackend {
|
|
|
245
270
|
close() {
|
|
246
271
|
if (this.closed)
|
|
247
272
|
return;
|
|
248
|
-
this.closed = true;
|
|
249
273
|
if (this.maintenanceTimer !== undefined)
|
|
250
274
|
clearTimeout(this.maintenanceTimer);
|
|
251
275
|
this.maintenanceTimer = undefined;
|
|
@@ -254,6 +278,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
254
278
|
this.runtime?.close();
|
|
255
279
|
this.runtime = undefined;
|
|
256
280
|
this.clearCompletions();
|
|
281
|
+
this.closed = true;
|
|
257
282
|
}
|
|
258
283
|
addChannelName(name) {
|
|
259
284
|
this.requireNotStarted();
|
|
@@ -303,8 +328,6 @@ class ZLinkNodeRawMeshBackend {
|
|
|
303
328
|
lifecycleGeneration: options.expectedLifecycleGeneration
|
|
304
329
|
})
|
|
305
330
|
});
|
|
306
|
-
if (nodeRoutingId !== undefined)
|
|
307
|
-
await runtime.announcePeer(nodeRoutingId);
|
|
308
331
|
return intent;
|
|
309
332
|
}
|
|
310
333
|
expectPeer(peer) {
|
|
@@ -377,17 +400,17 @@ class ZLinkNodeRawMeshBackend {
|
|
|
377
400
|
: zlink_1.SubmitResult.NotConnected;
|
|
378
401
|
}
|
|
379
402
|
async requestInfrastructureControlFrames(targetRid, frames, options) {
|
|
380
|
-
return await this.requireRuntime().requestService(String(targetRid), frames.map((frame) => Buffer.from(frame)), options?.timeoutMs ??
|
|
403
|
+
return await this.requireRuntime().requestService(String(targetRid), frames.map((frame) => Buffer.from(frame)), options?.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS);
|
|
381
404
|
}
|
|
382
405
|
requestToNode(targetRid, parts, options) {
|
|
383
|
-
const pending = this.requireRuntime().requestToNode(String(targetRid), encodeMultipartApplicationFrame(parts), options?.timeoutMs ??
|
|
406
|
+
const pending = this.requireRuntime().requestToNode(String(targetRid), encodeMultipartApplicationFrame(parts), options?.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS);
|
|
384
407
|
return this.observeCompletion(pending.id, service_runtime_contracts_1.OperationKind.NodeRequest, pending.promise);
|
|
385
408
|
}
|
|
386
409
|
async sendToChannel(channelName, parts) {
|
|
387
410
|
return this.requireRuntime().sendToChannel(channelName, encodeMultipartApplicationFrame(parts));
|
|
388
411
|
}
|
|
389
412
|
requestToChannel(channelName, parts, options) {
|
|
390
|
-
const pending = this.requireRuntime().requestToChannel(channelName, encodeMultipartApplicationFrame(parts), options?.timeoutMs ??
|
|
413
|
+
const pending = this.requireRuntime().requestToChannel(channelName, encodeMultipartApplicationFrame(parts), options?.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS);
|
|
391
414
|
return this.observeCompletion(pending.id, service_runtime_contracts_1.OperationKind.ChannelRequest, pending.promise);
|
|
392
415
|
}
|
|
393
416
|
status() {
|
|
@@ -423,7 +446,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
423
446
|
connectionIntentId: findIntent(peer.descriptor.nodeRoutingId, peer.descriptor.advertisedEndpoint)?.id ?? 0n,
|
|
424
447
|
source: 1,
|
|
425
448
|
state: this.runtime?.isPeerRouteReady(peer.descriptor.nodeRoutingId) === false
|
|
426
|
-
?
|
|
449
|
+
? service_runtime_contracts_1.MeshPeerRuntimeState.Connecting
|
|
427
450
|
: peerStateCode(peer.descriptor.state),
|
|
428
451
|
routingId: peer.descriptor.nodeRoutingId,
|
|
429
452
|
lifecycleGeneration: peer.descriptor.lifecycleGeneration,
|
|
@@ -436,7 +459,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
436
459
|
const notRequired = (this.runtime?.topology.notRequiredPeers() ?? []).map((descriptor) => ({
|
|
437
460
|
connectionIntentId: findIntent(descriptor.nodeRoutingId, descriptor.advertisedEndpoint)?.id ?? 0n,
|
|
438
461
|
source: 1,
|
|
439
|
-
state:
|
|
462
|
+
state: service_runtime_contracts_1.MeshPeerRuntimeState.NotRequired,
|
|
440
463
|
routingId: descriptor.nodeRoutingId,
|
|
441
464
|
lifecycleGeneration: descriptor.lifecycleGeneration,
|
|
442
465
|
descriptorRevision: descriptor.descriptorRevision,
|
|
@@ -559,7 +582,9 @@ class ZLinkNodeRawMeshBackend {
|
|
|
559
582
|
return this.requireStateful().createActor(actorId).ref;
|
|
560
583
|
}
|
|
561
584
|
restoreActorAuthority(actorId, stableType, generation, authorityOwnerGeneration, spotId, spotGeneration, membershipEpoch) {
|
|
562
|
-
|
|
585
|
+
const stateful = this.requireStateful();
|
|
586
|
+
const entry = spotId === undefined ? stateful.entrySpot().ref : undefined;
|
|
587
|
+
return stateful.restoreActorAuthority(actorId, stableType, generation, authorityOwnerGeneration, entry?.spotId ?? spotId, entry?.generation ?? spotGeneration, membershipEpoch).ref;
|
|
563
588
|
}
|
|
564
589
|
discardRelocatedActor(actor) {
|
|
565
590
|
this.requireStateful().discardRelocatedActor({
|
|
@@ -637,17 +662,19 @@ class ZLinkNodeRawMeshBackend {
|
|
|
637
662
|
forgetSpotRoute(spot, authorityOwnerGeneration, storeVersion) {
|
|
638
663
|
this.requireStateful().forgetSpotRoute(spot, authorityOwnerGeneration, storeVersion);
|
|
639
664
|
}
|
|
640
|
-
async sendToInstanceSpot(route, parts, sourceSpotId, metadata) {
|
|
641
|
-
const result = await this.requireStateful().sendToInstanceSpot(route, encodeMultipart(parts), sourceSpotId, metadata === undefined ? undefined : (0, service_metadata_codec_1.encodeServiceMetadataFrame)(metadata));
|
|
665
|
+
async sendToInstanceSpot(route, parts, sourceSpotId, metadata, instanceIntent = false) {
|
|
666
|
+
const result = await this.requireStateful().sendToInstanceSpot(route, encodeMultipart(parts), sourceSpotId, metadata === undefined ? undefined : (0, service_metadata_codec_1.encodeServiceMetadataFrame)(metadata), instanceIntent);
|
|
642
667
|
return result;
|
|
643
668
|
}
|
|
644
|
-
requestInstanceSpot(route, parts, timeoutMs =
|
|
645
|
-
return this.observeStateful(service_runtime_contracts_1.OperationKind.InstanceSpotRequest, this.requireStateful().requestToInstanceSpot(route, encodeMultipart(parts), timeoutMs, sourceSpotId, metadata === undefined ? undefined : (0, service_metadata_codec_1.encodeServiceMetadataFrame)(metadata)));
|
|
669
|
+
requestInstanceSpot(route, parts, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, sourceSpotId, metadata, instanceIntent = false) {
|
|
670
|
+
return this.observeStateful(service_runtime_contracts_1.OperationKind.InstanceSpotRequest, this.requireStateful().requestToInstanceSpot(route, encodeMultipart(parts), timeoutMs, sourceSpotId, metadata === undefined ? undefined : (0, service_metadata_codec_1.encodeServiceMetadataFrame)(metadata), instanceIntent));
|
|
646
671
|
}
|
|
647
672
|
actorLookup(actorId) {
|
|
648
673
|
const actor = this.requireStateful().actor(actorId);
|
|
649
674
|
if (actor === undefined) {
|
|
650
|
-
|
|
675
|
+
const error = new zlink_1.ConfigError(zlink_1.ConfigResult.NotFound);
|
|
676
|
+
error.message = `Actor '${actorId}' was not found.`;
|
|
677
|
+
throw error;
|
|
651
678
|
}
|
|
652
679
|
return {
|
|
653
680
|
actor: actor.ref,
|
|
@@ -656,23 +683,23 @@ class ZLinkNodeRawMeshBackend {
|
|
|
656
683
|
membershipEpoch: actor.membershipEpoch
|
|
657
684
|
};
|
|
658
685
|
}
|
|
659
|
-
lookupRemoteActor(targetNodeRid, actorId, timeoutMs =
|
|
686
|
+
lookupRemoteActor(targetNodeRid, actorId, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
660
687
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorLookup, this.requireStateful().lookupRemoteActor(String(targetNodeRid), actorId, timeoutMs));
|
|
661
688
|
}
|
|
662
|
-
destroyActor(actor, timeoutMs =
|
|
689
|
+
destroyActor(actor, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
663
690
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorDestroy, this.requireStateful().destroyActor(actor, timeoutMs));
|
|
664
691
|
}
|
|
665
|
-
joinActorSpot(actor, targetNodeRid, targetSpotId, targetSpotGeneration, request, timeoutMs =
|
|
692
|
+
joinActorSpot(actor, targetNodeRid, targetSpotId, targetSpotGeneration, request, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
666
693
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorJoin, this.requireStateful().joinActor(actor, String(targetNodeRid), { spotId: String(targetSpotId), generation: targetSpotGeneration }, targetSpotGeneration, request, timeoutMs));
|
|
667
694
|
}
|
|
668
|
-
joinActorSpotCanonical(actor, targetNodeRid, targetSpotId, targetSpotGeneration, request, actorFence, local, timeoutMs =
|
|
695
|
+
joinActorSpotCanonical(actor, targetNodeRid, targetSpotId, targetSpotGeneration, request, actorFence, local, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
669
696
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorJoin, this.requireStateful().joinActorCanonical(actor, String(targetNodeRid), { spotId: String(targetSpotId), generation: targetSpotGeneration }, targetSpotGeneration, request, actorFence, local, timeoutMs));
|
|
670
697
|
}
|
|
671
|
-
joinActorEntrySpot(actor, targetNodeRid, request, timeoutMs =
|
|
698
|
+
joinActorEntrySpot(actor, targetNodeRid, request, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
672
699
|
const target = String(targetNodeRid);
|
|
673
700
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorJoin, this.requireStateful().joinActorEntrySpot(actor, target, request, timeoutMs));
|
|
674
701
|
}
|
|
675
|
-
joinActorEntrySpotCanonical(actor, targetNodeRid, request, actorFence, local, timeoutMs =
|
|
702
|
+
joinActorEntrySpotCanonical(actor, targetNodeRid, request, actorFence, local, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
676
703
|
const target = String(targetNodeRid);
|
|
677
704
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorJoin, this.requireStateful().joinActorEntrySpotCanonical(actor, target, request, actorFence, local, timeoutMs));
|
|
678
705
|
}
|
|
@@ -680,25 +707,25 @@ class ZLinkNodeRawMeshBackend {
|
|
|
680
707
|
return this.requireStateful().sendToActor(actor, this.peerGeneration(String(actor.nodeRid)), actor.generation, encodeMultipart(parts));
|
|
681
708
|
}
|
|
682
709
|
requestToActor(actor, parts, options) {
|
|
683
|
-
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorRequest, this.requireStateful().requestToActor(actor, this.peerGeneration(String(actor.nodeRid)), actor.generation, encodeMultipart(parts), options?.timeoutMs ??
|
|
710
|
+
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorRequest, this.requireStateful().requestToActor(actor, this.peerGeneration(String(actor.nodeRid)), actor.generation, encodeMultipart(parts), options?.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS));
|
|
684
711
|
}
|
|
685
712
|
async actorSendToActor(source, target, parts) {
|
|
686
713
|
return (await this.requireStateful().sendToActor(target, this.peerGeneration(String(target.nodeRid)), target.generation, encodeMultipart(parts), source));
|
|
687
714
|
}
|
|
688
715
|
actorRequestToActor(source, target, parts, options) {
|
|
689
|
-
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorRequest, this.requireStateful().requestToActor(target, this.peerGeneration(String(target.nodeRid)), target.generation, encodeMultipart(parts), options?.timeoutMs ??
|
|
716
|
+
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorRequest, this.requireStateful().requestToActor(target, this.peerGeneration(String(target.nodeRid)), target.generation, encodeMultipart(parts), options?.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, source));
|
|
690
717
|
}
|
|
691
|
-
async sendActorBoundSession(actor, expectedBindingGeneration, parts, _flags
|
|
692
|
-
return (await this.requireStateful().sendBoundSession(actor, expectedBindingGeneration, encodeMultipart(parts)
|
|
718
|
+
async sendActorBoundSession(actor, expectedBindingGeneration, parts, _flags) {
|
|
719
|
+
return (await this.requireStateful().sendBoundSession(actor, expectedBindingGeneration, encodeMultipart(parts)));
|
|
693
720
|
}
|
|
694
|
-
closeActorBoundSession(actor, expectedBindingGeneration, timeoutMs =
|
|
721
|
+
closeActorBoundSession(actor, expectedBindingGeneration, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
695
722
|
const binding = this.requireStateful().registry.binding(actor);
|
|
696
723
|
if (binding === undefined) {
|
|
697
724
|
return this.enqueueImmediateFailure(service_runtime_contracts_1.OperationKind.StreamUnbind, zlink_1.RequestResult.NotFound);
|
|
698
725
|
}
|
|
699
726
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.StreamUnbind, this.requireStateful().unbindSession(binding.sessionRid, actor, expectedBindingGeneration, timeoutMs));
|
|
700
727
|
}
|
|
701
|
-
leaveActor(actor, expectedMembershipEpoch, timeoutMs =
|
|
728
|
+
leaveActor(actor, expectedMembershipEpoch, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
702
729
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorLeave, this.requireStateful().leaveActor(actor, expectedMembershipEpoch, timeoutMs));
|
|
703
730
|
}
|
|
704
731
|
createStreamSessionService(stream) {
|
|
@@ -734,7 +761,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
734
761
|
nodeRoutingId: this.routingId,
|
|
735
762
|
lifecycleGeneration: this.lifecycleGeneration,
|
|
736
763
|
descriptorRevision: 1n,
|
|
737
|
-
advertisedEndpoint: this.bindEndpoint ??
|
|
764
|
+
advertisedEndpoint: this.bindEndpoint ?? UNSTARTED_DIAGNOSTIC_ENDPOINT,
|
|
738
765
|
channels,
|
|
739
766
|
state: 'preparing',
|
|
740
767
|
// Plaintext RouteMesh peers use the shared default admission identity.
|
|
@@ -758,29 +785,35 @@ class ZLinkNodeRawMeshBackend {
|
|
|
758
785
|
return result;
|
|
759
786
|
}
|
|
760
787
|
scheduleMaintenance() {
|
|
761
|
-
if (this.closed
|
|
788
|
+
if (this.closed)
|
|
762
789
|
return;
|
|
763
|
-
this.maintenanceTimer
|
|
790
|
+
this.maintenanceTimer ??= setTimeout(this.onMaintenance, MESH_BACKEND_MAINTENANCE_INTERVAL_MS);
|
|
791
|
+
const pending = (this.runtime?.pendingOperationCount ?? 0) + (this.stateful?.pendingOperationCount ?? 0) > 0;
|
|
792
|
+
if (pending === this.maintenanceTimer.hasRef())
|
|
793
|
+
return;
|
|
794
|
+
if (pending) {
|
|
795
|
+
this.maintenanceTimer.ref();
|
|
796
|
+
}
|
|
797
|
+
else {
|
|
798
|
+
this.maintenanceTimer.unref();
|
|
799
|
+
}
|
|
764
800
|
}
|
|
765
801
|
async pump() {
|
|
766
802
|
if (this.isClosed() || this.pumping)
|
|
767
803
|
return;
|
|
768
804
|
this.pumping = true;
|
|
769
|
-
if (this.maintenanceTimer !== undefined)
|
|
770
|
-
clearTimeout(this.maintenanceTimer);
|
|
771
|
-
this.maintenanceTimer = undefined;
|
|
772
805
|
try {
|
|
773
806
|
do {
|
|
774
|
-
const
|
|
775
|
-
this.readable =
|
|
776
|
-
const more = await this.requireRuntime().pumpBatch(
|
|
807
|
+
const ready = this.readable;
|
|
808
|
+
this.readable = 0;
|
|
809
|
+
const more = await this.requireRuntime().pumpBatch((ready & 1) !== 0, (ready & 2) !== 0);
|
|
777
810
|
if (more) {
|
|
778
811
|
// Yield only after actual progress, retaining readiness across the
|
|
779
812
|
// existing batch limits until receive reports no data.
|
|
780
|
-
this.readable
|
|
813
|
+
this.readable |= 1;
|
|
781
814
|
await (0, promises_1.setImmediate)();
|
|
782
815
|
}
|
|
783
|
-
} while (!this.closed && this.readable);
|
|
816
|
+
} while (!this.closed && this.readable !== 0);
|
|
784
817
|
}
|
|
785
818
|
finally {
|
|
786
819
|
this.pumping = false;
|
|
@@ -804,12 +837,12 @@ class ZLinkNodeRawMeshBackend {
|
|
|
804
837
|
}
|
|
805
838
|
observeCompletion(low, operationKind, promise) {
|
|
806
839
|
const id = { high: 1n, low };
|
|
807
|
-
void promise.then((result) => this.enqueueCompletion(id, operationKind, result), (error) => this.enqueueCompletion(id, operationKind,
|
|
840
|
+
void promise.then((result) => this.enqueueCompletion(id, operationKind, result), (error) => this.enqueueCompletion(id, operationKind, requestFailureResult(error)));
|
|
808
841
|
return id;
|
|
809
842
|
}
|
|
810
843
|
observeStateful(operationKind, pending) {
|
|
811
|
-
const id = { high:
|
|
812
|
-
void pending.promise.then((result) => this.enqueueCompletion(id, operationKind, result), (error) => this.enqueueCompletion(id, operationKind,
|
|
844
|
+
const id = { high: operation_identity_1.ZLINK_NATIVE_CORRELATION_OPERATION_NAMESPACE, low: pending.id };
|
|
845
|
+
void pending.promise.then((result) => this.enqueueCompletion(id, operationKind, result), (error) => this.enqueueCompletion(id, operationKind, requestFailureResult(error)));
|
|
813
846
|
return id;
|
|
814
847
|
}
|
|
815
848
|
enqueueImmediateFailure(operationKind, terminalResult) {
|
|
@@ -849,7 +882,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
849
882
|
if (this.completionCount === 0) {
|
|
850
883
|
this.clearCompletions();
|
|
851
884
|
}
|
|
852
|
-
else if (
|
|
885
|
+
else if ((0, admission_1.shouldCompactBackingArray)(this.completionHead, this.completions.length)) {
|
|
853
886
|
this.completions.splice(0, this.completionHead);
|
|
854
887
|
this.completionHead = 0;
|
|
855
888
|
}
|
|
@@ -942,7 +975,7 @@ class RawServiceSpot {
|
|
|
942
975
|
const routeFence = requireDirectSpotRouteFence(options?.routeFence, String(targetNodeRid), String(targetSpotId), targetSpotGeneration, options?.entrySpot === true
|
|
943
976
|
? this.backend.entrySpotRouteFence(String(targetNodeRid), String(targetSpotId))
|
|
944
977
|
: undefined);
|
|
945
|
-
return this.backend.requestFromSpot(this.state, routeFence, parts, options?.timeoutMs ??
|
|
978
|
+
return this.backend.requestFromSpot(this.state, routeFence, parts, options?.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS);
|
|
946
979
|
}
|
|
947
980
|
async publish(channelName, topic, parts, options) {
|
|
948
981
|
this.requireOpen();
|
|
@@ -1000,7 +1033,7 @@ class RawStreamSessionService {
|
|
|
1000
1033
|
stateful;
|
|
1001
1034
|
stream;
|
|
1002
1035
|
observe;
|
|
1003
|
-
state =
|
|
1036
|
+
state = service_runtime_contracts_1.StreamSessionRuntimeState.Created;
|
|
1004
1037
|
closed = false;
|
|
1005
1038
|
sessionTargets = new Map();
|
|
1006
1039
|
constructor(stateful, stream, observe) {
|
|
@@ -1011,7 +1044,7 @@ class RawStreamSessionService {
|
|
|
1011
1044
|
start() {
|
|
1012
1045
|
if (this.closed)
|
|
1013
1046
|
throw new Error('STREAM session service is closed.');
|
|
1014
|
-
this.state =
|
|
1047
|
+
this.state = service_runtime_contracts_1.StreamSessionRuntimeState.Started;
|
|
1015
1048
|
}
|
|
1016
1049
|
shutdown(_timeoutMs) {
|
|
1017
1050
|
this.close();
|
|
@@ -1021,7 +1054,7 @@ class RawStreamSessionService {
|
|
|
1021
1054
|
if (this.closed)
|
|
1022
1055
|
return;
|
|
1023
1056
|
this.closed = true;
|
|
1024
|
-
this.state =
|
|
1057
|
+
this.state = service_runtime_contracts_1.StreamSessionRuntimeState.Closed;
|
|
1025
1058
|
this.sessionTargets.clear();
|
|
1026
1059
|
}
|
|
1027
1060
|
status() {
|
|
@@ -1036,17 +1069,17 @@ class RawStreamSessionService {
|
|
|
1036
1069
|
lastError: 0
|
|
1037
1070
|
};
|
|
1038
1071
|
}
|
|
1039
|
-
lookupActor(targetNodeRid, actorId, timeoutMs =
|
|
1072
|
+
lookupActor(targetNodeRid, actorId, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
1040
1073
|
this.requireStarted();
|
|
1041
1074
|
return this.observe(service_runtime_contracts_1.OperationKind.ActorLookup, this.stateful.lookupRemoteActor(String(targetNodeRid), actorId, timeoutMs));
|
|
1042
1075
|
}
|
|
1043
|
-
bindActor(sessionRid, actor, timeoutMs =
|
|
1076
|
+
bindActor(sessionRid, actor, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, onBindingReplaced, actorAuthority) {
|
|
1044
1077
|
this.requireStarted();
|
|
1045
1078
|
const sessionKey = String(sessionRid);
|
|
1046
1079
|
this.sessionTargets.set(sessionKey, sessionRid);
|
|
1047
|
-
return this.observe(service_runtime_contracts_1.OperationKind.StreamBind, this.stateful.bindSession(sessionKey, actor, timeoutMs, (targetSessionRid, payloadFrame) => this.deliver(targetSessionRid, actor.actorId, payloadFrame), onBindingReplaced,
|
|
1080
|
+
return this.observe(service_runtime_contracts_1.OperationKind.StreamBind, this.stateful.bindSession(sessionKey, actor, timeoutMs, (targetSessionRid, payloadFrame) => this.deliver(targetSessionRid, actor.actorId, payloadFrame), onBindingReplaced, actorAuthority));
|
|
1048
1081
|
}
|
|
1049
|
-
unbindActor(sessionRid, actor, expectedBindingGeneration, timeoutMs =
|
|
1082
|
+
unbindActor(sessionRid, actor, expectedBindingGeneration, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
1050
1083
|
this.requireStarted();
|
|
1051
1084
|
return this.observe(service_runtime_contracts_1.OperationKind.StreamUnbind, this.stateful.unbindSession(String(sessionRid), actor, expectedBindingGeneration, timeoutMs));
|
|
1052
1085
|
}
|
|
@@ -1101,7 +1134,7 @@ class RawStreamSessionService {
|
|
|
1101
1134
|
}
|
|
1102
1135
|
}
|
|
1103
1136
|
requireStarted() {
|
|
1104
|
-
if (this.state !==
|
|
1137
|
+
if (this.state !== service_runtime_contracts_1.StreamSessionRuntimeState.Started || this.closed) {
|
|
1105
1138
|
throw new Error('STREAM session service is not started.');
|
|
1106
1139
|
}
|
|
1107
1140
|
}
|
|
@@ -1326,7 +1359,7 @@ function decodeMultipartRecord(runtime, record) {
|
|
|
1326
1359
|
};
|
|
1327
1360
|
}
|
|
1328
1361
|
const header = record.parts[0];
|
|
1329
|
-
const command = header[
|
|
1362
|
+
const command = header[service_wire_binary_primitives_1.SERVICE_WIRE_COMMAND_OFFSET];
|
|
1330
1363
|
const payloadFrame = record.parts[1];
|
|
1331
1364
|
const application = decodeApplicationEnvelope(payloadFrame);
|
|
1332
1365
|
const channelName = record.owner.startsWith('channel:')
|
|
@@ -1335,11 +1368,11 @@ function decodeMultipartRecord(runtime, record) {
|
|
|
1335
1368
|
const operationId = record.correlation === undefined
|
|
1336
1369
|
? { high: 0n, low: 0n }
|
|
1337
1370
|
: { high: 1n, low: record.correlation };
|
|
1338
|
-
const kind = command ===
|
|
1371
|
+
const kind = command === service_wire_constants_generated_1.ServiceWireCommand.nodeSend
|
|
1339
1372
|
? service_runtime_contracts_1.ReceiveKind.NodeSend
|
|
1340
|
-
: command ===
|
|
1373
|
+
: command === service_wire_constants_generated_1.ServiceWireCommand.nodeRequest
|
|
1341
1374
|
? service_runtime_contracts_1.ReceiveKind.NodeRequest
|
|
1342
|
-
: command ===
|
|
1375
|
+
: command === service_wire_constants_generated_1.ServiceWireCommand.channelSend
|
|
1343
1376
|
? service_runtime_contracts_1.ReceiveKind.ChannelSend
|
|
1344
1377
|
: service_runtime_contracts_1.ReceiveKind.ChannelRequest;
|
|
1345
1378
|
const operationKind = kind === service_runtime_contracts_1.ReceiveKind.NodeRequest
|
|
@@ -1389,7 +1422,7 @@ function decodeStatefulRecord(record, stateful) {
|
|
|
1389
1422
|
: decodeApplicationEnvelope(payloadFrame);
|
|
1390
1423
|
const operationId = record.correlation === undefined
|
|
1391
1424
|
? { high: 0n, low: 0n }
|
|
1392
|
-
: { high:
|
|
1425
|
+
: { high: operation_identity_1.ZLINK_NATIVE_CORRELATION_OPERATION_NAMESPACE, low: record.correlation };
|
|
1393
1426
|
const ingressLifecycle = receiveIngressLifecycle(record);
|
|
1394
1427
|
return {
|
|
1395
1428
|
kind: stateful.receiveKind,
|
|
@@ -1420,12 +1453,18 @@ function decodeStatefulRecord(record, stateful) {
|
|
|
1420
1453
|
: decodeMultipart(application.payload),
|
|
1421
1454
|
...(stateful.isPending === undefined ? {} : { isPending: stateful.isPending }),
|
|
1422
1455
|
...(stateful.deadlineUnixMs === undefined ? {} : { deadlineUnixMs: stateful.deadlineUnixMs }),
|
|
1456
|
+
...(stateful.activationRecord === undefined
|
|
1457
|
+
? {}
|
|
1458
|
+
: { activationRecord: stateful.activationRecord }),
|
|
1423
1459
|
...(stateful.messageFollowOrigin === undefined
|
|
1424
1460
|
? {}
|
|
1425
1461
|
: { messageFollowOrigin: stateful.messageFollowOrigin }),
|
|
1426
1462
|
...(stateful.onTerminalCompletion === undefined
|
|
1427
1463
|
? {}
|
|
1428
1464
|
: { onTerminalCompletion: stateful.onTerminalCompletion }),
|
|
1465
|
+
...(stateful.onHandlerTurnStarted === undefined
|
|
1466
|
+
? {}
|
|
1467
|
+
: { onHandlerTurnStarted: stateful.onHandlerTurnStarted }),
|
|
1429
1468
|
reply(parts) {
|
|
1430
1469
|
if (stateful.reply === undefined)
|
|
1431
1470
|
return zlink_1.SubmitResult.InvalidState;
|
|
@@ -1519,37 +1558,44 @@ function readyDomain(domain) {
|
|
|
1519
1558
|
return domain === 'infrastructure' ? service_runtime_contracts_1.ReadyDomain.Infrastructure : service_runtime_contracts_1.ReadyDomain.Application;
|
|
1520
1559
|
}
|
|
1521
1560
|
/**
|
|
1522
|
-
*
|
|
1523
|
-
* terminal.
|
|
1524
|
-
*
|
|
1525
|
-
*
|
|
1526
|
-
*
|
|
1561
|
+
* The one classification of a failed node/channel/stateful request into its
|
|
1562
|
+
* completion terminal. A binding REQUEST result is Core's decision and is kept
|
|
1563
|
+
* as is; a submit failure is classified from its submission or completion phase.
|
|
1564
|
+
* A reply that could not be decoded is a protocol
|
|
1565
|
+
* failure (spec 32-framework-error-model:91-92). The failure code is a wire
|
|
1566
|
+
* code, so a Core result carries 0.
|
|
1527
1567
|
*/
|
|
1528
|
-
function
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
if (error instanceof contracts_1.ZLinkFrameworkException) {
|
|
1538
|
-
return (0, framework_errors_internal_1.internalFrameworkWireReply)(error);
|
|
1539
|
-
}
|
|
1540
|
-
if (error instanceof operation_registry_1.OperationTimeoutError) {
|
|
1541
|
-
return { terminalResult: zlink_1.RequestResult.TimedOut, failureCode: 0 };
|
|
1568
|
+
function requestFailureResult(error) {
|
|
1569
|
+
const failure = (0, node_backend_adapter_support_1.translateBindingResultError)(error);
|
|
1570
|
+
if ((0, runtime_values_1.isZLinkBackendResultError)(failure)) {
|
|
1571
|
+
return {
|
|
1572
|
+
terminalResult: failure.operation === 'request'
|
|
1573
|
+
? failure.result
|
|
1574
|
+
: (0, submission_result_1.submitToRequestResult)(failure.result, failure.phase),
|
|
1575
|
+
failureCode: 0
|
|
1576
|
+
};
|
|
1542
1577
|
}
|
|
1543
|
-
|
|
1578
|
+
// requestProtocolError(16): the schema terminal-failure-integrity rule
|
|
1579
|
+
// forbids a typed terminal (104) with failure none.
|
|
1580
|
+
if (failure instanceof service_wire_m6a_codec_1.ServiceWireProtocolError) {
|
|
1544
1581
|
return {
|
|
1545
|
-
terminalResult:
|
|
1546
|
-
failureCode:
|
|
1582
|
+
terminalResult: zlink_1.RequestResult.ProtocolError,
|
|
1583
|
+
failureCode: service_wire_constants_generated_1.ServiceWireFrameworkErrorCode.requestProtocolError
|
|
1547
1584
|
};
|
|
1548
1585
|
}
|
|
1549
|
-
if (
|
|
1586
|
+
if (failure instanceof contracts_1.ZLinkFrameworkException) {
|
|
1587
|
+
return (0, framework_errors_internal_1.internalFrameworkWireReply)(failure);
|
|
1588
|
+
}
|
|
1589
|
+
if (failure instanceof operation_registry_1.OperationTimeoutError) {
|
|
1590
|
+
return { terminalResult: zlink_1.RequestResult.TimedOut, failureCode: 0 };
|
|
1591
|
+
}
|
|
1592
|
+
if (failure instanceof operation_registry_1.OperationCancelledError) {
|
|
1550
1593
|
return { terminalResult: zlink_1.RequestResult.NotConnected, failureCode: 0 };
|
|
1551
1594
|
}
|
|
1552
|
-
return {
|
|
1595
|
+
return {
|
|
1596
|
+
terminalResult: zlink_1.RequestResult.InternalError,
|
|
1597
|
+
failureCode: service_wire_constants_generated_1.ServiceWireFrameworkErrorCode.requestFailed
|
|
1598
|
+
};
|
|
1553
1599
|
}
|
|
1554
1600
|
function encodeMultipart(parts) {
|
|
1555
1601
|
const values = Array.isArray(parts) ? parts : [parts];
|
|
@@ -1584,7 +1630,8 @@ function encodeMultipartApplicationFrame(parts) {
|
|
|
1584
1630
|
}
|
|
1585
1631
|
function decodeApplicationEnvelope(frame) {
|
|
1586
1632
|
const bytes = Buffer.from(frame.buffer, frame.byteOffset, frame.byteLength);
|
|
1587
|
-
if (bytes.length <
|
|
1633
|
+
if (bytes.length < service_wire_m6a_codec_1.APPLICATION_PAYLOAD_MINIMUM_FIELD_BYTES ||
|
|
1634
|
+
bytes[0] !== service_wire_m6a_codec_1.APPLICATION_PAYLOAD_VERSION) {
|
|
1588
1635
|
throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Invalid application envelope.');
|
|
1589
1636
|
}
|
|
1590
1637
|
const bodyLength = bytes.readUInt32BE(1);
|
|
@@ -1682,20 +1729,33 @@ function requireRawReadyBatch(batch) {
|
|
|
1682
1729
|
return batch;
|
|
1683
1730
|
}
|
|
1684
1731
|
function stateCode(state) {
|
|
1685
|
-
|
|
1732
|
+
switch (state) {
|
|
1733
|
+
case 'preparing':
|
|
1734
|
+
return service_runtime_contracts_1.MeshNodeRuntimeState.Preparing;
|
|
1735
|
+
case 'serving':
|
|
1736
|
+
return service_runtime_contracts_1.MeshNodeRuntimeState.Serving;
|
|
1737
|
+
case 'retiring':
|
|
1738
|
+
return service_runtime_contracts_1.MeshNodeRuntimeState.Retiring;
|
|
1739
|
+
case 'draining':
|
|
1740
|
+
return service_runtime_contracts_1.MeshNodeRuntimeState.Draining;
|
|
1741
|
+
case 'stopped':
|
|
1742
|
+
return service_runtime_contracts_1.MeshNodeRuntimeState.Stopped;
|
|
1743
|
+
case 'error':
|
|
1744
|
+
return service_runtime_contracts_1.MeshNodeRuntimeState.Error;
|
|
1745
|
+
}
|
|
1686
1746
|
}
|
|
1687
1747
|
function peerStateCode(state) {
|
|
1688
1748
|
switch (state) {
|
|
1689
1749
|
case 'preparing':
|
|
1690
|
-
return
|
|
1750
|
+
return service_runtime_contracts_1.MeshPeerRuntimeState.Preparing;
|
|
1691
1751
|
case 'serving':
|
|
1692
1752
|
case 'retiring':
|
|
1693
|
-
return
|
|
1753
|
+
return service_runtime_contracts_1.MeshPeerRuntimeState.Serving;
|
|
1694
1754
|
case 'draining':
|
|
1695
|
-
return
|
|
1755
|
+
return service_runtime_contracts_1.MeshPeerRuntimeState.Draining;
|
|
1696
1756
|
case 'stopped':
|
|
1697
1757
|
case 'error':
|
|
1698
|
-
return
|
|
1758
|
+
return service_runtime_contracts_1.MeshPeerRuntimeState.Closed;
|
|
1699
1759
|
}
|
|
1700
1760
|
}
|
|
1701
1761
|
function createLifecycleGeneration() {
|
|
@@ -1706,14 +1766,14 @@ function createLifecycleGeneration() {
|
|
|
1706
1766
|
return generation === 0n ? 1n : generation;
|
|
1707
1767
|
}
|
|
1708
1768
|
function requirePositivePlacementValue(value, name) {
|
|
1709
|
-
if (!
|
|
1710
|
-
throw new RangeError(`${name} must be an integer in 1
|
|
1769
|
+
if (!(0, RegistrationBuilderPolicy_1.isValidPositiveCapacity)(value)) {
|
|
1770
|
+
throw new RangeError(`${name} must be an integer in 1..${RegistrationBuilderPolicy_1.ZLINK_MAX_CAPACITY}.`);
|
|
1711
1771
|
}
|
|
1712
1772
|
return value;
|
|
1713
1773
|
}
|
|
1714
1774
|
function requirePublicWeight(value, name) {
|
|
1715
|
-
if (!
|
|
1716
|
-
throw new RangeError(`${name} must be an integer in 0
|
|
1775
|
+
if (!(0, RegistrationBuilderPolicy_1.isValidPublicWeight)(value)) {
|
|
1776
|
+
throw new RangeError(`${name} must be an integer in 0..${RegistrationBuilderPolicy_1.ZLINK_MAX_PUBLIC_WEIGHT}.`);
|
|
1717
1777
|
}
|
|
1718
1778
|
return value;
|
|
1719
1779
|
}
|
|
@@ -4,6 +4,7 @@ exports.wrapSocket = wrapSocket;
|
|
|
4
4
|
exports.nodeEventLoopPollerOf = nodeEventLoopPollerOf;
|
|
5
5
|
exports.disconnectStreamPeer = disconnectStreamPeer;
|
|
6
6
|
exports.isEndpointCloseIgnorableError = isEndpointCloseIgnorableError;
|
|
7
|
+
const RegistrationBuilderPolicy_1 = require("../../../contracts/Configuration/RegistrationBuilderPolicy");
|
|
7
8
|
const node_backend_adapter_support_1 = require("./node-backend-adapter-support");
|
|
8
9
|
const node_event_loop_poller_1 = require("./node-event-loop-poller");
|
|
9
10
|
const eventLoopPollers = new WeakMap();
|
|
@@ -20,7 +21,7 @@ function wrapSocket(nativeInstance, pollCompletion) {
|
|
|
20
21
|
async dispose() {
|
|
21
22
|
eventLoopPoller?.dispose();
|
|
22
23
|
(0, node_backend_adapter_support_1.disableSocketLinger)(nativeInstance);
|
|
23
|
-
|
|
24
|
+
(0, node_backend_adapter_support_1.closeBindingHandle)(nativeInstance);
|
|
24
25
|
},
|
|
25
26
|
close() {
|
|
26
27
|
eventLoopPoller?.dispose();
|
|
@@ -68,7 +69,7 @@ function wrapSocket(nativeInstance, pollCompletion) {
|
|
|
68
69
|
nativeInstance.setRoutingId((0, node_backend_adapter_support_1.toNativeRoutingId)(routingId));
|
|
69
70
|
},
|
|
70
71
|
get peerWeight() {
|
|
71
|
-
return socket.options?.peerWeight ??
|
|
72
|
+
return socket.options?.peerWeight ?? RegistrationBuilderPolicy_1.ZLINK_DEFAULT_PUBLIC_WEIGHT;
|
|
72
73
|
},
|
|
73
74
|
set peerWeight(value) {
|
|
74
75
|
requireSocketOptions(socket).peerWeight = value;
|
|
@@ -243,6 +244,6 @@ function isEndpointCloseIgnorableError(error) {
|
|
|
243
244
|
return ((0, node_backend_adapter_support_1.isContextTerminatedError)(error) ||
|
|
244
245
|
(error instanceof Error &&
|
|
245
246
|
'code' in error &&
|
|
246
|
-
(error.code ===
|
|
247
|
+
(error.code === node_backend_adapter_support_1.zlink.ConnectResult.InternalError ||
|
|
247
248
|
error.code === node_backend_adapter_support_1.zlink.ConnectResult.NotFound)));
|
|
248
249
|
}
|