@zlink-systems/framework 0.26.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/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/Spots/Contracts.d.ts +1 -1
- 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 +42 -143
- 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 +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-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 +6 -23
- 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 +1 -1
- package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
- 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 +40 -16
- 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 +3 -2
- 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 +68 -52
- 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 -10
- 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.js +5 -2
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
- package/dist/runtime/channels/channel-socket-registry.js +248 -174
- package/dist/runtime/channels/channel-transports.d.ts +11 -17
- 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 +130 -72
- 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 +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 +62 -83
- 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 +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 +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 -157
- 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 +7 -20
- 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 +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 -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 +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 +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/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 +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 +4 -3
- package/dist/runtime/spots/spot-outbound.js +9 -8
- 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 +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 +11 -1
- package/dist/runtime/streams/index.d.ts +14 -15
- package/dist/runtime/streams/index.js +20 -21
- 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/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/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/Spots/Contracts.ts +1 -1
- 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 +77 -204
- 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 +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- 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 +13 -29
- 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 +23 -6
- 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 +41 -20
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
- 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 +132 -85
- 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 -23
- 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 +6 -2
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +301 -192
- package/src/runtime/channels/channel-transports.ts +161 -112
- 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/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 +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 +110 -111
- 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 +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 +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 -296
- 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 +8 -41
- 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 +73 -195
- 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 +450 -478
- 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/submission-result.ts +57 -1
- 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 +45 -23
- 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 +89 -43
- package/src/runtime/streams/bound-session-service.ts +21 -1
- package/src/runtime/streams/index.ts +76 -64
- 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/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
|
@@ -2,26 +2,35 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkNodeRawMeshBackend = void 0;
|
|
4
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
|
-
const node_backend_adapter_support_1 = require("./node-backend-adapter-support");
|
|
10
9
|
const contracts_1 = require("../../../contracts");
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
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");
|
|
16
17
|
const operation_registry_1 = require("../../foundation/operation-registry");
|
|
17
18
|
const raw_service_mesh_runtime_1 = require("../../foundation/raw-service-mesh-runtime");
|
|
18
|
-
const service_wire_m6a_codec_1 = require("../../foundation/service-wire-m6a-codec");
|
|
19
|
-
const service_wire_constants_generated_1 = require("../../foundation/service-wire-constants.generated");
|
|
20
|
-
const service_stateful_runtime_1 = require("../../foundation/service-stateful-runtime");
|
|
21
|
-
const service_session_binding_ingress_port_1 = require("../../foundation/service-session-binding-ingress-port");
|
|
22
19
|
const service_metadata_codec_1 = require("../../foundation/service-metadata-codec");
|
|
23
|
-
const
|
|
24
|
-
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';
|
|
25
34
|
const MULTIPART_PACKET_NAME = service_wire_constants_generated_1.SERVICE_FRAMEWORK_MULTIPART_PACKET_NAME;
|
|
26
35
|
const MULTIPART_CONTENT_TYPE = service_wire_constants_generated_1.SERVICE_FRAMEWORK_MULTIPART_CONTENT_TYPE;
|
|
27
36
|
const FATAL_UTF8 = new TextDecoder('utf-8', { fatal: true });
|
|
@@ -29,6 +38,9 @@ const MAX_DRAIN_RECORDS = 64;
|
|
|
29
38
|
// Preserve the existing route observation/admission/liveness cadence. Only the binding
|
|
30
39
|
// readable handler admits receive work; this timer never probes the socket.
|
|
31
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;
|
|
32
44
|
/**
|
|
33
45
|
* Conservative Actor Join admission cap for relocation state chunks (spec 15
|
|
34
46
|
* §4.2): a stable lower bound safe on any deployment, never lowered on
|
|
@@ -61,29 +73,39 @@ class ZLinkNodeRawMeshBackend {
|
|
|
61
73
|
readyHandler;
|
|
62
74
|
maintenanceTimer;
|
|
63
75
|
pumping = false;
|
|
64
|
-
readable =
|
|
65
|
-
onReadable = () => {
|
|
66
|
-
|
|
76
|
+
readable = 0;
|
|
77
|
+
onReadable = (receiveReady, routeReady) => {
|
|
78
|
+
if (receiveReady)
|
|
79
|
+
this.readable |= 1;
|
|
80
|
+
if (routeReady)
|
|
81
|
+
this.readable |= 2;
|
|
67
82
|
if (!this.closed && !this.pumping)
|
|
68
83
|
void this.pump();
|
|
69
84
|
};
|
|
70
85
|
onMaintenance = () => {
|
|
71
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();
|
|
72
94
|
void this.pump();
|
|
73
95
|
};
|
|
96
|
+
onPendingOperationsChanged = () => this.scheduleMaintenance();
|
|
74
97
|
nextPeerIntent = 1n;
|
|
75
98
|
closed = false;
|
|
76
99
|
objectRole = 'none';
|
|
77
|
-
placementWeight =
|
|
78
|
-
activeCapacityLimit =
|
|
79
|
-
pendingCapacityLimit =
|
|
100
|
+
placementWeight = RegistrationBuilderPolicy_1.ZLINK_DEFAULT_PUBLIC_WEIGHT;
|
|
101
|
+
activeCapacityLimit = DEFAULT_NATIVE_ACTIVE_CAPACITY;
|
|
102
|
+
pendingCapacityLimit = InternalDefaults_1.DEFAULT_ACTIVATION_CONCURRENCY_LIMIT;
|
|
80
103
|
objectCapabilities = [];
|
|
81
104
|
maintenanceWave;
|
|
82
105
|
mailboxRecordDropped;
|
|
83
106
|
protocolError;
|
|
84
107
|
messageFollowHandler;
|
|
85
108
|
dispatchErrors;
|
|
86
|
-
spotAdmissionProvider;
|
|
87
109
|
peerDisconnectedHandlers = new Set();
|
|
88
110
|
constructor(meshName, routingId, bindingPort, applicationJobQueue, applicationJobReceiveFlowFailureSink, peerAdmissionSealed) {
|
|
89
111
|
this.meshName = meshName;
|
|
@@ -116,10 +138,6 @@ class ZLinkNodeRawMeshBackend {
|
|
|
116
138
|
this.dispatchErrors = reporter;
|
|
117
139
|
this.stateful?.setDispatchErrorReporter(reporter, this.meshName);
|
|
118
140
|
}
|
|
119
|
-
setSpotAdmissionProvider(provider) {
|
|
120
|
-
this.spotAdmissionProvider = provider;
|
|
121
|
-
this.stateful?.setSpotAdmissionProvider(provider);
|
|
122
|
-
}
|
|
123
141
|
setProtocolErrorHandler(handler) {
|
|
124
142
|
this.protocolError = handler;
|
|
125
143
|
}
|
|
@@ -182,6 +200,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
182
200
|
throw new Error('MeshNode bind endpoint is not configured.');
|
|
183
201
|
const descriptor = this.createDescriptor();
|
|
184
202
|
const runtime = new raw_service_mesh_runtime_1.RawServiceMeshRuntime({
|
|
203
|
+
onPendingOperationsChanged: this.onPendingOperationsChanged,
|
|
185
204
|
descriptor,
|
|
186
205
|
resolveAdvertisedEndpoint: (boundEndpoint) => this.resolveAdvertisedEndpoint(boundEndpoint),
|
|
187
206
|
bindingPort: this.bindingPort,
|
|
@@ -215,10 +234,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
215
234
|
}
|
|
216
235
|
});
|
|
217
236
|
runtime.start();
|
|
218
|
-
this.stateful = new service_stateful_runtime_1.ServiceStatefulRuntime(runtime, descriptor.nodeRoutingId, descriptor.lifecycleGeneration);
|
|
219
|
-
if (this.spotAdmissionProvider !== undefined) {
|
|
220
|
-
this.stateful.setSpotAdmissionProvider(this.spotAdmissionProvider);
|
|
221
|
-
}
|
|
237
|
+
this.stateful = new service_stateful_runtime_1.ServiceStatefulRuntime(runtime, descriptor.nodeRoutingId, descriptor.lifecycleGeneration, this.onPendingOperationsChanged);
|
|
222
238
|
if (this.dispatchErrors !== undefined) {
|
|
223
239
|
this.stateful.setDispatchErrorReporter(this.dispatchErrors, this.meshName);
|
|
224
240
|
}
|
|
@@ -254,7 +270,6 @@ class ZLinkNodeRawMeshBackend {
|
|
|
254
270
|
close() {
|
|
255
271
|
if (this.closed)
|
|
256
272
|
return;
|
|
257
|
-
this.closed = true;
|
|
258
273
|
if (this.maintenanceTimer !== undefined)
|
|
259
274
|
clearTimeout(this.maintenanceTimer);
|
|
260
275
|
this.maintenanceTimer = undefined;
|
|
@@ -263,6 +278,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
263
278
|
this.runtime?.close();
|
|
264
279
|
this.runtime = undefined;
|
|
265
280
|
this.clearCompletions();
|
|
281
|
+
this.closed = true;
|
|
266
282
|
}
|
|
267
283
|
addChannelName(name) {
|
|
268
284
|
this.requireNotStarted();
|
|
@@ -312,8 +328,6 @@ class ZLinkNodeRawMeshBackend {
|
|
|
312
328
|
lifecycleGeneration: options.expectedLifecycleGeneration
|
|
313
329
|
})
|
|
314
330
|
});
|
|
315
|
-
if (nodeRoutingId !== undefined)
|
|
316
|
-
await runtime.announcePeer(nodeRoutingId);
|
|
317
331
|
return intent;
|
|
318
332
|
}
|
|
319
333
|
expectPeer(peer) {
|
|
@@ -386,17 +400,17 @@ class ZLinkNodeRawMeshBackend {
|
|
|
386
400
|
: zlink_1.SubmitResult.NotConnected;
|
|
387
401
|
}
|
|
388
402
|
async requestInfrastructureControlFrames(targetRid, frames, options) {
|
|
389
|
-
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);
|
|
390
404
|
}
|
|
391
405
|
requestToNode(targetRid, parts, options) {
|
|
392
|
-
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);
|
|
393
407
|
return this.observeCompletion(pending.id, service_runtime_contracts_1.OperationKind.NodeRequest, pending.promise);
|
|
394
408
|
}
|
|
395
409
|
async sendToChannel(channelName, parts) {
|
|
396
410
|
return this.requireRuntime().sendToChannel(channelName, encodeMultipartApplicationFrame(parts));
|
|
397
411
|
}
|
|
398
412
|
requestToChannel(channelName, parts, options) {
|
|
399
|
-
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);
|
|
400
414
|
return this.observeCompletion(pending.id, service_runtime_contracts_1.OperationKind.ChannelRequest, pending.promise);
|
|
401
415
|
}
|
|
402
416
|
status() {
|
|
@@ -432,7 +446,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
432
446
|
connectionIntentId: findIntent(peer.descriptor.nodeRoutingId, peer.descriptor.advertisedEndpoint)?.id ?? 0n,
|
|
433
447
|
source: 1,
|
|
434
448
|
state: this.runtime?.isPeerRouteReady(peer.descriptor.nodeRoutingId) === false
|
|
435
|
-
?
|
|
449
|
+
? service_runtime_contracts_1.MeshPeerRuntimeState.Connecting
|
|
436
450
|
: peerStateCode(peer.descriptor.state),
|
|
437
451
|
routingId: peer.descriptor.nodeRoutingId,
|
|
438
452
|
lifecycleGeneration: peer.descriptor.lifecycleGeneration,
|
|
@@ -445,7 +459,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
445
459
|
const notRequired = (this.runtime?.topology.notRequiredPeers() ?? []).map((descriptor) => ({
|
|
446
460
|
connectionIntentId: findIntent(descriptor.nodeRoutingId, descriptor.advertisedEndpoint)?.id ?? 0n,
|
|
447
461
|
source: 1,
|
|
448
|
-
state:
|
|
462
|
+
state: service_runtime_contracts_1.MeshPeerRuntimeState.NotRequired,
|
|
449
463
|
routingId: descriptor.nodeRoutingId,
|
|
450
464
|
lifecycleGeneration: descriptor.lifecycleGeneration,
|
|
451
465
|
descriptorRevision: descriptor.descriptorRevision,
|
|
@@ -568,7 +582,9 @@ class ZLinkNodeRawMeshBackend {
|
|
|
568
582
|
return this.requireStateful().createActor(actorId).ref;
|
|
569
583
|
}
|
|
570
584
|
restoreActorAuthority(actorId, stableType, generation, authorityOwnerGeneration, spotId, spotGeneration, membershipEpoch) {
|
|
571
|
-
|
|
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;
|
|
572
588
|
}
|
|
573
589
|
discardRelocatedActor(actor) {
|
|
574
590
|
this.requireStateful().discardRelocatedActor({
|
|
@@ -646,17 +662,19 @@ class ZLinkNodeRawMeshBackend {
|
|
|
646
662
|
forgetSpotRoute(spot, authorityOwnerGeneration, storeVersion) {
|
|
647
663
|
this.requireStateful().forgetSpotRoute(spot, authorityOwnerGeneration, storeVersion);
|
|
648
664
|
}
|
|
649
|
-
async sendToInstanceSpot(route, parts, sourceSpotId, metadata) {
|
|
650
|
-
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);
|
|
651
667
|
return result;
|
|
652
668
|
}
|
|
653
|
-
requestInstanceSpot(route, parts, timeoutMs =
|
|
654
|
-
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));
|
|
655
671
|
}
|
|
656
672
|
actorLookup(actorId) {
|
|
657
673
|
const actor = this.requireStateful().actor(actorId);
|
|
658
674
|
if (actor === undefined) {
|
|
659
|
-
|
|
675
|
+
const error = new zlink_1.ConfigError(zlink_1.ConfigResult.NotFound);
|
|
676
|
+
error.message = `Actor '${actorId}' was not found.`;
|
|
677
|
+
throw error;
|
|
660
678
|
}
|
|
661
679
|
return {
|
|
662
680
|
actor: actor.ref,
|
|
@@ -665,23 +683,23 @@ class ZLinkNodeRawMeshBackend {
|
|
|
665
683
|
membershipEpoch: actor.membershipEpoch
|
|
666
684
|
};
|
|
667
685
|
}
|
|
668
|
-
lookupRemoteActor(targetNodeRid, actorId, timeoutMs =
|
|
686
|
+
lookupRemoteActor(targetNodeRid, actorId, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
669
687
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorLookup, this.requireStateful().lookupRemoteActor(String(targetNodeRid), actorId, timeoutMs));
|
|
670
688
|
}
|
|
671
|
-
destroyActor(actor, timeoutMs =
|
|
689
|
+
destroyActor(actor, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
672
690
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorDestroy, this.requireStateful().destroyActor(actor, timeoutMs));
|
|
673
691
|
}
|
|
674
|
-
joinActorSpot(actor, targetNodeRid, targetSpotId, targetSpotGeneration, request, timeoutMs =
|
|
692
|
+
joinActorSpot(actor, targetNodeRid, targetSpotId, targetSpotGeneration, request, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
675
693
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorJoin, this.requireStateful().joinActor(actor, String(targetNodeRid), { spotId: String(targetSpotId), generation: targetSpotGeneration }, targetSpotGeneration, request, timeoutMs));
|
|
676
694
|
}
|
|
677
|
-
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) {
|
|
678
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));
|
|
679
697
|
}
|
|
680
|
-
joinActorEntrySpot(actor, targetNodeRid, request, timeoutMs =
|
|
698
|
+
joinActorEntrySpot(actor, targetNodeRid, request, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
681
699
|
const target = String(targetNodeRid);
|
|
682
700
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorJoin, this.requireStateful().joinActorEntrySpot(actor, target, request, timeoutMs));
|
|
683
701
|
}
|
|
684
|
-
joinActorEntrySpotCanonical(actor, targetNodeRid, request, actorFence, local, timeoutMs =
|
|
702
|
+
joinActorEntrySpotCanonical(actor, targetNodeRid, request, actorFence, local, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
685
703
|
const target = String(targetNodeRid);
|
|
686
704
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorJoin, this.requireStateful().joinActorEntrySpotCanonical(actor, target, request, actorFence, local, timeoutMs));
|
|
687
705
|
}
|
|
@@ -689,25 +707,25 @@ class ZLinkNodeRawMeshBackend {
|
|
|
689
707
|
return this.requireStateful().sendToActor(actor, this.peerGeneration(String(actor.nodeRid)), actor.generation, encodeMultipart(parts));
|
|
690
708
|
}
|
|
691
709
|
requestToActor(actor, parts, options) {
|
|
692
|
-
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));
|
|
693
711
|
}
|
|
694
712
|
async actorSendToActor(source, target, parts) {
|
|
695
713
|
return (await this.requireStateful().sendToActor(target, this.peerGeneration(String(target.nodeRid)), target.generation, encodeMultipart(parts), source));
|
|
696
714
|
}
|
|
697
715
|
actorRequestToActor(source, target, parts, options) {
|
|
698
|
-
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));
|
|
699
717
|
}
|
|
700
718
|
async sendActorBoundSession(actor, expectedBindingGeneration, parts, _flags) {
|
|
701
719
|
return (await this.requireStateful().sendBoundSession(actor, expectedBindingGeneration, encodeMultipart(parts)));
|
|
702
720
|
}
|
|
703
|
-
closeActorBoundSession(actor, expectedBindingGeneration, timeoutMs =
|
|
721
|
+
closeActorBoundSession(actor, expectedBindingGeneration, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
704
722
|
const binding = this.requireStateful().registry.binding(actor);
|
|
705
723
|
if (binding === undefined) {
|
|
706
724
|
return this.enqueueImmediateFailure(service_runtime_contracts_1.OperationKind.StreamUnbind, zlink_1.RequestResult.NotFound);
|
|
707
725
|
}
|
|
708
726
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.StreamUnbind, this.requireStateful().unbindSession(binding.sessionRid, actor, expectedBindingGeneration, timeoutMs));
|
|
709
727
|
}
|
|
710
|
-
leaveActor(actor, expectedMembershipEpoch, timeoutMs =
|
|
728
|
+
leaveActor(actor, expectedMembershipEpoch, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
711
729
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorLeave, this.requireStateful().leaveActor(actor, expectedMembershipEpoch, timeoutMs));
|
|
712
730
|
}
|
|
713
731
|
createStreamSessionService(stream) {
|
|
@@ -743,7 +761,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
743
761
|
nodeRoutingId: this.routingId,
|
|
744
762
|
lifecycleGeneration: this.lifecycleGeneration,
|
|
745
763
|
descriptorRevision: 1n,
|
|
746
|
-
advertisedEndpoint: this.bindEndpoint ??
|
|
764
|
+
advertisedEndpoint: this.bindEndpoint ?? UNSTARTED_DIAGNOSTIC_ENDPOINT,
|
|
747
765
|
channels,
|
|
748
766
|
state: 'preparing',
|
|
749
767
|
// Plaintext RouteMesh peers use the shared default admission identity.
|
|
@@ -767,29 +785,35 @@ class ZLinkNodeRawMeshBackend {
|
|
|
767
785
|
return result;
|
|
768
786
|
}
|
|
769
787
|
scheduleMaintenance() {
|
|
770
|
-
if (this.closed
|
|
788
|
+
if (this.closed)
|
|
789
|
+
return;
|
|
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())
|
|
771
793
|
return;
|
|
772
|
-
|
|
794
|
+
if (pending) {
|
|
795
|
+
this.maintenanceTimer.ref();
|
|
796
|
+
}
|
|
797
|
+
else {
|
|
798
|
+
this.maintenanceTimer.unref();
|
|
799
|
+
}
|
|
773
800
|
}
|
|
774
801
|
async pump() {
|
|
775
802
|
if (this.isClosed() || this.pumping)
|
|
776
803
|
return;
|
|
777
804
|
this.pumping = true;
|
|
778
|
-
if (this.maintenanceTimer !== undefined)
|
|
779
|
-
clearTimeout(this.maintenanceTimer);
|
|
780
|
-
this.maintenanceTimer = undefined;
|
|
781
805
|
try {
|
|
782
806
|
do {
|
|
783
|
-
const
|
|
784
|
-
this.readable =
|
|
785
|
-
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);
|
|
786
810
|
if (more) {
|
|
787
811
|
// Yield only after actual progress, retaining readiness across the
|
|
788
812
|
// existing batch limits until receive reports no data.
|
|
789
|
-
this.readable
|
|
813
|
+
this.readable |= 1;
|
|
790
814
|
await (0, promises_1.setImmediate)();
|
|
791
815
|
}
|
|
792
|
-
} while (!this.closed && this.readable);
|
|
816
|
+
} while (!this.closed && this.readable !== 0);
|
|
793
817
|
}
|
|
794
818
|
finally {
|
|
795
819
|
this.pumping = false;
|
|
@@ -817,7 +841,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
817
841
|
return id;
|
|
818
842
|
}
|
|
819
843
|
observeStateful(operationKind, pending) {
|
|
820
|
-
const id = { high:
|
|
844
|
+
const id = { high: operation_identity_1.ZLINK_NATIVE_CORRELATION_OPERATION_NAMESPACE, low: pending.id };
|
|
821
845
|
void pending.promise.then((result) => this.enqueueCompletion(id, operationKind, result), (error) => this.enqueueCompletion(id, operationKind, requestFailureResult(error)));
|
|
822
846
|
return id;
|
|
823
847
|
}
|
|
@@ -858,7 +882,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
858
882
|
if (this.completionCount === 0) {
|
|
859
883
|
this.clearCompletions();
|
|
860
884
|
}
|
|
861
|
-
else if (
|
|
885
|
+
else if ((0, admission_1.shouldCompactBackingArray)(this.completionHead, this.completions.length)) {
|
|
862
886
|
this.completions.splice(0, this.completionHead);
|
|
863
887
|
this.completionHead = 0;
|
|
864
888
|
}
|
|
@@ -951,7 +975,7 @@ class RawServiceSpot {
|
|
|
951
975
|
const routeFence = requireDirectSpotRouteFence(options?.routeFence, String(targetNodeRid), String(targetSpotId), targetSpotGeneration, options?.entrySpot === true
|
|
952
976
|
? this.backend.entrySpotRouteFence(String(targetNodeRid), String(targetSpotId))
|
|
953
977
|
: undefined);
|
|
954
|
-
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);
|
|
955
979
|
}
|
|
956
980
|
async publish(channelName, topic, parts, options) {
|
|
957
981
|
this.requireOpen();
|
|
@@ -1009,7 +1033,7 @@ class RawStreamSessionService {
|
|
|
1009
1033
|
stateful;
|
|
1010
1034
|
stream;
|
|
1011
1035
|
observe;
|
|
1012
|
-
state =
|
|
1036
|
+
state = service_runtime_contracts_1.StreamSessionRuntimeState.Created;
|
|
1013
1037
|
closed = false;
|
|
1014
1038
|
sessionTargets = new Map();
|
|
1015
1039
|
constructor(stateful, stream, observe) {
|
|
@@ -1020,7 +1044,7 @@ class RawStreamSessionService {
|
|
|
1020
1044
|
start() {
|
|
1021
1045
|
if (this.closed)
|
|
1022
1046
|
throw new Error('STREAM session service is closed.');
|
|
1023
|
-
this.state =
|
|
1047
|
+
this.state = service_runtime_contracts_1.StreamSessionRuntimeState.Started;
|
|
1024
1048
|
}
|
|
1025
1049
|
shutdown(_timeoutMs) {
|
|
1026
1050
|
this.close();
|
|
@@ -1030,7 +1054,7 @@ class RawStreamSessionService {
|
|
|
1030
1054
|
if (this.closed)
|
|
1031
1055
|
return;
|
|
1032
1056
|
this.closed = true;
|
|
1033
|
-
this.state =
|
|
1057
|
+
this.state = service_runtime_contracts_1.StreamSessionRuntimeState.Closed;
|
|
1034
1058
|
this.sessionTargets.clear();
|
|
1035
1059
|
}
|
|
1036
1060
|
status() {
|
|
@@ -1045,17 +1069,17 @@ class RawStreamSessionService {
|
|
|
1045
1069
|
lastError: 0
|
|
1046
1070
|
};
|
|
1047
1071
|
}
|
|
1048
|
-
lookupActor(targetNodeRid, actorId, timeoutMs =
|
|
1072
|
+
lookupActor(targetNodeRid, actorId, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
1049
1073
|
this.requireStarted();
|
|
1050
1074
|
return this.observe(service_runtime_contracts_1.OperationKind.ActorLookup, this.stateful.lookupRemoteActor(String(targetNodeRid), actorId, timeoutMs));
|
|
1051
1075
|
}
|
|
1052
|
-
bindActor(sessionRid, actor, timeoutMs =
|
|
1076
|
+
bindActor(sessionRid, actor, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, onBindingReplaced, actorAuthority) {
|
|
1053
1077
|
this.requireStarted();
|
|
1054
1078
|
const sessionKey = String(sessionRid);
|
|
1055
1079
|
this.sessionTargets.set(sessionKey, sessionRid);
|
|
1056
|
-
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));
|
|
1057
1081
|
}
|
|
1058
|
-
unbindActor(sessionRid, actor, expectedBindingGeneration, timeoutMs =
|
|
1082
|
+
unbindActor(sessionRid, actor, expectedBindingGeneration, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
1059
1083
|
this.requireStarted();
|
|
1060
1084
|
return this.observe(service_runtime_contracts_1.OperationKind.StreamUnbind, this.stateful.unbindSession(String(sessionRid), actor, expectedBindingGeneration, timeoutMs));
|
|
1061
1085
|
}
|
|
@@ -1110,7 +1134,7 @@ class RawStreamSessionService {
|
|
|
1110
1134
|
}
|
|
1111
1135
|
}
|
|
1112
1136
|
requireStarted() {
|
|
1113
|
-
if (this.state !==
|
|
1137
|
+
if (this.state !== service_runtime_contracts_1.StreamSessionRuntimeState.Started || this.closed) {
|
|
1114
1138
|
throw new Error('STREAM session service is not started.');
|
|
1115
1139
|
}
|
|
1116
1140
|
}
|
|
@@ -1335,7 +1359,7 @@ function decodeMultipartRecord(runtime, record) {
|
|
|
1335
1359
|
};
|
|
1336
1360
|
}
|
|
1337
1361
|
const header = record.parts[0];
|
|
1338
|
-
const command = header[
|
|
1362
|
+
const command = header[service_wire_binary_primitives_1.SERVICE_WIRE_COMMAND_OFFSET];
|
|
1339
1363
|
const payloadFrame = record.parts[1];
|
|
1340
1364
|
const application = decodeApplicationEnvelope(payloadFrame);
|
|
1341
1365
|
const channelName = record.owner.startsWith('channel:')
|
|
@@ -1344,11 +1368,11 @@ function decodeMultipartRecord(runtime, record) {
|
|
|
1344
1368
|
const operationId = record.correlation === undefined
|
|
1345
1369
|
? { high: 0n, low: 0n }
|
|
1346
1370
|
: { high: 1n, low: record.correlation };
|
|
1347
|
-
const kind = command ===
|
|
1371
|
+
const kind = command === service_wire_constants_generated_1.ServiceWireCommand.nodeSend
|
|
1348
1372
|
? service_runtime_contracts_1.ReceiveKind.NodeSend
|
|
1349
|
-
: command ===
|
|
1373
|
+
: command === service_wire_constants_generated_1.ServiceWireCommand.nodeRequest
|
|
1350
1374
|
? service_runtime_contracts_1.ReceiveKind.NodeRequest
|
|
1351
|
-
: command ===
|
|
1375
|
+
: command === service_wire_constants_generated_1.ServiceWireCommand.channelSend
|
|
1352
1376
|
? service_runtime_contracts_1.ReceiveKind.ChannelSend
|
|
1353
1377
|
: service_runtime_contracts_1.ReceiveKind.ChannelRequest;
|
|
1354
1378
|
const operationKind = kind === service_runtime_contracts_1.ReceiveKind.NodeRequest
|
|
@@ -1398,7 +1422,7 @@ function decodeStatefulRecord(record, stateful) {
|
|
|
1398
1422
|
: decodeApplicationEnvelope(payloadFrame);
|
|
1399
1423
|
const operationId = record.correlation === undefined
|
|
1400
1424
|
? { high: 0n, low: 0n }
|
|
1401
|
-
: { high:
|
|
1425
|
+
: { high: operation_identity_1.ZLINK_NATIVE_CORRELATION_OPERATION_NAMESPACE, low: record.correlation };
|
|
1402
1426
|
const ingressLifecycle = receiveIngressLifecycle(record);
|
|
1403
1427
|
return {
|
|
1404
1428
|
kind: stateful.receiveKind,
|
|
@@ -1429,12 +1453,18 @@ function decodeStatefulRecord(record, stateful) {
|
|
|
1429
1453
|
: decodeMultipart(application.payload),
|
|
1430
1454
|
...(stateful.isPending === undefined ? {} : { isPending: stateful.isPending }),
|
|
1431
1455
|
...(stateful.deadlineUnixMs === undefined ? {} : { deadlineUnixMs: stateful.deadlineUnixMs }),
|
|
1456
|
+
...(stateful.activationRecord === undefined
|
|
1457
|
+
? {}
|
|
1458
|
+
: { activationRecord: stateful.activationRecord }),
|
|
1432
1459
|
...(stateful.messageFollowOrigin === undefined
|
|
1433
1460
|
? {}
|
|
1434
1461
|
: { messageFollowOrigin: stateful.messageFollowOrigin }),
|
|
1435
1462
|
...(stateful.onTerminalCompletion === undefined
|
|
1436
1463
|
? {}
|
|
1437
1464
|
: { onTerminalCompletion: stateful.onTerminalCompletion }),
|
|
1465
|
+
...(stateful.onHandlerTurnStarted === undefined
|
|
1466
|
+
? {}
|
|
1467
|
+
: { onHandlerTurnStarted: stateful.onHandlerTurnStarted }),
|
|
1438
1468
|
reply(parts) {
|
|
1439
1469
|
if (stateful.reply === undefined)
|
|
1440
1470
|
return zlink_1.SubmitResult.InvalidState;
|
|
@@ -1530,7 +1560,7 @@ function readyDomain(domain) {
|
|
|
1530
1560
|
/**
|
|
1531
1561
|
* The one classification of a failed node/channel/stateful request into its
|
|
1532
1562
|
* completion terminal. A binding REQUEST result is Core's decision and is kept
|
|
1533
|
-
* as is; a submit failure
|
|
1563
|
+
* as is; a submit failure is classified from its submission or completion phase.
|
|
1534
1564
|
* A reply that could not be decoded is a protocol
|
|
1535
1565
|
* failure (spec 32-framework-error-model:91-92). The failure code is a wire
|
|
1536
1566
|
* code, so a Core result carries 0.
|
|
@@ -1539,14 +1569,19 @@ function requestFailureResult(error) {
|
|
|
1539
1569
|
const failure = (0, node_backend_adapter_support_1.translateBindingResultError)(error);
|
|
1540
1570
|
if ((0, runtime_values_1.isZLinkBackendResultError)(failure)) {
|
|
1541
1571
|
return {
|
|
1542
|
-
terminalResult: failure.operation === 'request'
|
|
1572
|
+
terminalResult: failure.operation === 'request'
|
|
1573
|
+
? failure.result
|
|
1574
|
+
: (0, submission_result_1.submitToRequestResult)(failure.result, failure.phase),
|
|
1543
1575
|
failureCode: 0
|
|
1544
1576
|
};
|
|
1545
1577
|
}
|
|
1546
1578
|
// requestProtocolError(16): the schema terminal-failure-integrity rule
|
|
1547
1579
|
// forbids a typed terminal (104) with failure none.
|
|
1548
1580
|
if (failure instanceof service_wire_m6a_codec_1.ServiceWireProtocolError) {
|
|
1549
|
-
return {
|
|
1581
|
+
return {
|
|
1582
|
+
terminalResult: zlink_1.RequestResult.ProtocolError,
|
|
1583
|
+
failureCode: service_wire_constants_generated_1.ServiceWireFrameworkErrorCode.requestProtocolError
|
|
1584
|
+
};
|
|
1550
1585
|
}
|
|
1551
1586
|
if (failure instanceof contracts_1.ZLinkFrameworkException) {
|
|
1552
1587
|
return (0, framework_errors_internal_1.internalFrameworkWireReply)(failure);
|
|
@@ -1557,31 +1592,10 @@ function requestFailureResult(error) {
|
|
|
1557
1592
|
if (failure instanceof operation_registry_1.OperationCancelledError) {
|
|
1558
1593
|
return { terminalResult: zlink_1.RequestResult.NotConnected, failureCode: 0 };
|
|
1559
1594
|
}
|
|
1560
|
-
return {
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
case zlink_1.SubmitResult.Backpressured:
|
|
1565
|
-
return zlink_1.RequestResult.Backpressured;
|
|
1566
|
-
case zlink_1.SubmitResult.NotConnected:
|
|
1567
|
-
return zlink_1.RequestResult.NotConnected;
|
|
1568
|
-
case zlink_1.SubmitResult.NotFound:
|
|
1569
|
-
return zlink_1.RequestResult.NotFound;
|
|
1570
|
-
case zlink_1.SubmitResult.NotAdmitted:
|
|
1571
|
-
return zlink_1.RequestResult.Rejected;
|
|
1572
|
-
case zlink_1.SubmitResult.InvalidHandle:
|
|
1573
|
-
case zlink_1.SubmitResult.InvalidArgument:
|
|
1574
|
-
case zlink_1.SubmitResult.ThreadViolation:
|
|
1575
|
-
return zlink_1.RequestResult.InvalidArgument;
|
|
1576
|
-
case zlink_1.SubmitResult.InvalidState:
|
|
1577
|
-
return zlink_1.RequestResult.InvalidState;
|
|
1578
|
-
case zlink_1.SubmitResult.NotSupported:
|
|
1579
|
-
return zlink_1.RequestResult.NotSupported;
|
|
1580
|
-
case zlink_1.SubmitResult.Terminated:
|
|
1581
|
-
return zlink_1.RequestResult.Terminated;
|
|
1582
|
-
default:
|
|
1583
|
-
return zlink_1.RequestResult.InternalError;
|
|
1584
|
-
}
|
|
1595
|
+
return {
|
|
1596
|
+
terminalResult: zlink_1.RequestResult.InternalError,
|
|
1597
|
+
failureCode: service_wire_constants_generated_1.ServiceWireFrameworkErrorCode.requestFailed
|
|
1598
|
+
};
|
|
1585
1599
|
}
|
|
1586
1600
|
function encodeMultipart(parts) {
|
|
1587
1601
|
const values = Array.isArray(parts) ? parts : [parts];
|
|
@@ -1616,7 +1630,8 @@ function encodeMultipartApplicationFrame(parts) {
|
|
|
1616
1630
|
}
|
|
1617
1631
|
function decodeApplicationEnvelope(frame) {
|
|
1618
1632
|
const bytes = Buffer.from(frame.buffer, frame.byteOffset, frame.byteLength);
|
|
1619
|
-
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) {
|
|
1620
1635
|
throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Invalid application envelope.');
|
|
1621
1636
|
}
|
|
1622
1637
|
const bodyLength = bytes.readUInt32BE(1);
|
|
@@ -1714,20 +1729,33 @@ function requireRawReadyBatch(batch) {
|
|
|
1714
1729
|
return batch;
|
|
1715
1730
|
}
|
|
1716
1731
|
function stateCode(state) {
|
|
1717
|
-
|
|
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
|
+
}
|
|
1718
1746
|
}
|
|
1719
1747
|
function peerStateCode(state) {
|
|
1720
1748
|
switch (state) {
|
|
1721
1749
|
case 'preparing':
|
|
1722
|
-
return
|
|
1750
|
+
return service_runtime_contracts_1.MeshPeerRuntimeState.Preparing;
|
|
1723
1751
|
case 'serving':
|
|
1724
1752
|
case 'retiring':
|
|
1725
|
-
return
|
|
1753
|
+
return service_runtime_contracts_1.MeshPeerRuntimeState.Serving;
|
|
1726
1754
|
case 'draining':
|
|
1727
|
-
return
|
|
1755
|
+
return service_runtime_contracts_1.MeshPeerRuntimeState.Draining;
|
|
1728
1756
|
case 'stopped':
|
|
1729
1757
|
case 'error':
|
|
1730
|
-
return
|
|
1758
|
+
return service_runtime_contracts_1.MeshPeerRuntimeState.Closed;
|
|
1731
1759
|
}
|
|
1732
1760
|
}
|
|
1733
1761
|
function createLifecycleGeneration() {
|
|
@@ -1738,14 +1766,14 @@ function createLifecycleGeneration() {
|
|
|
1738
1766
|
return generation === 0n ? 1n : generation;
|
|
1739
1767
|
}
|
|
1740
1768
|
function requirePositivePlacementValue(value, name) {
|
|
1741
|
-
if (!
|
|
1742
|
-
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}.`);
|
|
1743
1771
|
}
|
|
1744
1772
|
return value;
|
|
1745
1773
|
}
|
|
1746
1774
|
function requirePublicWeight(value, name) {
|
|
1747
|
-
if (!
|
|
1748
|
-
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}.`);
|
|
1749
1777
|
}
|
|
1750
1778
|
return value;
|
|
1751
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();
|
|
@@ -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
|
}
|
|
@@ -24,7 +24,7 @@ export interface ZLinkRawMonitorRecord {
|
|
|
24
24
|
readonly flags?: number;
|
|
25
25
|
}
|
|
26
26
|
export interface ZLinkRawSocketPort {
|
|
27
|
-
setReadableHandler(handler: () => void): void;
|
|
27
|
+
setReadableHandler(handler: (receiveReady: boolean, routeReady: boolean) => void): void;
|
|
28
28
|
bind(endpoint: string): void;
|
|
29
29
|
unbind(endpoint: string): void;
|
|
30
30
|
connect(endpoint: string): void;
|