@zlink-systems/framework 0.20.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
|
@@ -40,16 +40,13 @@ export function wrapSocket<T extends { close(): void }>(
|
|
|
40
40
|
};
|
|
41
41
|
};
|
|
42
42
|
const hasRequest = typeof (nativeInstance as { request?: unknown }).request === 'function';
|
|
43
|
-
const hasRoutedPeer =
|
|
44
|
-
&& typeof (nativeInstance as { reply?: unknown }).reply === 'function';
|
|
43
|
+
const hasRoutedPeer =
|
|
44
|
+
hasRequest && typeof (nativeInstance as { reply?: unknown }).reply === 'function';
|
|
45
45
|
const hasStream = typeof (nativeInstance as { recvPacket?: unknown }).recvPacket === 'function';
|
|
46
|
-
const eventLoopPoller =
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
nativeInstance as unknown as Socket,
|
|
50
|
-
pollCompletion,
|
|
51
|
-
() => {}
|
|
52
|
-
);
|
|
46
|
+
const eventLoopPoller =
|
|
47
|
+
pollCompletion === undefined
|
|
48
|
+
? undefined
|
|
49
|
+
: new ZLinkNodeEventLoopPoller(nativeInstance as unknown as Socket, pollCompletion, () => {});
|
|
53
50
|
const adapter = {
|
|
54
51
|
nativeInstance,
|
|
55
52
|
async dispose(): Promise<void> {
|
|
@@ -74,20 +71,24 @@ export function wrapSocket<T extends { close(): void }>(
|
|
|
74
71
|
(nativeInstance as T & { disconnect(endpoint: string): void }).disconnect(endpoint);
|
|
75
72
|
},
|
|
76
73
|
setChannelName(channelName: string): void {
|
|
77
|
-
const setChannelName = (nativeInstance as T & { setChannelName?: (value: string) => void })
|
|
74
|
+
const setChannelName = (nativeInstance as T & { setChannelName?: (value: string) => void })
|
|
75
|
+
.setChannelName;
|
|
78
76
|
setChannelName?.call(nativeInstance, channelName);
|
|
79
77
|
},
|
|
80
78
|
setReceiveFlowState(state: 0 | 1): void {
|
|
81
|
-
(nativeInstance as T & { setReceiveFlowState(value: 0 | 1): void })
|
|
82
|
-
|
|
79
|
+
(nativeInstance as T & { setReceiveFlowState(value: 0 | 1): void }).setReceiveFlowState(
|
|
80
|
+
state
|
|
81
|
+
);
|
|
83
82
|
},
|
|
84
83
|
setProbe(enabled: boolean): void {
|
|
85
84
|
requireSocketOptions(socket).probe = enabled;
|
|
86
85
|
},
|
|
87
86
|
setTlsServer(cert: string, key: string, requireClientCert?: boolean): void {
|
|
88
|
-
(
|
|
89
|
-
|
|
90
|
-
|
|
87
|
+
(
|
|
88
|
+
nativeInstance as T & {
|
|
89
|
+
setTlsServer(cert: string, key: string, requireClientCert?: boolean): void;
|
|
90
|
+
}
|
|
91
|
+
).setTlsServer(cert, key, requireClientCert);
|
|
91
92
|
},
|
|
92
93
|
setSubscription(topic: string): void {
|
|
93
94
|
(nativeInstance as T & { setSubscription(topic: string): void }).setSubscription(topic);
|
|
@@ -96,15 +97,21 @@ export function wrapSocket<T extends { close(): void }>(
|
|
|
96
97
|
(nativeInstance as T & { unsetSubscription(topic: string): void }).unsetSubscription(topic);
|
|
97
98
|
},
|
|
98
99
|
subscribe(result: unknown, flags?: number): boolean {
|
|
99
|
-
return Boolean(
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
return Boolean(
|
|
101
|
+
(
|
|
102
|
+
nativeInstance as T & {
|
|
103
|
+
subscribe(result: unknown, flags?: number): boolean;
|
|
104
|
+
}
|
|
105
|
+
).subscribe(result, flags)
|
|
106
|
+
);
|
|
102
107
|
},
|
|
103
108
|
get lastEndpoint(): string | undefined {
|
|
104
109
|
return socket.options?.lastEndpoint;
|
|
105
110
|
},
|
|
106
111
|
setRoutingId(routingId: unknown): void {
|
|
107
|
-
(nativeInstance as T & { setRoutingId(value: unknown): void }).setRoutingId(
|
|
112
|
+
(nativeInstance as T & { setRoutingId(value: unknown): void }).setRoutingId(
|
|
113
|
+
toNativeRoutingId(routingId)
|
|
114
|
+
);
|
|
108
115
|
},
|
|
109
116
|
get peerWeight(): number {
|
|
110
117
|
return socket.options?.peerWeight ?? 100;
|
|
@@ -151,17 +158,20 @@ export function wrapSocket<T extends { close(): void }>(
|
|
|
151
158
|
send(...args: unknown[]): unknown {
|
|
152
159
|
if (hasStream) {
|
|
153
160
|
const [routingId, payload] = args as [unknown, unknown];
|
|
154
|
-
const operation = (
|
|
155
|
-
|
|
156
|
-
|
|
161
|
+
const operation = (
|
|
162
|
+
nativeInstance as T & {
|
|
163
|
+
send(routingId: unknown): ZLinkBindingAsyncSendOperation;
|
|
164
|
+
}
|
|
165
|
+
).send(toNativeRoutingId(routingId));
|
|
157
166
|
submitBindingSyncSend(operation, payload);
|
|
158
167
|
return true;
|
|
159
168
|
}
|
|
160
169
|
if (hasRoutedPeer) {
|
|
161
170
|
const [routingId, payload] = args as [unknown, unknown];
|
|
162
171
|
return submitBindingAsyncSend(
|
|
163
|
-
(nativeInstance as T & { send(routingId: unknown): ZLinkBindingAsyncSendOperation })
|
|
164
|
-
|
|
172
|
+
(nativeInstance as T & { send(routingId: unknown): ZLinkBindingAsyncSendOperation }).send(
|
|
173
|
+
toNativeRoutingId(routingId)
|
|
174
|
+
),
|
|
165
175
|
payload
|
|
166
176
|
);
|
|
167
177
|
}
|
|
@@ -172,9 +182,11 @@ export function wrapSocket<T extends { close(): void }>(
|
|
|
172
182
|
payload
|
|
173
183
|
);
|
|
174
184
|
}
|
|
175
|
-
const operation = (
|
|
176
|
-
|
|
177
|
-
|
|
185
|
+
const operation = (
|
|
186
|
+
nativeInstance as T & {
|
|
187
|
+
send(): ZLinkBindingAsyncSendOperation;
|
|
188
|
+
}
|
|
189
|
+
).send();
|
|
178
190
|
if ((flags ?? zlink.SendFlags.None) === zlink.SendFlags.DontWait) {
|
|
179
191
|
submitBindingSyncSend(operation, payload);
|
|
180
192
|
return true;
|
|
@@ -184,8 +196,9 @@ export function wrapSocket<T extends { close(): void }>(
|
|
|
184
196
|
submit(routingId: unknown, payload: unknown, _timeoutMs?: number): Promise<void> {
|
|
185
197
|
if (!hasStream) throw new TypeError('Async stream send requires a STREAM socket.');
|
|
186
198
|
return submitBindingAsyncSend(
|
|
187
|
-
(nativeInstance as T & { send(routingId: unknown): ZLinkBindingAsyncSendOperation })
|
|
188
|
-
|
|
199
|
+
(nativeInstance as T & { send(routingId: unknown): ZLinkBindingAsyncSendOperation }).send(
|
|
200
|
+
toNativeRoutingId(routingId)
|
|
201
|
+
),
|
|
189
202
|
payload
|
|
190
203
|
);
|
|
191
204
|
},
|
|
@@ -193,8 +206,9 @@ export function wrapSocket<T extends { close(): void }>(
|
|
|
193
206
|
if (hasRoutedPeer) {
|
|
194
207
|
const [routingId, payload, timeoutMs] = args as [unknown, unknown, number | undefined];
|
|
195
208
|
return submitBindingRequest(
|
|
196
|
-
(
|
|
197
|
-
|
|
209
|
+
(
|
|
210
|
+
nativeInstance as T & { request(routingId: unknown): ZLinkBindingRequestOperation }
|
|
211
|
+
).request(toNativeRoutingId(routingId)),
|
|
198
212
|
payload,
|
|
199
213
|
timeoutMs
|
|
200
214
|
);
|
|
@@ -211,18 +225,22 @@ export function wrapSocket<T extends { close(): void }>(
|
|
|
211
225
|
},
|
|
212
226
|
reply(...args: unknown[]): unknown {
|
|
213
227
|
const [routingId, replyToken, payload] = args as [unknown, unknown, unknown];
|
|
214
|
-
const operation = (
|
|
215
|
-
|
|
216
|
-
|
|
228
|
+
const operation = (
|
|
229
|
+
nativeInstance as T & {
|
|
230
|
+
reply(routingId: unknown, replyToken: unknown): ZLinkBindingReplyOperation;
|
|
231
|
+
}
|
|
232
|
+
).reply(toNativeRoutingId(routingId), replyToken);
|
|
217
233
|
return args.length < 3 ? operation : submitBindingReply(operation, payload);
|
|
218
234
|
},
|
|
219
235
|
recv(flags?: number): unknown {
|
|
220
236
|
const received = new zlink.Received();
|
|
221
237
|
let ok = false;
|
|
222
238
|
try {
|
|
223
|
-
ok = (
|
|
224
|
-
|
|
225
|
-
|
|
239
|
+
ok = (
|
|
240
|
+
nativeInstance as T & {
|
|
241
|
+
recv(result: unknown, flags?: number): boolean;
|
|
242
|
+
}
|
|
243
|
+
).recv(received, flags);
|
|
226
244
|
} catch (error) {
|
|
227
245
|
received.close();
|
|
228
246
|
if (isRouteRecvRetryable(error)) {
|
|
@@ -239,9 +257,11 @@ export function wrapSocket<T extends { close(): void }>(
|
|
|
239
257
|
recvPacket(packet: unknown, flags?: number): boolean {
|
|
240
258
|
if (!hasStream) throw new TypeError('Packet receive requires a STREAM socket.');
|
|
241
259
|
try {
|
|
242
|
-
return (
|
|
243
|
-
|
|
244
|
-
|
|
260
|
+
return (
|
|
261
|
+
nativeInstance as T & {
|
|
262
|
+
recvPacket(result: unknown, flags?: number): boolean;
|
|
263
|
+
}
|
|
264
|
+
).recvPacket(packet, flags);
|
|
245
265
|
} catch (error) {
|
|
246
266
|
if (isRouteRecvRetryable(error)) return false;
|
|
247
267
|
throw error;
|
|
@@ -251,7 +271,9 @@ export function wrapSocket<T extends { close(): void }>(
|
|
|
251
271
|
if (args.length >= 2) {
|
|
252
272
|
const [topic, payload] = args as [string, unknown];
|
|
253
273
|
submitBindingPublish(
|
|
254
|
-
(nativeInstance as T & { publish(topic: string): ZLinkBindingPublishOperation }).publish(
|
|
274
|
+
(nativeInstance as T & { publish(topic: string): ZLinkBindingPublishOperation }).publish(
|
|
275
|
+
topic
|
|
276
|
+
),
|
|
255
277
|
payload
|
|
256
278
|
);
|
|
257
279
|
return;
|
|
@@ -264,9 +286,11 @@ export function wrapSocket<T extends { close(): void }>(
|
|
|
264
286
|
payload: unknown,
|
|
265
287
|
_flags?: number
|
|
266
288
|
): Promise<void> {
|
|
267
|
-
const operation = (
|
|
268
|
-
|
|
269
|
-
|
|
289
|
+
const operation = (
|
|
290
|
+
nativeInstance as T & {
|
|
291
|
+
sendToSpot(targetRid: unknown, targetSpot: unknown): ZLinkBindingAsyncSendOperation;
|
|
292
|
+
}
|
|
293
|
+
).sendToSpot(toNativeRoutingId(targetRid), toNativeRoutingId(targetSpot));
|
|
270
294
|
await submitBindingAsyncSend(operation, payload);
|
|
271
295
|
},
|
|
272
296
|
requestToSpot(
|
|
@@ -276,27 +300,47 @@ export function wrapSocket<T extends { close(): void }>(
|
|
|
276
300
|
timeoutMs?: number
|
|
277
301
|
): Promise<readonly unknown[]> {
|
|
278
302
|
return submitBindingRequest(
|
|
279
|
-
(
|
|
280
|
-
|
|
281
|
-
|
|
303
|
+
(
|
|
304
|
+
nativeInstance as T & {
|
|
305
|
+
requestToSpot(targetRid: unknown, targetSpot: unknown): ZLinkBindingRequestOperation;
|
|
306
|
+
}
|
|
307
|
+
).requestToSpot(toNativeRoutingId(targetRid), toNativeRoutingId(targetSpot)),
|
|
282
308
|
payload,
|
|
283
309
|
timeoutMs
|
|
284
310
|
);
|
|
285
311
|
},
|
|
286
312
|
disconnectPeer(routingId: unknown): void {
|
|
287
|
-
disconnectStreamPeer(
|
|
313
|
+
disconnectStreamPeer(
|
|
314
|
+
nativeInstance as T & { disconnectRid(value: unknown): void },
|
|
315
|
+
routingId
|
|
316
|
+
);
|
|
288
317
|
},
|
|
289
|
-
async bindActor(
|
|
318
|
+
async bindActor(
|
|
319
|
+
_sessionRid: unknown,
|
|
320
|
+
_actor: unknown,
|
|
321
|
+
_timeoutMs: number,
|
|
322
|
+
_signal?: AbortSignal
|
|
323
|
+
): Promise<void> {
|
|
290
324
|
throw new Error(
|
|
291
325
|
'Session Actor dispatch requires enableActorDispatch() and a Framework MeshNode service route.'
|
|
292
326
|
);
|
|
293
327
|
},
|
|
294
|
-
async unbindActor(
|
|
328
|
+
async unbindActor(
|
|
329
|
+
_sessionRid: unknown,
|
|
330
|
+
_actorId: string,
|
|
331
|
+
_timeoutMs: number,
|
|
332
|
+
_signal?: AbortSignal
|
|
333
|
+
): Promise<void> {
|
|
295
334
|
throw new Error(
|
|
296
335
|
'Session Actor dispatch requires enableActorDispatch() and a Framework MeshNode service route.'
|
|
297
336
|
);
|
|
298
337
|
},
|
|
299
|
-
sendBoundActor(
|
|
338
|
+
sendBoundActor(
|
|
339
|
+
_sessionRid: unknown,
|
|
340
|
+
_actorId: string,
|
|
341
|
+
_parts: readonly unknown[],
|
|
342
|
+
_flags: number
|
|
343
|
+
): boolean {
|
|
300
344
|
return false;
|
|
301
345
|
}
|
|
302
346
|
};
|
|
@@ -333,8 +377,11 @@ function requireSocketOptions<TOptions>(socket: { readonly options?: TOptions })
|
|
|
333
377
|
}
|
|
334
378
|
|
|
335
379
|
export function isEndpointCloseIgnorableError(error: unknown): boolean {
|
|
336
|
-
return
|
|
337
|
-
error
|
|
338
|
-
(
|
|
380
|
+
return (
|
|
381
|
+
isContextTerminatedError(error) ||
|
|
382
|
+
(error instanceof Error &&
|
|
383
|
+
'code' in error &&
|
|
384
|
+
((error as { code: unknown }).code === 604 ||
|
|
385
|
+
(error as { code: unknown }).code === zlink.ConnectResult.NotFound))
|
|
339
386
|
);
|
|
340
387
|
}
|
|
@@ -45,7 +45,9 @@ export class ZLinkBufferMessage implements Message {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
function isMessage(value: unknown): value is Message {
|
|
48
|
-
return
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
return (
|
|
49
|
+
typeof value === 'object' &&
|
|
50
|
+
value !== null &&
|
|
51
|
+
typeof (value as { data?: unknown }).data === 'function'
|
|
52
|
+
);
|
|
51
53
|
}
|
|
@@ -16,7 +16,7 @@ export const RequestResult = Object.freeze({
|
|
|
16
16
|
NotSupported: 112,
|
|
17
17
|
Backpressured: 113
|
|
18
18
|
} as const);
|
|
19
|
-
export type RequestResult = typeof RequestResult[keyof typeof RequestResult];
|
|
19
|
+
export type RequestResult = (typeof RequestResult)[keyof typeof RequestResult];
|
|
20
20
|
|
|
21
21
|
export const SubmitResult = Object.freeze({
|
|
22
22
|
Ok: 0,
|
|
@@ -34,7 +34,7 @@ export const SubmitResult = Object.freeze({
|
|
|
34
34
|
InternalError: 12,
|
|
35
35
|
NotAdmitted: 13
|
|
36
36
|
} as const);
|
|
37
|
-
export type SubmitResult = typeof SubmitResult[keyof typeof SubmitResult];
|
|
37
|
+
export type SubmitResult = (typeof SubmitResult)[keyof typeof SubmitResult];
|
|
38
38
|
|
|
39
39
|
export type ZLinkBackendSendFlags = number;
|
|
40
40
|
export type ZLinkBackendRecvFlags = number;
|
|
@@ -59,8 +59,9 @@ export function isZLinkBackendResultError(error: unknown): error is ZLinkBackend
|
|
|
59
59
|
|
|
60
60
|
export function isBackendNotConnectedError(error: unknown): boolean {
|
|
61
61
|
if (isZLinkBackendResultError(error)) {
|
|
62
|
-
return
|
|
63
|
-
|| error.result === RequestResult.NotConnected
|
|
62
|
+
return (
|
|
63
|
+
error.result === SubmitResult.NotConnected || error.result === RequestResult.NotConnected
|
|
64
|
+
);
|
|
64
65
|
}
|
|
65
66
|
if (typeof error !== 'object' || error === null || !('result' in error)) {
|
|
66
67
|
return false;
|
|
@@ -70,9 +71,11 @@ export function isBackendNotConnectedError(error: unknown): boolean {
|
|
|
70
71
|
}
|
|
71
72
|
|
|
72
73
|
export function isBackendRequestTimeoutError(error: unknown): boolean {
|
|
73
|
-
return
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
return (
|
|
75
|
+
isZLinkBackendResultError(error) &&
|
|
76
|
+
error.operation === 'request' &&
|
|
77
|
+
error.result === RequestResult.TimedOut
|
|
78
|
+
);
|
|
76
79
|
}
|
|
77
80
|
export type ZLinkBackendMessageLike = Message | Buffer | Uint8Array | string;
|
|
78
81
|
/** Binding의 SendSubmission과 구조적으로 호환된다. binding 타입을 import 하지 않는다. */
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import type { ZLinkLocationOptionOverrides } from '../../contracts/Locations/Options';
|
|
2
2
|
import type { ZLinkDomainLocationStore as ZLinkLocationStore } from '../locations/domain-store-contract';
|
|
3
|
-
import type {
|
|
4
|
-
ZLinkLocationEventSink,
|
|
5
|
-
ZLinkLocationRuntimeStores
|
|
6
|
-
} from '../locations';
|
|
3
|
+
import type { ZLinkLocationEventSink, ZLinkLocationRuntimeStores } from '../locations';
|
|
7
4
|
import {
|
|
8
5
|
ZLinkLocationRuntime,
|
|
9
6
|
ZLinkOwnerLeaseTracker,
|
|
@@ -11,10 +11,7 @@ import type {
|
|
|
11
11
|
ZLinkSpotPublisherClient
|
|
12
12
|
} from '../../contracts';
|
|
13
13
|
import type { SpotHandle } from '../spots/spot-handle';
|
|
14
|
-
import {
|
|
15
|
-
ZLinkConfigurationException,
|
|
16
|
-
type ZLinkFrameworkRegistration
|
|
17
|
-
} from '../configuration';
|
|
14
|
+
import { ZLinkConfigurationException, type ZLinkFrameworkRegistration } from '../configuration';
|
|
18
15
|
import {
|
|
19
16
|
ZLinkFrameworkInternalErrorKind,
|
|
20
17
|
createInternalFrameworkException
|
|
@@ -56,13 +53,9 @@ export class DefaultZLinkChannelClient implements ZLinkChannelClient {
|
|
|
56
53
|
return new DefaultZLinkSendCall(
|
|
57
54
|
() => this.requireChannel(channelName),
|
|
58
55
|
async (packetName, metadata, signal) =>
|
|
59
|
-
normalizeSubmitResult(
|
|
60
|
-
channelName,
|
|
61
|
-
|
|
62
|
-
message,
|
|
63
|
-
signal,
|
|
64
|
-
metadata
|
|
65
|
-
))
|
|
56
|
+
normalizeSubmitResult(
|
|
57
|
+
await this.requireTransport().send(channelName, packetName, message, signal, metadata)
|
|
58
|
+
)
|
|
66
59
|
);
|
|
67
60
|
}
|
|
68
61
|
|
|
@@ -83,9 +76,11 @@ export class DefaultZLinkChannelClient implements ZLinkChannelClient {
|
|
|
83
76
|
}
|
|
84
77
|
|
|
85
78
|
private defaultRequestTimeout(channelName: string): number {
|
|
86
|
-
return
|
|
87
|
-
|
|
88
|
-
??
|
|
79
|
+
return (
|
|
80
|
+
this.registration.channels.get(channelName)?.requestTimeoutMs ??
|
|
81
|
+
this.registration.requestTimeoutMs ??
|
|
82
|
+
30_000
|
|
83
|
+
);
|
|
89
84
|
}
|
|
90
85
|
|
|
91
86
|
private requireChannel(channelName: string): void {
|
|
@@ -105,9 +100,7 @@ export class DefaultZLinkChannelClient implements ZLinkChannelClient {
|
|
|
105
100
|
}
|
|
106
101
|
|
|
107
102
|
private requireTransport(): ZLinkChannelClientTransport {
|
|
108
|
-
const transport = typeof this.transport === 'function'
|
|
109
|
-
? this.transport()
|
|
110
|
-
: this.transport;
|
|
103
|
+
const transport = typeof this.transport === 'function' ? this.transport() : this.transport;
|
|
111
104
|
if (transport === undefined) {
|
|
112
105
|
throw new ZLinkConfigurationException('Channel runtime is not started.');
|
|
113
106
|
}
|
|
@@ -123,24 +116,24 @@ export class DefaultZLinkFanoutClient implements ZLinkFanoutClient {
|
|
|
123
116
|
|
|
124
117
|
publish(channelName: string, event: unknown): ZLinkFanoutPublishCall;
|
|
125
118
|
publish(channelName: string, topic: string, event: unknown): ZLinkFanoutPublishCall;
|
|
126
|
-
publish(
|
|
119
|
+
publish(
|
|
120
|
+
channelName: string,
|
|
121
|
+
topicOrEvent: string | unknown,
|
|
122
|
+
explicitEvent?: unknown
|
|
123
|
+
): ZLinkFanoutPublishCall {
|
|
127
124
|
const hasExplicitTopic = arguments.length === 3;
|
|
128
125
|
const event = hasExplicitTopic ? explicitEvent : topicOrEvent;
|
|
129
126
|
const topic = hasExplicitTopic
|
|
130
|
-
? topicOrEvent as string
|
|
127
|
+
? (topicOrEvent as string)
|
|
131
128
|
: resolveFrameworkPacketName(event, undefined, 'Fanout');
|
|
132
129
|
requirePublicFanoutTopic(topic);
|
|
133
130
|
const packetName = resolveFrameworkPacketName(event, undefined, 'Fanout');
|
|
134
131
|
return new DefaultZLinkFanoutPublishCall(
|
|
135
132
|
() => this.requirePublisherChannel(channelName),
|
|
136
133
|
async (signal) => ({
|
|
137
|
-
status: (
|
|
138
|
-
channelName,
|
|
139
|
-
|
|
140
|
-
packetName,
|
|
141
|
-
event,
|
|
142
|
-
signal
|
|
143
|
-
)).status
|
|
134
|
+
status: (
|
|
135
|
+
await this.requireTransport().publish(channelName, topic, packetName, event, signal)
|
|
136
|
+
).status
|
|
144
137
|
})
|
|
145
138
|
);
|
|
146
139
|
}
|
|
@@ -158,14 +151,14 @@ export class DefaultZLinkFanoutClient implements ZLinkFanoutClient {
|
|
|
158
151
|
|
|
159
152
|
private requirePublisherChannel(channelName: string): void {
|
|
160
153
|
if (!this.registration.fanoutPublishers.has(channelName)) {
|
|
161
|
-
throw new ZLinkConfigurationException(
|
|
154
|
+
throw new ZLinkConfigurationException(
|
|
155
|
+
`Channel '${channelName}' does not have a publisher capability.`
|
|
156
|
+
);
|
|
162
157
|
}
|
|
163
158
|
}
|
|
164
159
|
|
|
165
160
|
private requireTransport(): ZLinkChannelClientTransport {
|
|
166
|
-
const transport = typeof this.transport === 'function'
|
|
167
|
-
? this.transport()
|
|
168
|
-
: this.transport;
|
|
161
|
+
const transport = typeof this.transport === 'function' ? this.transport() : this.transport;
|
|
169
162
|
if (transport === undefined) {
|
|
170
163
|
throw new ZLinkConfigurationException('Channel runtime is not started.');
|
|
171
164
|
}
|
|
@@ -177,21 +170,24 @@ export class DefaultZLinkRouteClient implements ZLinkRouteClient {
|
|
|
177
170
|
constructor(
|
|
178
171
|
private readonly registration: ZLinkFrameworkRegistration,
|
|
179
172
|
private readonly transport?: ZLinkRouteClientTransport,
|
|
180
|
-
private readonly spotRouterChannelIdForMesh: (meshName: string) => string = (meshName) =>
|
|
173
|
+
private readonly spotRouterChannelIdForMesh: (meshName: string) => string = (meshName) =>
|
|
174
|
+
meshName
|
|
181
175
|
) {}
|
|
182
176
|
|
|
183
177
|
sendToNode(meshName: string, targetNodeRid: string, message: unknown): ZLinkSendCall {
|
|
184
178
|
return new DefaultZLinkSendCall(
|
|
185
179
|
() => this.requireMesh(meshName),
|
|
186
180
|
async (packetName, metadata, signal) =>
|
|
187
|
-
normalizeSubmitResult(
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
181
|
+
normalizeSubmitResult(
|
|
182
|
+
await this.requireTransport().submit(
|
|
183
|
+
meshName,
|
|
184
|
+
targetNodeRid,
|
|
185
|
+
packetName,
|
|
186
|
+
message,
|
|
187
|
+
signal,
|
|
188
|
+
metadata
|
|
189
|
+
)
|
|
190
|
+
)
|
|
195
191
|
);
|
|
196
192
|
}
|
|
197
193
|
|
|
@@ -214,24 +210,30 @@ export class DefaultZLinkRouteClient implements ZLinkRouteClient {
|
|
|
214
210
|
|
|
215
211
|
sendToChannel(channelName: string, message: unknown): ZLinkSendCall {
|
|
216
212
|
return new DefaultZLinkSendCall(
|
|
217
|
-
() => {
|
|
213
|
+
() => {
|
|
214
|
+
this.resolveMeshChannel(channelName);
|
|
215
|
+
},
|
|
218
216
|
async (packetName, metadata, signal) => {
|
|
219
217
|
const meshName = this.resolveMeshChannel(channelName);
|
|
220
|
-
return normalizeSubmitResult(
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
218
|
+
return normalizeSubmitResult(
|
|
219
|
+
await this.requireTransport().submitToChannel(
|
|
220
|
+
meshName,
|
|
221
|
+
channelName,
|
|
222
|
+
packetName,
|
|
223
|
+
message,
|
|
224
|
+
signal,
|
|
225
|
+
metadata
|
|
226
|
+
)
|
|
227
|
+
);
|
|
228
228
|
}
|
|
229
229
|
);
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
requestToChannel(channelName: string, request: unknown): ZLinkChannelRequestCall {
|
|
233
233
|
return new DefaultZLinkRequestCall(
|
|
234
|
-
() => {
|
|
234
|
+
() => {
|
|
235
|
+
this.resolveMeshChannel(channelName);
|
|
236
|
+
},
|
|
235
237
|
(packetName, timeoutMs, metadata, signal) => {
|
|
236
238
|
const meshName = this.resolveMeshChannel(channelName);
|
|
237
239
|
return this.requireTransport().requestToChannel(
|
|
@@ -250,7 +252,9 @@ export class DefaultZLinkRouteClient implements ZLinkRouteClient {
|
|
|
250
252
|
|
|
251
253
|
sendToSpot(spot: SpotHandle, message: unknown): ZLinkSendCall {
|
|
252
254
|
return new DefaultZLinkSendCall(
|
|
253
|
-
() => {
|
|
255
|
+
() => {
|
|
256
|
+
this.requireSpotTransport();
|
|
257
|
+
},
|
|
254
258
|
async (_packetName, metadata, signal) => {
|
|
255
259
|
await sendToSpotHandle(this.requireSpotTransport(), spot, message, {
|
|
256
260
|
signal,
|
|
@@ -264,38 +268,43 @@ export class DefaultZLinkRouteClient implements ZLinkRouteClient {
|
|
|
264
268
|
|
|
265
269
|
requestToSpot(spot: SpotHandle, request: unknown): ZLinkRequestCall {
|
|
266
270
|
return new DefaultZLinkRequestCall(
|
|
267
|
-
() => {
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
request,
|
|
272
|
-
{
|
|
271
|
+
() => {
|
|
272
|
+
this.requireSpotTransport();
|
|
273
|
+
},
|
|
274
|
+
(_packetName, timeoutMs, metadata, signal) =>
|
|
275
|
+
requestToSpotHandle(this.requireSpotTransport(), spot, request, {
|
|
273
276
|
timeoutMs,
|
|
274
277
|
signal,
|
|
275
278
|
metadata,
|
|
276
279
|
spotRouterChannelIdForMesh: this.spotRouterChannelIdForMesh
|
|
277
|
-
}
|
|
278
|
-
),
|
|
280
|
+
}),
|
|
279
281
|
this.registration.requestTimeoutMs ?? 30_000
|
|
280
282
|
);
|
|
281
283
|
}
|
|
282
284
|
|
|
283
285
|
private defaultRequestTimeout(meshName: string): number {
|
|
284
|
-
return
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
??
|
|
286
|
+
return (
|
|
287
|
+
this.registration.spotNodes.get(meshName)?.requestTimeoutMs ??
|
|
288
|
+
this.registration.routeChannelOptions.get(meshName)?.requestTimeoutMs ??
|
|
289
|
+
this.registration.requestTimeoutMs ??
|
|
290
|
+
30_000
|
|
291
|
+
);
|
|
288
292
|
}
|
|
289
293
|
|
|
290
294
|
private requireMesh(meshName: string): void {
|
|
291
|
-
if (
|
|
295
|
+
if (
|
|
296
|
+
!this.registration.spotNodes.has(meshName) &&
|
|
297
|
+
!this.registration.routeChannels.has(meshName)
|
|
298
|
+
) {
|
|
292
299
|
throw new ZLinkConfigurationException(`RouteMesh '${meshName}' is not registered.`);
|
|
293
300
|
}
|
|
294
301
|
}
|
|
295
302
|
|
|
296
303
|
private resolveMeshChannel(channelName: string): string {
|
|
297
304
|
const matches = [...this.registration.spotNodes.entries()]
|
|
298
|
-
.filter(([, mesh]) =>
|
|
305
|
+
.filter(([, mesh]) =>
|
|
306
|
+
Object.prototype.hasOwnProperty.call(mesh.meshChannels ?? {}, channelName)
|
|
307
|
+
)
|
|
299
308
|
.map(([meshName]) => meshName);
|
|
300
309
|
if (matches.length === 0) {
|
|
301
310
|
throw createInternalFrameworkException(
|
|
@@ -312,11 +321,10 @@ export class DefaultZLinkRouteClient implements ZLinkRouteClient {
|
|
|
312
321
|
}
|
|
313
322
|
|
|
314
323
|
private defaultRequestTimeoutForChannel(channelName: string): number {
|
|
315
|
-
const match = [...this.registration.spotNodes.entries()]
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
?? 30_000;
|
|
324
|
+
const match = [...this.registration.spotNodes.entries()].find(([, mesh]) =>
|
|
325
|
+
Object.prototype.hasOwnProperty.call(mesh.meshChannels ?? {}, channelName)
|
|
326
|
+
);
|
|
327
|
+
return match?.[1].requestTimeoutMs ?? this.registration.requestTimeoutMs ?? 30_000;
|
|
320
328
|
}
|
|
321
329
|
|
|
322
330
|
private requireTransport(): ZLinkRouteClientTransport {
|
|
@@ -329,11 +337,12 @@ export class DefaultZLinkRouteClient implements ZLinkRouteClient {
|
|
|
329
337
|
private requireSpotTransport(): ZLinkSpotRoutedTransport {
|
|
330
338
|
const transport = this.requireTransport();
|
|
331
339
|
if (transport.sendToSpot === undefined || transport.requestToSpot === undefined) {
|
|
332
|
-
throw new ZLinkConfigurationException(
|
|
340
|
+
throw new ZLinkConfigurationException(
|
|
341
|
+
'Route channel runtime does not support SpotHandle messaging.'
|
|
342
|
+
);
|
|
333
343
|
}
|
|
334
344
|
return transport as ZLinkSpotRoutedTransport;
|
|
335
345
|
}
|
|
336
|
-
|
|
337
346
|
}
|
|
338
347
|
|
|
339
348
|
export class DefaultZLinkSpotPublisherClient implements ZLinkSpotPublisherClient {
|
|
@@ -346,13 +355,24 @@ export class DefaultZLinkSpotPublisherClient implements ZLinkSpotPublisherClient
|
|
|
346
355
|
return new DefaultZLinkPublishCall(
|
|
347
356
|
() => this.requireMeshChannel(meshName, channelName),
|
|
348
357
|
(packetName, metadata, signal) =>
|
|
349
|
-
this.requireTransport().publish(
|
|
358
|
+
this.requireTransport().publish(
|
|
359
|
+
meshName,
|
|
360
|
+
channelName,
|
|
361
|
+
topic,
|
|
362
|
+
packetName,
|
|
363
|
+
event,
|
|
364
|
+
signal,
|
|
365
|
+
metadata
|
|
366
|
+
)
|
|
350
367
|
);
|
|
351
368
|
}
|
|
352
369
|
|
|
353
370
|
private requireMeshChannel(meshName: string, channelName: string): void {
|
|
354
371
|
const mesh = this.registration.spotNodes.get(meshName);
|
|
355
|
-
if (
|
|
372
|
+
if (
|
|
373
|
+
mesh === undefined ||
|
|
374
|
+
!Object.prototype.hasOwnProperty.call(mesh.meshChannels ?? {}, channelName)
|
|
375
|
+
) {
|
|
356
376
|
throw new ZLinkConfigurationException(
|
|
357
377
|
`Channel '${channelName}' is not registered in RouteMesh '${meshName}'.`
|
|
358
378
|
);
|