@zlink-systems/framework 0.21.0 → 0.22.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/ZLinkMessage.js +5 -5
- package/dist/contracts/Configuration/CodecContentType.js +5 -7
- package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
- package/dist/contracts/Configuration/EndpointNotation.js +4 -8
- package/dist/contracts/Configuration/Registration.js +14 -11
- package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
- package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
- package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
- package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
- package/dist/contracts/Handlers/JsonContract.js +23 -11
- package/dist/contracts/Spots/SpotKind.js +16 -8
- package/dist/location-store-integration.js +16 -16
- package/dist/nest-integration.js +17 -11
- package/dist/runtime/abort.js +9 -5
- package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
- package/dist/runtime/actors/actor-authority-publication.js +18 -17
- package/dist/runtime/actors/actor-client.js +83 -63
- package/dist/runtime/actors/actor-context.js +24 -18
- package/dist/runtime/actors/actor-creation.js +4 -3
- package/dist/runtime/actors/actor-handoff.js +89 -92
- package/dist/runtime/actors/actor-local-native-join.js +18 -19
- package/dist/runtime/actors/actor-mailbox.js +1 -1
- package/dist/runtime/actors/actor-message-follow-context.js +24 -21
- package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
- package/dist/runtime/actors/actor-remote-joiner.js +20 -17
- package/dist/runtime/actors/actor-remote-wire.js +6 -7
- package/dist/runtime/actors/actor-runtime-state.js +87 -81
- package/dist/runtime/actors/actor-transfer-registry.js +3 -5
- package/dist/runtime/actors/bound-session-wire.js +14 -9
- package/dist/runtime/actors/deferred-join-accepted-journal.js +158 -124
- package/dist/runtime/actors/index.js +2 -5
- package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
- package/dist/runtime/actors/post-commit-actor-location.js +1 -1
- package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
- package/dist/runtime/admission.js +2 -6
- package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
- package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
- package/dist/runtime/backend/mesh-completion-table.js +1 -3
- package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
- package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
- package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
- package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +116 -113
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
- package/dist/runtime/backend/runtime-message.js +3 -3
- package/dist/runtime/backend/runtime-values.d.ts +2 -2
- package/dist/runtime/backend/runtime-values.js +4 -5
- package/dist/runtime/channels/channel-clients.js +27 -24
- package/dist/runtime/channels/channel-dispatch-pipeline.js +10 -18
- package/dist/runtime/channels/channel-dispatch-services.js +7 -4
- package/dist/runtime/channels/channel-dispatchers.js +9 -9
- package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
- package/dist/runtime/channels/channel-envelope.js +83 -47
- package/dist/runtime/channels/channel-outbound-operations.js +8 -8
- package/dist/runtime/channels/channel-receive-loops.js +20 -22
- package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
- package/dist/runtime/channels/channel-runtime-manager.js +18 -9
- package/dist/runtime/channels/channel-socket-registry.js +126 -123
- package/dist/runtime/channels/channel-transports.js +43 -33
- package/dist/runtime/channels/client-server-location-runtime.js +32 -40
- package/dist/runtime/channels/client-server-service-wire.js +29 -22
- package/dist/runtime/channels/dispatch-error-reporter.js +9 -7
- package/dist/runtime/channels/fanout-location-runtime.js +34 -47
- package/dist/runtime/channels/fanout-service-wire.js +3 -5
- package/dist/runtime/channels/local-spot-route-transport.js +7 -1
- package/dist/runtime/channels/route-member-snapshot.js +3 -3
- package/dist/runtime/channels/source-spot-router.js +6 -2
- package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
- package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
- package/dist/runtime/diagnostics/index.js +38 -10
- package/dist/runtime/diagnostics/message-flow.js +47 -39
- package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
- package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
- package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
- package/dist/runtime/execution/index.js +7 -6
- package/dist/runtime/execution/serial-execution-queue.js +12 -18
- package/dist/runtime/execution/state-lane.js +2 -2
- package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -23
- package/dist/runtime/foundation/event-loop-resources.js +4 -4
- package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +136 -136
- package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
- package/dist/runtime/foundation/runtime-state-projections.js +22 -11
- package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
- package/dist/runtime/foundation/service-discovery-registry.js +35 -33
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
- package/dist/runtime/foundation/service-liveness-registry.js +16 -12
- package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
- package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
- package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
- package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
- package/dist/runtime/foundation/service-stateful-registry.js +24 -23
- package/dist/runtime/foundation/service-stateful-runtime.js +416 -438
- package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
- package/dist/runtime/foundation/service-topology-registry.js +96 -95
- package/dist/runtime/foundation/service-weighted-selection.js +6 -11
- package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
- package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
- package/dist/runtime/framework-errors-internal.js +7 -10
- package/dist/runtime/handlers/handler-instance-scope.js +4 -5
- package/dist/runtime/handlers/index.js +3 -1
- package/dist/runtime/host/actor-packet-relay.js +74 -70
- package/dist/runtime/host/actor-placement-coordinator.js +29 -31
- package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
- package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
- package/dist/runtime/host/actor-transfer-runtime.js +176 -153
- package/dist/runtime/host/application-job-queue.js +18 -22
- package/dist/runtime/host/bound-session-relay.js +3 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
- package/dist/runtime/host/host-capacity-status.js +8 -4
- package/dist/runtime/host/index.js +244 -227
- package/dist/runtime/host/instance-activation-authority.js +93 -96
- package/dist/runtime/host/location-runtime-owner.js +16 -14
- package/dist/runtime/host/mesh-router-resolver.js +11 -13
- package/dist/runtime/host/relocation-direct-transfer.js +10 -9
- package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
- package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
- package/dist/runtime/host/remote-bound-session-relay.js +97 -73
- package/dist/runtime/host/route-mesh-runtime.js +64 -69
- package/dist/runtime/host/runtime-shutdown.js +1 -2
- package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
- package/dist/runtime/host/spot-address-transport.js +69 -71
- package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
- package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
- package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
- package/dist/runtime/locations/actor-location-claims.js +26 -20
- package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
- package/dist/runtime/locations/authority-key-codec.js +7 -7
- package/dist/runtime/locations/auto-connect-loop.js +3 -3
- package/dist/runtime/locations/auto-connect-planner.js +25 -19
- package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
- package/dist/runtime/locations/in-memory-authority-store.js +128 -118
- package/dist/runtime/locations/in-memory-location-store.js +195 -168
- package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
- package/dist/runtime/locations/key-codec.js +1 -1
- package/dist/runtime/locations/lease-tracker.js +23 -21
- package/dist/runtime/locations/lifecycle.js +4 -5
- package/dist/runtime/locations/location-store-repository.js +368 -324
- package/dist/runtime/locations/opaque-record-key.js +2 -2
- package/dist/runtime/locations/resolvers.js +73 -82
- package/dist/runtime/locations/runtime.js +68 -63
- package/dist/runtime/locations/spot-location-claims.js +39 -35
- package/dist/runtime/messaging/framework-json-v1.js +7 -7
- package/dist/runtime/messaging/packet-name.js +7 -6
- package/dist/runtime/messaging/payload-codec.js +21 -18
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
- package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
- package/dist/runtime/routing-id.js +3 -5
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
- package/dist/runtime/spots/index.js +208 -219
- package/dist/runtime/spots/spot-activation-registry.js +15 -14
- package/dist/runtime/spots/spot-activation-state.js +17 -15
- package/dist/runtime/spots/spot-activation.js +33 -16
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
- package/dist/runtime/spots/spot-actor-membership.js +1 -3
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +23 -20
- package/dist/runtime/spots/spot-actor-packet-drain.js +12 -10
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
- package/dist/runtime/spots/spot-closing.js +3 -7
- package/dist/runtime/spots/spot-context.js +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +13 -14
- package/dist/runtime/spots/spot-handle.js +6 -3
- package/dist/runtime/spots/spot-handler-registry.js +12 -12
- package/dist/runtime/spots/spot-manager-public.js +5 -6
- package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
- package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +74 -85
- package/dist/runtime/spots/spot-outbound.js +10 -14
- package/dist/runtime/spots/spot-remote-codec.js +22 -26
- package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
- package/dist/runtime/spots/spot-route-packet-dispatch.js +16 -14
- package/dist/runtime/spots/spot-route-replies.js +4 -6
- package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
- package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +1 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
- package/dist/runtime/spots/spot-serial-executor.js +5 -8
- package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
- package/dist/runtime/spots/spot-subscription-dispatch.js +5 -5
- package/dist/runtime/spots/spot-timer.js +25 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +98 -107
- package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +18 -16
- package/dist/runtime/streams/bound-session-service.js +8 -9
- package/dist/runtime/streams/index.js +20 -19
- package/dist/runtime/streams/managed-stream.js +32 -30
- package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
- package/dist/runtime/streams/protocol.js +29 -18
- package/dist/runtime/streams/session-actor-coordinator.js +34 -37
- package/dist/runtime/streams/session-context.js +30 -28
- package/dist/runtime/streams/session-provider.js +2 -2
- package/dist/runtime/streams/session-serial-executor.js +1 -2
- package/dist/runtime/streams/stream-frame-factory.js +11 -5
- package/dist/runtime/streams/stream-session-runtime.js +70 -66
- package/dist/runtime/workers/index.js +15 -4
- package/package.json +2 -2
- package/src/contracts/Channels/RouteCalls.ts +6 -1
- package/src/contracts/Common/ZLinkMessage.ts +5 -5
- package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
- package/src/contracts/Configuration/Builders.ts +14 -14
- package/src/contracts/Configuration/CodecContentType.ts +8 -10
- package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
- package/src/contracts/Configuration/EndpointNotation.ts +11 -11
- package/src/contracts/Configuration/ObjectRoles.ts +1 -3
- package/src/contracts/Configuration/Registration.ts +46 -17
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
- package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
- package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
- package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
- package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
- package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
- package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
- package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
- package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -6
- package/src/contracts/Errors/index.ts +1 -4
- package/src/contracts/Handlers/Attributes.ts +15 -9
- package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
- package/src/contracts/Handlers/JsonContract.ts +53 -19
- package/src/contracts/Locations/ActorTransfer.ts +1 -5
- package/src/contracts/Locations/Authority.ts +4 -11
- package/src/contracts/Locations/Keys.ts +6 -1
- package/src/contracts/Locations/Options.ts +3 -2
- package/src/contracts/Locations/RelocationStore.ts +1 -4
- package/src/contracts/Locations/Resolvers.ts +5 -5
- package/src/contracts/Locations/RuntimeQuery.ts +6 -2
- package/src/contracts/Locations/Stores.ts +1 -2
- package/src/contracts/Locations/index.ts +2 -8
- package/src/contracts/RouteMesh/Contracts.ts +1 -7
- package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
- package/src/contracts/Spots/Contracts.ts +2 -8
- package/src/contracts/Spots/SpotKind.ts +16 -8
- package/src/contracts/Spots/ZLinkSpot.ts +8 -11
- package/src/contracts/Streams/IZLinkSession.ts +0 -1
- package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
- package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
- package/src/internal.ts +5 -4
- package/src/location-store-integration.ts +24 -16
- package/src/nest-integration.ts +40 -25
- package/src/runtime/abort.ts +10 -4
- package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
- package/src/runtime/actors/actor-authority-publication.ts +92 -77
- package/src/runtime/actors/actor-client.ts +162 -133
- package/src/runtime/actors/actor-context.ts +138 -130
- package/src/runtime/actors/actor-creation.ts +47 -44
- package/src/runtime/actors/actor-execution-context.ts +6 -4
- package/src/runtime/actors/actor-handoff.ts +269 -293
- package/src/runtime/actors/actor-join-deferred-scope.ts +5 -4
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
- package/src/runtime/actors/actor-local-native-join.ts +131 -159
- package/src/runtime/actors/actor-mailbox.ts +16 -19
- package/src/runtime/actors/actor-message-follow-context.ts +46 -36
- package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
- package/src/runtime/actors/actor-remote-joiner.ts +50 -54
- package/src/runtime/actors/actor-remote-wire.ts +9 -13
- package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
- package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
- package/src/runtime/actors/actor-runtime-state.ts +127 -124
- package/src/runtime/actors/actor-transfer-registry.ts +9 -14
- package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
- package/src/runtime/actors/bound-session-wire.ts +37 -17
- package/src/runtime/actors/deferred-join-accepted-journal.ts +351 -320
- package/src/runtime/actors/index.ts +43 -86
- package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
- package/src/runtime/actors/post-commit-actor-location.ts +30 -23
- package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
- package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
- package/src/runtime/admission.ts +9 -9
- package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
- package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
- package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
- package/src/runtime/backend/contracts/index.ts +73 -52
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
- package/src/runtime/backend/mesh-completion-table.ts +6 -9
- package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
- package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
- package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
- package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
- package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +335 -383
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
- package/src/runtime/backend/runtime-message.ts +5 -3
- package/src/runtime/backend/runtime-values.ts +10 -7
- package/src/runtime/channels/channel-autoconnect.ts +1 -4
- package/src/runtime/channels/channel-clients.ts +93 -73
- package/src/runtime/channels/channel-dispatch-pipeline.ts +40 -42
- package/src/runtime/channels/channel-dispatch-services.ts +51 -49
- package/src/runtime/channels/channel-dispatchers.ts +152 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
- package/src/runtime/channels/channel-envelope.ts +256 -150
- package/src/runtime/channels/channel-multipart.ts +13 -5
- package/src/runtime/channels/channel-outbound-operations.ts +37 -41
- package/src/runtime/channels/channel-receive-loops.ts +102 -98
- package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
- package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
- package/src/runtime/channels/channel-runtime-manager.ts +63 -37
- package/src/runtime/channels/channel-socket-options.ts +3 -10
- package/src/runtime/channels/channel-socket-registry.ts +331 -273
- package/src/runtime/channels/channel-transports.ts +215 -197
- package/src/runtime/channels/client-server-location-runtime.ts +116 -100
- package/src/runtime/channels/client-server-service-wire.ts +37 -36
- package/src/runtime/channels/dispatch-error-reporter.ts +11 -8
- package/src/runtime/channels/fanout-location-runtime.ts +91 -94
- package/src/runtime/channels/fanout-service-wire.ts +5 -12
- package/src/runtime/channels/handler-filter-scope.ts +1 -4
- package/src/runtime/channels/index.ts +1 -4
- package/src/runtime/channels/local-spot-route-transport.ts +20 -5
- package/src/runtime/channels/route-member-snapshot.ts +11 -5
- package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
- package/src/runtime/channels/source-spot-router.ts +26 -22
- package/src/runtime/channels/spot-direct-envelope.ts +10 -8
- package/src/runtime/channels/spot-node-route-transport.ts +13 -16
- package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
- package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
- package/src/runtime/codecs/index.ts +3 -2
- package/src/runtime/diagnostics/flow-context.ts +12 -3
- package/src/runtime/diagnostics/index.ts +96 -61
- package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
- package/src/runtime/diagnostics/message-flow.ts +95 -76
- package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
- package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
- package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
- package/src/runtime/execution/index.ts +18 -26
- package/src/runtime/execution/serial-execution-queue.ts +31 -40
- package/src/runtime/execution/state-lane.ts +2 -2
- package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -51
- package/src/runtime/foundation/event-loop-resources.ts +8 -4
- package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
- package/src/runtime/foundation/operation-identity.ts +1 -2
- package/src/runtime/foundation/operation-registry.ts +8 -2
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +312 -385
- package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
- package/src/runtime/foundation/runtime-state-projections.ts +24 -23
- package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
- package/src/runtime/foundation/service-discovery-registry.ts +67 -59
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
- package/src/runtime/foundation/service-liveness-registry.ts +18 -13
- package/src/runtime/foundation/service-mailbox.ts +14 -14
- package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
- package/src/runtime/foundation/service-metadata-codec.ts +2 -9
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
- package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
- package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
- package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
- package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +1 -4
- package/src/runtime/foundation/service-stateful-registry.ts +69 -59
- package/src/runtime/foundation/service-stateful-runtime.ts +1174 -1112
- package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
- package/src/runtime/foundation/service-topology-registry.ts +157 -159
- package/src/runtime/foundation/service-weighted-selection.ts +9 -15
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
- package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
- package/src/runtime/framework-errors-internal.ts +31 -30
- package/src/runtime/handlers/handler-instance-scope.ts +18 -29
- package/src/runtime/handlers/index.ts +18 -8
- package/src/runtime/host/actor-packet-relay.ts +290 -261
- package/src/runtime/host/actor-placement-coordinator.ts +165 -150
- package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
- package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
- package/src/runtime/host/actor-transfer-runtime.ts +391 -395
- package/src/runtime/host/application-job-queue.ts +32 -48
- package/src/runtime/host/bound-session-relay.ts +7 -9
- package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
- package/src/runtime/host/host-capacity-status.ts +10 -9
- package/src/runtime/host/index.ts +861 -789
- package/src/runtime/host/instance-activation-authority.ts +125 -143
- package/src/runtime/host/location-runtime-owner.ts +38 -26
- package/src/runtime/host/mesh-router-resolver.ts +30 -23
- package/src/runtime/host/relocation-direct-transfer.ts +15 -15
- package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
- package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
- package/src/runtime/host/remote-bound-session-relay.ts +274 -247
- package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
- package/src/runtime/host/route-mesh-runtime.ts +227 -181
- package/src/runtime/host/runtime-shutdown.ts +4 -3
- package/src/runtime/host/service-relocation-control.ts +14 -5
- package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
- package/src/runtime/host/spot-address-transport.ts +284 -237
- package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
- package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
- package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
- package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
- package/src/runtime/locations/actor-location-claims.ts +61 -49
- package/src/runtime/locations/actor-session-route-claims.ts +1 -4
- package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
- package/src/runtime/locations/authority-key-codec.ts +13 -10
- package/src/runtime/locations/auto-connect-loop.ts +14 -11
- package/src/runtime/locations/auto-connect-planner.ts +42 -31
- package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
- package/src/runtime/locations/canonical-codec.ts +3 -1
- package/src/runtime/locations/creation-operation-id.ts +4 -3
- package/src/runtime/locations/domain-store-contract.ts +13 -7
- package/src/runtime/locations/in-memory-authority-store.ts +232 -199
- package/src/runtime/locations/in-memory-location-store.ts +432 -250
- package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
- package/src/runtime/locations/internal-store-contracts.ts +95 -38
- package/src/runtime/locations/key-codec.ts +3 -4
- package/src/runtime/locations/lease-tracker.ts +36 -27
- package/src/runtime/locations/lifecycle-runtime.ts +15 -3
- package/src/runtime/locations/lifecycle.ts +33 -28
- package/src/runtime/locations/location-store-repository.ts +1329 -1185
- package/src/runtime/locations/opaque-record-key.ts +4 -9
- package/src/runtime/locations/resolvers.ts +201 -178
- package/src/runtime/locations/runtime.ts +251 -159
- package/src/runtime/locations/spot-location-claims.ts +110 -112
- package/src/runtime/messaging/creation-payload-codec.ts +4 -1
- package/src/runtime/messaging/framework-json-v1.ts +34 -15
- package/src/runtime/messaging/packet-name.ts +8 -6
- package/src/runtime/messaging/payload-codec.ts +70 -50
- package/src/runtime/messaging/submission-result.ts +6 -9
- package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
- package/src/runtime/routing-id.ts +10 -7
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
- package/src/runtime/spots/index.ts +593 -563
- package/src/runtime/spots/spot-activation-registry.ts +38 -34
- package/src/runtime/spots/spot-activation-state.ts +43 -51
- package/src/runtime/spots/spot-activation.ts +179 -116
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
- package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
- package/src/runtime/spots/spot-actor-membership.ts +25 -27
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +184 -153
- package/src/runtime/spots/spot-actor-packet-drain.ts +54 -42
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
- package/src/runtime/spots/spot-closing.ts +11 -12
- package/src/runtime/spots/spot-context.ts +46 -26
- package/src/runtime/spots/spot-entry-activation.ts +84 -65
- package/src/runtime/spots/spot-handle.ts +17 -15
- package/src/runtime/spots/spot-handler-registry.ts +44 -31
- package/src/runtime/spots/spot-location-claim.ts +5 -4
- package/src/runtime/spots/spot-manager-public.ts +62 -82
- package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
- package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
- package/src/runtime/spots/spot-node-runtime-manager.ts +230 -221
- package/src/runtime/spots/spot-outbound.ts +47 -59
- package/src/runtime/spots/spot-publisher-transport.ts +5 -4
- package/src/runtime/spots/spot-remote-codec.ts +66 -65
- package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
- package/src/runtime/spots/spot-route-packet-dispatch.ts +128 -95
- package/src/runtime/spots/spot-route-replies.ts +23 -24
- package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
- package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
- package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +11 -17
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
- package/src/runtime/spots/spot-routing-internal.ts +1 -4
- package/src/runtime/spots/spot-runtime-ports.ts +5 -5
- package/src/runtime/spots/spot-serial-executor.ts +5 -9
- package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
- package/src/runtime/spots/spot-subscription-dispatch.ts +56 -46
- package/src/runtime/spots/spot-timer.ts +98 -91
- package/src/runtime/streams/actor-session-binding-registry.ts +277 -235
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +7 -4
- package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
- package/src/runtime/streams/bound-actor-relay-sender.ts +53 -51
- package/src/runtime/streams/bound-session-response-target.ts +29 -8
- package/src/runtime/streams/bound-session-service.ts +39 -39
- package/src/runtime/streams/index.ts +176 -100
- package/src/runtime/streams/managed-stream.ts +98 -87
- package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
- package/src/runtime/streams/protocol.ts +73 -43
- package/src/runtime/streams/session-actor-coordinator.ts +97 -89
- package/src/runtime/streams/session-calls.ts +2 -8
- package/src/runtime/streams/session-context.ts +66 -48
- package/src/runtime/streams/session-provider.ts +5 -7
- package/src/runtime/streams/session-serial-executor.ts +7 -6
- package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
- package/src/runtime/streams/stream-frame-factory.ts +55 -38
- package/src/runtime/streams/stream-session-runtime.ts +268 -210
- package/src/runtime/workers/index.ts +68 -29
|
@@ -117,12 +117,12 @@ class ZLinkNodeRawMeshBackend {
|
|
|
117
117
|
selectObjectPlacement(stableType) {
|
|
118
118
|
const runtime = this.requireRuntime();
|
|
119
119
|
const localNodeRid = runtime.topology.localDescriptor().nodeRoutingId;
|
|
120
|
-
const status = runtime.topology.objectPlacementStatus(stableType, candidate => candidate.nodeRoutingId === localNodeRid
|
|
121
|
-
|
|
120
|
+
const status = runtime.topology.objectPlacementStatus(stableType, (candidate) => candidate.nodeRoutingId === localNodeRid ||
|
|
121
|
+
runtime.isPeerRouteReady(candidate.nodeRoutingId));
|
|
122
122
|
if (status !== 'available')
|
|
123
123
|
return { kind: status };
|
|
124
|
-
const descriptor = runtime.topology.selectObjectPlacement(stableType, candidate => candidate.nodeRoutingId === localNodeRid
|
|
125
|
-
|
|
124
|
+
const descriptor = runtime.topology.selectObjectPlacement(stableType, (candidate) => candidate.nodeRoutingId === localNodeRid ||
|
|
125
|
+
runtime.isPeerRouteReady(candidate.nodeRoutingId));
|
|
126
126
|
return descriptor === undefined
|
|
127
127
|
? { kind: 'unavailable' }
|
|
128
128
|
: {
|
|
@@ -171,7 +171,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
171
171
|
const descriptor = this.createDescriptor();
|
|
172
172
|
const runtime = new raw_service_mesh_runtime_1.RawServiceMeshRuntime({
|
|
173
173
|
descriptor,
|
|
174
|
-
resolveAdvertisedEndpoint: boundEndpoint => this.resolveAdvertisedEndpoint(boundEndpoint),
|
|
174
|
+
resolveAdvertisedEndpoint: (boundEndpoint) => this.resolveAdvertisedEndpoint(boundEndpoint),
|
|
175
175
|
bindingPort: this.bindingPort,
|
|
176
176
|
applicationJobQueue: this.requireApplicationJobQueue(),
|
|
177
177
|
peerAdmissionSealed: this.peerAdmissionSealed,
|
|
@@ -185,17 +185,16 @@ class ZLinkNodeRawMeshBackend {
|
|
|
185
185
|
}),
|
|
186
186
|
onPeerNotRequired: (nodeRoutingId, endpoint) => {
|
|
187
187
|
for (const [intent, peer] of this.peerIntents) {
|
|
188
|
-
if ((peer.nodeRoutingId === undefined
|
|
189
|
-
|
|
190
|
-
&& peer.endpoint === endpoint) {
|
|
188
|
+
if ((peer.nodeRoutingId === undefined || peer.nodeRoutingId === nodeRoutingId) &&
|
|
189
|
+
peer.endpoint === endpoint) {
|
|
191
190
|
this.peerIntents.delete(intent);
|
|
192
191
|
}
|
|
193
192
|
}
|
|
194
193
|
},
|
|
195
194
|
onPeerDisconnected: (nodeRoutingId, endpoint) => {
|
|
196
195
|
for (const [intentId, peer] of this.peerIntents) {
|
|
197
|
-
if (peer.endpoint === endpoint
|
|
198
|
-
|
|
196
|
+
if (peer.endpoint === endpoint &&
|
|
197
|
+
(peer.nodeRoutingId === undefined || peer.nodeRoutingId === nodeRoutingId)) {
|
|
199
198
|
this.peerIntents.delete(intentId);
|
|
200
199
|
}
|
|
201
200
|
}
|
|
@@ -278,23 +277,22 @@ class ZLinkNodeRawMeshBackend {
|
|
|
278
277
|
}
|
|
279
278
|
async connectPeer(options) {
|
|
280
279
|
const runtime = this.requireRuntime();
|
|
281
|
-
const nodeRoutingId = options.expectedRid === undefined
|
|
282
|
-
? undefined
|
|
283
|
-
: String(options.expectedRid);
|
|
280
|
+
const nodeRoutingId = options.expectedRid === undefined ? undefined : String(options.expectedRid);
|
|
284
281
|
if (nodeRoutingId === undefined) {
|
|
285
282
|
runtime.connectPeerEndpoint(options.endpoint);
|
|
286
283
|
}
|
|
287
284
|
else {
|
|
288
|
-
runtime.connectPeerByRoutingId(options.endpoint, nodeRoutingId, options.expectedSecurityIdentity
|
|
289
|
-
?? runtime.topology.localDescriptor().securityIdentity, options.expectedLifecycleGeneration);
|
|
285
|
+
runtime.connectPeerByRoutingId(options.endpoint, nodeRoutingId, options.expectedSecurityIdentity ?? runtime.topology.localDescriptor().securityIdentity, options.expectedLifecycleGeneration);
|
|
290
286
|
}
|
|
291
287
|
const intent = this.nextPeerIntent++;
|
|
292
288
|
this.peerIntents.set(intent, {
|
|
293
289
|
endpoint: options.endpoint,
|
|
294
|
-
...(nodeRoutingId === undefined
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
290
|
+
...(nodeRoutingId === undefined
|
|
291
|
+
? {}
|
|
292
|
+
: {
|
|
293
|
+
nodeRoutingId,
|
|
294
|
+
lifecycleGeneration: options.expectedLifecycleGeneration
|
|
295
|
+
})
|
|
298
296
|
});
|
|
299
297
|
if (nodeRoutingId !== undefined)
|
|
300
298
|
await runtime.announcePeer(nodeRoutingId);
|
|
@@ -318,18 +316,16 @@ class ZLinkNodeRawMeshBackend {
|
|
|
318
316
|
disconnectPeer(peerRid, lifecycleGeneration) {
|
|
319
317
|
const nodeRoutingId = String(peerRid);
|
|
320
318
|
const admitted = this.runtime?.topology.peer(nodeRoutingId);
|
|
321
|
-
if (admitted !== undefined
|
|
322
|
-
&& admitted.descriptor.lifecycleGeneration !== lifecycleGeneration) {
|
|
319
|
+
if (admitted !== undefined && admitted.descriptor.lifecycleGeneration !== lifecycleGeneration) {
|
|
323
320
|
return;
|
|
324
321
|
}
|
|
325
322
|
const admittedEndpoint = admitted?.descriptor.advertisedEndpoint;
|
|
326
|
-
const found = [...this.peerIntents.entries()]
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
&& intent.endpoint === admittedEndpoint));
|
|
323
|
+
const found = [...this.peerIntents.entries()].find(([, intent]) => (intent.nodeRoutingId === nodeRoutingId &&
|
|
324
|
+
(intent.lifecycleGeneration === undefined ||
|
|
325
|
+
intent.lifecycleGeneration === lifecycleGeneration)) ||
|
|
326
|
+
(intent.nodeRoutingId === undefined &&
|
|
327
|
+
admittedEndpoint !== undefined &&
|
|
328
|
+
intent.endpoint === admittedEndpoint));
|
|
333
329
|
if (found === undefined) {
|
|
334
330
|
if (admitted !== undefined) {
|
|
335
331
|
this.runtime?.disconnectPeer(admitted.descriptor.advertisedEndpoint, nodeRoutingId, lifecycleGeneration);
|
|
@@ -340,7 +336,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
340
336
|
}
|
|
341
337
|
replaceDiscoveredNotRequiredPeers(peers) {
|
|
342
338
|
const local = this.requireRuntime().topology.localDescriptor();
|
|
343
|
-
this.requireRuntime().replaceDiscoveredNotRequired(peers.map(peer => ({
|
|
339
|
+
this.requireRuntime().replaceDiscoveredNotRequired(peers.map((peer) => ({
|
|
344
340
|
...local,
|
|
345
341
|
nodeRoutingId: peer.nodeRoutingId,
|
|
346
342
|
lifecycleGeneration: peer.lifecycleGeneration,
|
|
@@ -357,23 +353,31 @@ class ZLinkNodeRawMeshBackend {
|
|
|
357
353
|
return this.requireRuntime().isPeerRouteReady(String(targetRid), lifecycleGeneration);
|
|
358
354
|
}
|
|
359
355
|
async sendToNode(targetRid, parts) {
|
|
360
|
-
return await this.requireRuntime().sendToNode(String(targetRid), encodeMultipartApplicationFrame(parts))
|
|
356
|
+
return (await this.requireRuntime().sendToNode(String(targetRid), encodeMultipartApplicationFrame(parts)))
|
|
357
|
+
? zlink_1.SubmitResult.Ok
|
|
358
|
+
: zlink_1.SubmitResult.NotConnected;
|
|
361
359
|
}
|
|
362
360
|
async sendInfrastructureControl(targetRid, record) {
|
|
363
|
-
return await this.requireRuntime().sendService(String(targetRid), (Array.isArray(record) ? record : [record]).map(value => Buffer.from(value)))
|
|
361
|
+
return (await this.requireRuntime().sendService(String(targetRid), (Array.isArray(record) ? record : [record]).map((value) => Buffer.from(value))))
|
|
362
|
+
? zlink_1.SubmitResult.Ok
|
|
363
|
+
: zlink_1.SubmitResult.NotConnected;
|
|
364
364
|
}
|
|
365
365
|
async sendInfrastructureControlFrames(targetRid, frames) {
|
|
366
|
-
return await this.requireRuntime().sendService(String(targetRid), frames.map(frame => Buffer.from(frame)))
|
|
366
|
+
return (await this.requireRuntime().sendService(String(targetRid), frames.map((frame) => Buffer.from(frame))))
|
|
367
|
+
? zlink_1.SubmitResult.Ok
|
|
368
|
+
: zlink_1.SubmitResult.NotConnected;
|
|
367
369
|
}
|
|
368
370
|
async requestInfrastructureControlFrames(targetRid, frames, options) {
|
|
369
|
-
return await this.requireRuntime().requestService(String(targetRid), frames.map(frame => Buffer.from(frame)), options?.timeoutMs ?? 30_000);
|
|
371
|
+
return await this.requireRuntime().requestService(String(targetRid), frames.map((frame) => Buffer.from(frame)), options?.timeoutMs ?? 30_000);
|
|
370
372
|
}
|
|
371
373
|
requestToNode(targetRid, parts, options) {
|
|
372
374
|
const pending = this.requireRuntime().requestToNode(String(targetRid), encodeMultipartApplicationFrame(parts), options?.timeoutMs ?? 30_000);
|
|
373
375
|
return this.observeCompletion(pending.id, service_runtime_contracts_1.OperationKind.NodeRequest, pending.promise);
|
|
374
376
|
}
|
|
375
377
|
async sendToChannel(channelName, parts) {
|
|
376
|
-
return await this.requireRuntime().sendToChannel(channelName, encodeMultipartApplicationFrame(parts))
|
|
378
|
+
return (await this.requireRuntime().sendToChannel(channelName, encodeMultipartApplicationFrame(parts)))
|
|
379
|
+
? zlink_1.SubmitResult.Ok
|
|
380
|
+
: zlink_1.SubmitResult.NotConnected;
|
|
377
381
|
}
|
|
378
382
|
requestToChannel(channelName, parts, options) {
|
|
379
383
|
const pending = this.requireRuntime().requestToChannel(channelName, encodeMultipartApplicationFrame(parts), options?.timeoutMs ?? 30_000);
|
|
@@ -395,11 +399,11 @@ class ZLinkNodeRawMeshBackend {
|
|
|
395
399
|
channelCount: descriptor.channels.length,
|
|
396
400
|
configuredPeerCount: this.peerIntents.size,
|
|
397
401
|
admittedPeerCount: peers.length,
|
|
398
|
-
drainingPeerCount: peers.filter(peer => peer.descriptor.state === 'draining').length,
|
|
402
|
+
drainingPeerCount: peers.filter((peer) => peer.descriptor.state === 'draining').length,
|
|
399
403
|
pendingApplicationMessages: BigInt(this.runtime?.mailbox.pendingMessages('application') ?? 0),
|
|
400
404
|
pendingInfrastructureMessages: BigInt((this.runtime?.mailbox.pendingMessages('infrastructure') ?? 0) + this.completionCount),
|
|
401
|
-
pendingBytes: BigInt((this.runtime?.mailbox.pendingBytes('application') ?? 0)
|
|
402
|
-
|
|
405
|
+
pendingBytes: BigInt((this.runtime?.mailbox.pendingBytes('application') ?? 0) +
|
|
406
|
+
(this.runtime?.mailbox.pendingBytes('infrastructure') ?? 0)),
|
|
403
407
|
lastError: 0,
|
|
404
408
|
lastChangedMs: BigInt(Math.trunc(performance.now()))
|
|
405
409
|
};
|
|
@@ -409,10 +413,9 @@ class ZLinkNodeRawMeshBackend {
|
|
|
409
413
|
id,
|
|
410
414
|
...intent
|
|
411
415
|
}));
|
|
412
|
-
const findIntent = (nodeRoutingId, endpoint) => intents.find(intent => intent.nodeRoutingId === nodeRoutingId
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
const admitted = (this.runtime?.topology.peers() ?? []).map(peer => ({
|
|
416
|
+
const findIntent = (nodeRoutingId, endpoint) => intents.find((intent) => intent.nodeRoutingId === nodeRoutingId ||
|
|
417
|
+
(intent.nodeRoutingId === undefined && intent.endpoint === endpoint));
|
|
418
|
+
const admitted = (this.runtime?.topology.peers() ?? []).map((peer) => ({
|
|
416
419
|
connectionIntentId: findIntent(peer.descriptor.nodeRoutingId, peer.descriptor.advertisedEndpoint)?.id ?? 0n,
|
|
417
420
|
source: 1,
|
|
418
421
|
state: this.runtime?.isPeerRouteReady(peer.descriptor.nodeRoutingId) === false
|
|
@@ -426,7 +429,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
426
429
|
lastError: 0,
|
|
427
430
|
lastChangedMs: BigInt(Math.trunc(performance.now()))
|
|
428
431
|
}));
|
|
429
|
-
const notRequired = (this.runtime?.topology.notRequiredPeers() ?? []).map(descriptor => ({
|
|
432
|
+
const notRequired = (this.runtime?.topology.notRequiredPeers() ?? []).map((descriptor) => ({
|
|
430
433
|
connectionIntentId: findIntent(descriptor.nodeRoutingId, descriptor.advertisedEndpoint)?.id ?? 0n,
|
|
431
434
|
source: 1,
|
|
432
435
|
state: 6,
|
|
@@ -439,13 +442,12 @@ class ZLinkNodeRawMeshBackend {
|
|
|
439
442
|
lastChangedMs: BigInt(Math.trunc(performance.now()))
|
|
440
443
|
}));
|
|
441
444
|
const projected = new Set([
|
|
442
|
-
...admitted.map(peer => peer.connectionIntentId),
|
|
443
|
-
...notRequired.map(peer => peer.connectionIntentId)
|
|
445
|
+
...admitted.map((peer) => peer.connectionIntentId),
|
|
446
|
+
...notRequired.map((peer) => peer.connectionIntentId)
|
|
444
447
|
]);
|
|
445
448
|
const disconnected = intents
|
|
446
|
-
.filter(intent => intent.nodeRoutingId !== undefined
|
|
447
|
-
|
|
448
|
-
.map(intent => {
|
|
449
|
+
.filter((intent) => intent.nodeRoutingId !== undefined && !projected.has(intent.id))
|
|
450
|
+
.map((intent) => {
|
|
449
451
|
const descriptor = this.runtime?.topology.knownDescriptor(intent.nodeRoutingId);
|
|
450
452
|
return {
|
|
451
453
|
connectionIntentId: intent.id,
|
|
@@ -462,8 +464,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
462
464
|
lastChangedMs: BigInt(Math.trunc(performance.now()))
|
|
463
465
|
};
|
|
464
466
|
});
|
|
465
|
-
return [...admitted, ...notRequired, ...disconnected]
|
|
466
|
-
.sort((left, right) => String(left.routingId).localeCompare(String(right.routingId)));
|
|
467
|
+
return [...admitted, ...notRequired, ...disconnected].sort((left, right) => String(left.routingId).localeCompare(String(right.routingId)));
|
|
467
468
|
}
|
|
468
469
|
peerChannels(peerRid, lifecycleGeneration) {
|
|
469
470
|
const descriptor = this.runtime?.topology.knownDescriptor(String(peerRid));
|
|
@@ -471,8 +472,8 @@ class ZLinkNodeRawMeshBackend {
|
|
|
471
472
|
return { names: [], weights: [] };
|
|
472
473
|
}
|
|
473
474
|
return {
|
|
474
|
-
names: descriptor.channels.map(channel => channel.name),
|
|
475
|
-
weights: descriptor.channels.map(channel => channel.weight)
|
|
475
|
+
names: descriptor.channels.map((channel) => channel.name),
|
|
476
|
+
weights: descriptor.channels.map((channel) => channel.weight)
|
|
476
477
|
};
|
|
477
478
|
}
|
|
478
479
|
createPublisher() {
|
|
@@ -513,11 +514,10 @@ class ZLinkNodeRawMeshBackend {
|
|
|
513
514
|
this.drainMailbox('application', target);
|
|
514
515
|
}
|
|
515
516
|
const runtime = this.runtime;
|
|
516
|
-
const infrastructureResidue = (domains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
&& (runtime?.mailbox.pendingMessages('application') ?? 0) > 0;
|
|
517
|
+
const infrastructureResidue = (domains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0 &&
|
|
518
|
+
(this.completionCount > 0 || (runtime?.mailbox.pendingMessages('infrastructure') ?? 0) > 0);
|
|
519
|
+
const applicationResidue = (domains & service_runtime_contracts_1.ReadyDomain.Application) !== 0 &&
|
|
520
|
+
(runtime?.mailbox.pendingMessages('application') ?? 0) > 0;
|
|
521
521
|
return {
|
|
522
522
|
ok: true,
|
|
523
523
|
// Residue is scoped to the requested lane. The pump drains lanes in
|
|
@@ -676,13 +676,13 @@ class ZLinkNodeRawMeshBackend {
|
|
|
676
676
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorRequest, this.requireStateful().requestToActor(actor, this.peerGeneration(String(actor.nodeRid)), actor.generation, encodeMultipart(parts), options?.timeoutMs ?? 30_000));
|
|
677
677
|
}
|
|
678
678
|
async actorSendToActor(source, target, parts) {
|
|
679
|
-
return await this.requireStateful().sendToActor(target, this.peerGeneration(String(target.nodeRid)), target.generation, encodeMultipart(parts), source);
|
|
679
|
+
return (await this.requireStateful().sendToActor(target, this.peerGeneration(String(target.nodeRid)), target.generation, encodeMultipart(parts), source));
|
|
680
680
|
}
|
|
681
681
|
actorRequestToActor(source, target, parts, options) {
|
|
682
682
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.ActorRequest, this.requireStateful().requestToActor(target, this.peerGeneration(String(target.nodeRid)), target.generation, encodeMultipart(parts), options?.timeoutMs ?? 30_000, source));
|
|
683
683
|
}
|
|
684
684
|
async sendActorBoundSession(actor, expectedBindingGeneration, parts, _flags, actorFence) {
|
|
685
|
-
return await this.requireStateful().sendBoundSession(actor, expectedBindingGeneration, encodeMultipart(parts), actorFence);
|
|
685
|
+
return (await this.requireStateful().sendBoundSession(actor, expectedBindingGeneration, encodeMultipart(parts), actorFence));
|
|
686
686
|
}
|
|
687
687
|
closeActorBoundSession(actor, expectedBindingGeneration, timeoutMs = 30_000) {
|
|
688
688
|
const binding = this.requireStateful().registry.binding(actor);
|
|
@@ -698,7 +698,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
698
698
|
return new RawStreamSessionService(this.requireStateful(), stream, (kind, pending) => this.observeStateful(kind, pending));
|
|
699
699
|
}
|
|
700
700
|
async sendFromSpot(source, target, parts) {
|
|
701
|
-
return await this.requireStateful().sendToSpot(source.ref.spotId, target, encodeMultipart(parts));
|
|
701
|
+
return (await this.requireStateful().sendToSpot(source.ref.spotId, target, encodeMultipart(parts)));
|
|
702
702
|
}
|
|
703
703
|
requestFromSpot(source, target, parts, timeoutMs) {
|
|
704
704
|
return this.observeStateful(service_runtime_contracts_1.OperationKind.SpotRequest, this.requireStateful().requestToSpot(source.ref.spotId, target, encodeMultipart(parts), timeoutMs));
|
|
@@ -734,10 +734,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
734
734
|
securityIdentity: 'default',
|
|
735
735
|
applicationVersion: 0n,
|
|
736
736
|
...(this.maintenanceWave === undefined ? {} : { maintenanceWave: this.maintenanceWave }),
|
|
737
|
-
protocolCapabilities: [
|
|
738
|
-
service_wire_constants_generated_1.SERVICE_WIRE_REQUIRED_CAPABILITY,
|
|
739
|
-
...this.objectCapabilities
|
|
740
|
-
].sort(),
|
|
737
|
+
protocolCapabilities: [service_wire_constants_generated_1.SERVICE_WIRE_REQUIRED_CAPABILITY, ...this.objectCapabilities].sort(),
|
|
741
738
|
objectRole: this.objectRole,
|
|
742
739
|
placementWeight: this.placementWeight,
|
|
743
740
|
activeCapacityLimit: this.activeCapacityLimit,
|
|
@@ -800,12 +797,12 @@ class ZLinkNodeRawMeshBackend {
|
|
|
800
797
|
}
|
|
801
798
|
observeCompletion(low, operationKind, promise) {
|
|
802
799
|
const id = { high: 1n, low };
|
|
803
|
-
void promise.then(result => this.enqueueCompletion(id, operationKind, result), error => this.enqueueCompletion(id, operationKind, genericOperationFailure(error)));
|
|
800
|
+
void promise.then((result) => this.enqueueCompletion(id, operationKind, result), (error) => this.enqueueCompletion(id, operationKind, genericOperationFailure(error)));
|
|
804
801
|
return id;
|
|
805
802
|
}
|
|
806
803
|
observeStateful(operationKind, pending) {
|
|
807
804
|
const id = { high: 2n, low: pending.id };
|
|
808
|
-
void pending.promise.then(result => this.enqueueCompletion(id, operationKind, result), error => this.enqueueCompletion(id, operationKind, statefulOperationFailure(error)));
|
|
805
|
+
void pending.promise.then((result) => this.enqueueCompletion(id, operationKind, result), (error) => this.enqueueCompletion(id, operationKind, statefulOperationFailure(error)));
|
|
809
806
|
return id;
|
|
810
807
|
}
|
|
811
808
|
enqueueImmediateFailure(operationKind, terminalResult) {
|
|
@@ -845,8 +842,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
845
842
|
if (this.completionCount === 0) {
|
|
846
843
|
this.clearCompletions();
|
|
847
844
|
}
|
|
848
|
-
else if (this.completionHead >= 1024
|
|
849
|
-
&& this.completionHead * 2 >= this.completions.length) {
|
|
845
|
+
else if (this.completionHead >= 1024 && this.completionHead * 2 >= this.completions.length) {
|
|
850
846
|
this.completions.splice(0, this.completionHead);
|
|
851
847
|
this.completionHead = 0;
|
|
852
848
|
}
|
|
@@ -982,10 +978,10 @@ function requireDirectSpotRouteFence(route, targetNodeRid, targetSpotId, targetS
|
|
|
982
978
|
if (route === undefined && entryRoute !== undefined) {
|
|
983
979
|
return entryRoute;
|
|
984
980
|
}
|
|
985
|
-
if (route === undefined
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
981
|
+
if (route === undefined ||
|
|
982
|
+
route.targetNodeRid !== targetNodeRid ||
|
|
983
|
+
route.spot.spotId !== targetSpotId ||
|
|
984
|
+
route.spot.generation !== targetSpotGeneration) {
|
|
989
985
|
throw new TypeError('Direct Spot submission requires the exact resolved authority fence.');
|
|
990
986
|
}
|
|
991
987
|
return route;
|
|
@@ -1026,7 +1022,7 @@ class RawStreamSessionService {
|
|
|
1026
1022
|
return {
|
|
1027
1023
|
state: this.state,
|
|
1028
1024
|
lifecycleGeneration: 1n,
|
|
1029
|
-
sessionCount: BigInt(new Set(bindings.map(value => value.sessionRid)).size),
|
|
1025
|
+
sessionCount: BigInt(new Set(bindings.map((value) => value.sessionRid)).size),
|
|
1030
1026
|
bindingCount: BigInt(bindings.length),
|
|
1031
1027
|
pendingMessageCount: 0n,
|
|
1032
1028
|
pendingByteCount: 0n,
|
|
@@ -1052,7 +1048,7 @@ class RawStreamSessionService {
|
|
|
1052
1048
|
}
|
|
1053
1049
|
async sendToActor(sessionRid, actor, parts) {
|
|
1054
1050
|
this.requireStarted();
|
|
1055
|
-
return await this.stateful.sendSessionToActor(String(sessionRid), actor, encodeMultipart(parts));
|
|
1051
|
+
return (await this.stateful.sendSessionToActor(String(sessionRid), actor, encodeMultipart(parts)));
|
|
1056
1052
|
}
|
|
1057
1053
|
async deliver(sessionRid, payload) {
|
|
1058
1054
|
const target = this.sessionTargets.get(sessionRid);
|
|
@@ -1080,10 +1076,14 @@ class RawStreamSessionService {
|
|
|
1080
1076
|
// Let the socket monitor drive the existing STREAM close/unbind
|
|
1081
1077
|
// lifecycle instead of maintaining a second session-close state.
|
|
1082
1078
|
(0, node_socket_backend_adapter_1.disconnectStreamPeer)(this.stream, target);
|
|
1083
|
-
throw new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, {
|
|
1079
|
+
throw new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, {
|
|
1080
|
+
cause: error
|
|
1081
|
+
});
|
|
1084
1082
|
case zlink_1.SubmitResult.Backpressured:
|
|
1085
1083
|
case zlink_1.SubmitResult.NotAdmitted:
|
|
1086
|
-
throw new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, {
|
|
1084
|
+
throw new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, {
|
|
1085
|
+
cause: error
|
|
1086
|
+
});
|
|
1087
1087
|
default:
|
|
1088
1088
|
throw error;
|
|
1089
1089
|
}
|
|
@@ -1134,7 +1134,7 @@ class RawReceiveBatch {
|
|
|
1134
1134
|
constructor(capacity, partCapacity) {
|
|
1135
1135
|
this.capacity = capacity;
|
|
1136
1136
|
this.partCapacity = partCapacity;
|
|
1137
|
-
if ([capacity, partCapacity].some(value => !Number.isInteger(value) || value < 1)) {
|
|
1137
|
+
if ([capacity, partCapacity].some((value) => !Number.isInteger(value) || value < 1)) {
|
|
1138
1138
|
throw new RangeError('Receive batch capacities must be positive.');
|
|
1139
1139
|
}
|
|
1140
1140
|
this.receiveCapacity = capacity;
|
|
@@ -1143,7 +1143,9 @@ class RawReceiveBatch {
|
|
|
1143
1143
|
return this.receiveCapacity;
|
|
1144
1144
|
}
|
|
1145
1145
|
reset(messageCapacity = this.capacity) {
|
|
1146
|
-
if (!Number.isInteger(messageCapacity) ||
|
|
1146
|
+
if (!Number.isInteger(messageCapacity) ||
|
|
1147
|
+
messageCapacity < 1 ||
|
|
1148
|
+
messageCapacity > this.capacity) {
|
|
1147
1149
|
throw new RangeError('Receive limit must be within the batch capacity.');
|
|
1148
1150
|
}
|
|
1149
1151
|
this.receiveCapacity = messageCapacity;
|
|
@@ -1191,8 +1193,7 @@ class MailboxClaim {
|
|
|
1191
1193
|
throw error;
|
|
1192
1194
|
}
|
|
1193
1195
|
const nextParts = decoded.parts.length;
|
|
1194
|
-
if (records.length >= capacity.messageCapacity
|
|
1195
|
-
|| parts + nextParts > capacity.partCapacity) {
|
|
1196
|
+
if (records.length >= capacity.messageCapacity || parts + nextParts > capacity.partCapacity) {
|
|
1196
1197
|
for (const part of decoded.parts)
|
|
1197
1198
|
part.close();
|
|
1198
1199
|
this.remaining = this.claim.records.slice(index);
|
|
@@ -1224,7 +1225,8 @@ class CompletionClaim {
|
|
|
1224
1225
|
const payload = this.completion.result.payload;
|
|
1225
1226
|
return {
|
|
1226
1227
|
ok: true,
|
|
1227
|
-
records: [
|
|
1228
|
+
records: [
|
|
1229
|
+
{
|
|
1228
1230
|
kind: service_runtime_contracts_1.ReceiveKind.Completion,
|
|
1229
1231
|
domain: service_runtime_contracts_1.ReadyDomain.Infrastructure,
|
|
1230
1232
|
sourceNodeRid: null,
|
|
@@ -1236,9 +1238,7 @@ class CompletionClaim {
|
|
|
1236
1238
|
channelName: null,
|
|
1237
1239
|
topic: null,
|
|
1238
1240
|
applicationMetadata: null,
|
|
1239
|
-
kindData: 'kindData' in this.completion.result
|
|
1240
|
-
? this.completion.result.kindData ?? null
|
|
1241
|
-
: null,
|
|
1241
|
+
kindData: 'kindData' in this.completion.result ? (this.completion.result.kindData ?? null) : null,
|
|
1242
1242
|
terminalResult: this.completion.result.terminalResult,
|
|
1243
1243
|
failureErrno: this.completion.result.failureCode,
|
|
1244
1244
|
parts: payload === undefined
|
|
@@ -1248,7 +1248,8 @@ class CompletionClaim {
|
|
|
1248
1248
|
: [zlink_1.Message.from(payload.payload)],
|
|
1249
1249
|
reply: () => zlink_1.SubmitResult.InvalidState,
|
|
1250
1250
|
replyActorJoin: () => zlink_1.SubmitResult.NotSupported
|
|
1251
|
-
}
|
|
1251
|
+
}
|
|
1252
|
+
]
|
|
1252
1253
|
};
|
|
1253
1254
|
}
|
|
1254
1255
|
release() { }
|
|
@@ -1271,8 +1272,7 @@ function decodeMultipartRecord(runtime, record) {
|
|
|
1271
1272
|
// multi-frame infrastructure control (Prepare + sideband) from being
|
|
1272
1273
|
// misread as a 2-frame application envelope and dropped as invalid_frame.
|
|
1273
1274
|
if (record.parts.length === 1 || record.domain === 'infrastructure') {
|
|
1274
|
-
const request = record.requestSequence !== undefined
|
|
1275
|
-
&& record.sourceRoutingId !== undefined;
|
|
1275
|
+
const request = record.requestSequence !== undefined && record.sourceRoutingId !== undefined;
|
|
1276
1276
|
return {
|
|
1277
1277
|
kind: request ? service_runtime_contracts_1.ReceiveKind.NodeRequest : service_runtime_contracts_1.ReceiveKind.NodeSend,
|
|
1278
1278
|
domain: readyDomain(record.domain),
|
|
@@ -1291,7 +1291,7 @@ function decodeMultipartRecord(runtime, record) {
|
|
|
1291
1291
|
terminalResult: 0,
|
|
1292
1292
|
failureErrno: 0,
|
|
1293
1293
|
...receiveIngressLifecycle(record),
|
|
1294
|
-
parts: record.parts.map(part => zlink_1.Message.from(part)),
|
|
1294
|
+
parts: record.parts.map((part) => zlink_1.Message.from(part)),
|
|
1295
1295
|
reply(parts) {
|
|
1296
1296
|
if (!request)
|
|
1297
1297
|
return zlink_1.SubmitResult.InvalidState;
|
|
@@ -1303,7 +1303,7 @@ function decodeMultipartRecord(runtime, record) {
|
|
|
1303
1303
|
...(record.sourceRoute === undefined ? {} : { sourceRoute: record.sourceRoute }),
|
|
1304
1304
|
requestSequence: record.requestSequence,
|
|
1305
1305
|
...(record.reply === undefined ? {} : { reply: record.reply })
|
|
1306
|
-
}, values.map(value => Buffer.from(messageBytesView(value))));
|
|
1306
|
+
}, values.map((value) => Buffer.from(messageBytesView(value))));
|
|
1307
1307
|
return zlink_1.SubmitResult.Ok;
|
|
1308
1308
|
},
|
|
1309
1309
|
replyActorJoin: () => zlink_1.SubmitResult.NotSupported
|
|
@@ -1313,7 +1313,9 @@ function decodeMultipartRecord(runtime, record) {
|
|
|
1313
1313
|
const command = header[3];
|
|
1314
1314
|
const payloadFrame = record.parts[1];
|
|
1315
1315
|
const application = decodeApplicationEnvelope(payloadFrame);
|
|
1316
|
-
const channelName = record.owner.startsWith('channel:')
|
|
1316
|
+
const channelName = record.owner.startsWith('channel:')
|
|
1317
|
+
? record.owner.slice('channel:'.length)
|
|
1318
|
+
: null;
|
|
1317
1319
|
const operationId = record.correlation === undefined
|
|
1318
1320
|
? { high: 0n, low: 0n }
|
|
1319
1321
|
: { high: 1n, low: record.correlation };
|
|
@@ -1360,13 +1362,15 @@ function decodeMultipartRecord(runtime, record) {
|
|
|
1360
1362
|
}
|
|
1361
1363
|
function decodeStatefulRecord(record, stateful) {
|
|
1362
1364
|
const payloadFrame = record.parts.length < 2 ? undefined : record.parts[1];
|
|
1363
|
-
const canonicalActorJoin = stateful.kindData?.kind === 'actorControl'
|
|
1364
|
-
|
|
1365
|
-
const canonicalActorJoinPayload = stateful.operationKind === service_runtime_contracts_1.OperationKind.ActorJoin
|
|
1366
|
-
|
|
1365
|
+
const canonicalActorJoin = stateful.kindData?.kind === 'actorControl' &&
|
|
1366
|
+
stateful.kindData.canonicalActorJoin !== undefined;
|
|
1367
|
+
const canonicalActorJoinPayload = stateful.operationKind === service_runtime_contracts_1.OperationKind.ActorJoin &&
|
|
1368
|
+
stateful.canonicalApplicationPayload !== undefined;
|
|
1367
1369
|
const application = canonicalActorJoinPayload
|
|
1368
1370
|
? stateful.canonicalApplicationPayload
|
|
1369
|
-
:
|
|
1371
|
+
: payloadFrame === undefined
|
|
1372
|
+
? undefined
|
|
1373
|
+
: decodeApplicationEnvelope(payloadFrame);
|
|
1370
1374
|
const operationId = record.correlation === undefined
|
|
1371
1375
|
? { high: 0n, low: 0n }
|
|
1372
1376
|
: { high: 2n, low: record.correlation };
|
|
@@ -1409,7 +1413,9 @@ function decodeStatefulRecord(record, stateful) {
|
|
|
1409
1413
|
reply(parts) {
|
|
1410
1414
|
if (stateful.reply === undefined)
|
|
1411
1415
|
return zlink_1.SubmitResult.InvalidState;
|
|
1412
|
-
return stateful.reply(zlink_1.RequestResult.Ok, 0, encodeMultipart(parts))
|
|
1416
|
+
return stateful.reply(zlink_1.RequestResult.Ok, 0, encodeMultipart(parts))
|
|
1417
|
+
? zlink_1.SubmitResult.Ok
|
|
1418
|
+
: zlink_1.SubmitResult.InvalidState;
|
|
1413
1419
|
},
|
|
1414
1420
|
replyActorJoin(joinResult, parts, _flags, _replyContentType) {
|
|
1415
1421
|
if (stateful.reply === undefined || stateful.targetSpot === undefined) {
|
|
@@ -1425,9 +1431,7 @@ function decodeStatefulRecord(record, stateful) {
|
|
|
1425
1431
|
if (canonicalActorJoin && replyParts.length > 1) {
|
|
1426
1432
|
return zlink_1.SubmitResult.InvalidState;
|
|
1427
1433
|
}
|
|
1428
|
-
const replyPayload = replyParts.length === 0
|
|
1429
|
-
? undefined
|
|
1430
|
-
: encodeMultipart(replyParts);
|
|
1434
|
+
const replyPayload = replyParts.length === 0 ? undefined : encodeMultipart(replyParts);
|
|
1431
1435
|
const accepted = stateful.reply(zlink_1.RequestResult.Ok, 0, replyPayload, {
|
|
1432
1436
|
kind: 'actorJoin',
|
|
1433
1437
|
joinResult: joinResult === 0 ? 0 : 1,
|
|
@@ -1472,9 +1476,7 @@ function readyOwner(owner, nodeRid, stateful, domain) {
|
|
|
1472
1476
|
}
|
|
1473
1477
|
if (owner.startsWith('actor:')) {
|
|
1474
1478
|
const separator = owner.indexOf('\0', 'actor:'.length);
|
|
1475
|
-
const actorId = separator < 0
|
|
1476
|
-
? owner.slice('actor:'.length)
|
|
1477
|
-
: owner.slice('actor:'.length, separator);
|
|
1479
|
+
const actorId = separator < 0 ? owner.slice('actor:'.length) : owner.slice('actor:'.length, separator);
|
|
1478
1480
|
const generation = separator < 0 ? 0n : BigInt(owner.slice(separator + 1));
|
|
1479
1481
|
const current = stateful?.actor(actorId);
|
|
1480
1482
|
return {
|
|
@@ -1498,9 +1500,7 @@ function readyOwner(owner, nodeRid, stateful, domain) {
|
|
|
1498
1500
|
};
|
|
1499
1501
|
}
|
|
1500
1502
|
function readyDomain(domain) {
|
|
1501
|
-
return domain === 'infrastructure'
|
|
1502
|
-
? service_runtime_contracts_1.ReadyDomain.Infrastructure
|
|
1503
|
-
: service_runtime_contracts_1.ReadyDomain.Application;
|
|
1503
|
+
return domain === 'infrastructure' ? service_runtime_contracts_1.ReadyDomain.Infrastructure : service_runtime_contracts_1.ReadyDomain.Application;
|
|
1504
1504
|
}
|
|
1505
1505
|
/**
|
|
1506
1506
|
* Classifies a generic node/channel request rejection into a completion
|
|
@@ -1602,9 +1602,9 @@ function decodeApplicationEnvelope(frame) {
|
|
|
1602
1602
|
offset += contentLength;
|
|
1603
1603
|
const payloadLength = bytes.readUInt32BE(offset);
|
|
1604
1604
|
offset += 4;
|
|
1605
|
-
if (packetName !== MULTIPART_PACKET_NAME
|
|
1606
|
-
|
|
1607
|
-
|
|
1605
|
+
if (packetName !== MULTIPART_PACKET_NAME ||
|
|
1606
|
+
contentType !== MULTIPART_CONTENT_TYPE ||
|
|
1607
|
+
payloadLength !== bytes.length - offset) {
|
|
1608
1608
|
throw new service_wire_m6a_codec_1.ServiceWireProtocolError('Unexpected M6A application payload.');
|
|
1609
1609
|
}
|
|
1610
1610
|
return { packetName, contentType, payload: bytes.subarray(offset) };
|
|
@@ -1670,20 +1670,23 @@ function stateCode(state) {
|
|
|
1670
1670
|
}
|
|
1671
1671
|
function peerStateCode(state) {
|
|
1672
1672
|
switch (state) {
|
|
1673
|
-
case 'preparing':
|
|
1673
|
+
case 'preparing':
|
|
1674
|
+
return 2;
|
|
1674
1675
|
case 'serving':
|
|
1675
|
-
case 'retiring':
|
|
1676
|
-
|
|
1676
|
+
case 'retiring':
|
|
1677
|
+
return 3;
|
|
1678
|
+
case 'draining':
|
|
1679
|
+
return 4;
|
|
1677
1680
|
case 'stopped':
|
|
1678
|
-
case 'error':
|
|
1681
|
+
case 'error':
|
|
1682
|
+
return 5;
|
|
1679
1683
|
}
|
|
1680
1684
|
}
|
|
1681
1685
|
function createLifecycleGeneration() {
|
|
1682
1686
|
// Node's public Spot context exposes this lifecycle token as a number. Keep
|
|
1683
1687
|
// the opaque equality token within the exact range that surface can carry;
|
|
1684
1688
|
// lifecycle ordering is never inferred from its numeric value.
|
|
1685
|
-
const generation = (0, node_crypto_1.randomBytes)(8).readBigUInt64BE()
|
|
1686
|
-
& BigInt(Number.MAX_SAFE_INTEGER);
|
|
1689
|
+
const generation = (0, node_crypto_1.randomBytes)(8).readBigUInt64BE() & BigInt(Number.MAX_SAFE_INTEGER);
|
|
1687
1690
|
return generation === 0n ? 1n : generation;
|
|
1688
1691
|
}
|
|
1689
1692
|
function requirePositivePlacementValue(value, name) {
|
|
@@ -10,8 +10,7 @@ const eventLoopPollers = new WeakMap();
|
|
|
10
10
|
function wrapSocket(nativeInstance, pollCompletion) {
|
|
11
11
|
const socket = nativeInstance;
|
|
12
12
|
const hasRequest = typeof nativeInstance.request === 'function';
|
|
13
|
-
const hasRoutedPeer = hasRequest
|
|
14
|
-
&& typeof nativeInstance.reply === 'function';
|
|
13
|
+
const hasRoutedPeer = hasRequest && typeof nativeInstance.reply === 'function';
|
|
15
14
|
const hasStream = typeof nativeInstance.recvPacket === 'function';
|
|
16
15
|
const eventLoopPoller = pollCompletion === undefined
|
|
17
16
|
? undefined
|
|
@@ -40,12 +39,12 @@ function wrapSocket(nativeInstance, pollCompletion) {
|
|
|
40
39
|
nativeInstance.disconnect(endpoint);
|
|
41
40
|
},
|
|
42
41
|
setChannelName(channelName) {
|
|
43
|
-
const setChannelName = nativeInstance
|
|
42
|
+
const setChannelName = nativeInstance
|
|
43
|
+
.setChannelName;
|
|
44
44
|
setChannelName?.call(nativeInstance, channelName);
|
|
45
45
|
},
|
|
46
46
|
setReceiveFlowState(state) {
|
|
47
|
-
nativeInstance
|
|
48
|
-
.setReceiveFlowState(state);
|
|
47
|
+
nativeInstance.setReceiveFlowState(state);
|
|
49
48
|
},
|
|
50
49
|
setProbe(enabled) {
|
|
51
50
|
requireSocketOptions(socket).probe = enabled;
|
|
@@ -119,8 +118,7 @@ function wrapSocket(nativeInstance, pollCompletion) {
|
|
|
119
118
|
}
|
|
120
119
|
if (hasRoutedPeer) {
|
|
121
120
|
const [routingId, payload] = args;
|
|
122
|
-
return (0, node_backend_adapter_support_1.submitBindingAsyncSend)(nativeInstance
|
|
123
|
-
.send((0, node_backend_adapter_support_1.toNativeRoutingId)(routingId)), payload);
|
|
121
|
+
return (0, node_backend_adapter_support_1.submitBindingAsyncSend)(nativeInstance.send((0, node_backend_adapter_support_1.toNativeRoutingId)(routingId)), payload);
|
|
124
122
|
}
|
|
125
123
|
const [payload, flags] = args;
|
|
126
124
|
if (hasRequest) {
|
|
@@ -136,14 +134,12 @@ function wrapSocket(nativeInstance, pollCompletion) {
|
|
|
136
134
|
submit(routingId, payload, _timeoutMs) {
|
|
137
135
|
if (!hasStream)
|
|
138
136
|
throw new TypeError('Async stream send requires a STREAM socket.');
|
|
139
|
-
return (0, node_backend_adapter_support_1.submitBindingAsyncSend)(nativeInstance
|
|
140
|
-
.send((0, node_backend_adapter_support_1.toNativeRoutingId)(routingId)), payload);
|
|
137
|
+
return (0, node_backend_adapter_support_1.submitBindingAsyncSend)(nativeInstance.send((0, node_backend_adapter_support_1.toNativeRoutingId)(routingId)), payload);
|
|
141
138
|
},
|
|
142
139
|
request(...args) {
|
|
143
140
|
if (hasRoutedPeer) {
|
|
144
141
|
const [routingId, payload, timeoutMs] = args;
|
|
145
|
-
return (0, node_backend_adapter_support_1.submitBindingRequest)(nativeInstance
|
|
146
|
-
.request((0, node_backend_adapter_support_1.toNativeRoutingId)(routingId)), payload, timeoutMs);
|
|
142
|
+
return (0, node_backend_adapter_support_1.submitBindingRequest)(nativeInstance.request((0, node_backend_adapter_support_1.toNativeRoutingId)(routingId)), payload, timeoutMs);
|
|
147
143
|
}
|
|
148
144
|
if (hasRequest) {
|
|
149
145
|
const [payload, timeoutMs] = args;
|
|
@@ -244,6 +240,9 @@ function requireSocketOptions(socket) {
|
|
|
244
240
|
return socket.options;
|
|
245
241
|
}
|
|
246
242
|
function isEndpointCloseIgnorableError(error) {
|
|
247
|
-
return (0, node_backend_adapter_support_1.isContextTerminatedError)(error) ||
|
|
248
|
-
(error
|
|
243
|
+
return ((0, node_backend_adapter_support_1.isContextTerminatedError)(error) ||
|
|
244
|
+
(error instanceof Error &&
|
|
245
|
+
'code' in error &&
|
|
246
|
+
(error.code === 604 ||
|
|
247
|
+
error.code === node_backend_adapter_support_1.zlink.ConnectResult.NotFound)));
|
|
249
248
|
}
|
|
@@ -38,7 +38,7 @@ class ZLinkBufferMessage {
|
|
|
38
38
|
}
|
|
39
39
|
exports.ZLinkBufferMessage = ZLinkBufferMessage;
|
|
40
40
|
function isMessage(value) {
|
|
41
|
-
return typeof value === 'object'
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
return (typeof value === 'object' &&
|
|
42
|
+
value !== null &&
|
|
43
|
+
typeof value.data === 'function');
|
|
44
44
|
}
|
|
@@ -15,7 +15,7 @@ export declare const RequestResult: Readonly<{
|
|
|
15
15
|
readonly NotSupported: 112;
|
|
16
16
|
readonly Backpressured: 113;
|
|
17
17
|
}>;
|
|
18
|
-
export type RequestResult = typeof RequestResult[keyof typeof RequestResult];
|
|
18
|
+
export type RequestResult = (typeof RequestResult)[keyof typeof RequestResult];
|
|
19
19
|
export declare const SubmitResult: Readonly<{
|
|
20
20
|
readonly Ok: 0;
|
|
21
21
|
readonly Backpressured: 1;
|
|
@@ -32,7 +32,7 @@ export declare const SubmitResult: Readonly<{
|
|
|
32
32
|
readonly InternalError: 12;
|
|
33
33
|
readonly NotAdmitted: 13;
|
|
34
34
|
}>;
|
|
35
|
-
export type SubmitResult = typeof SubmitResult[keyof typeof SubmitResult];
|
|
35
|
+
export type SubmitResult = (typeof SubmitResult)[keyof typeof SubmitResult];
|
|
36
36
|
export type ZLinkBackendSendFlags = number;
|
|
37
37
|
export type ZLinkBackendRecvFlags = number;
|
|
38
38
|
export declare const ZLINK_BACKEND_SEND_NONE: ZLinkBackendSendFlags;
|