@zlink-systems/framework 0.30.0 → 0.30.2
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/LICENSE +150 -68
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Actors/ZLinkActorClient.d.ts +2 -1
- package/dist/contracts/Channels/Calls.d.ts +2 -1
- package/dist/contracts/Common/ZLinkEncodedPayload.d.ts +6 -0
- package/dist/contracts/Common/ZLinkEncodedPayload.js +18 -3
- package/dist/contracts/Common/ZLinkMessageMetadata.js +11 -5
- package/dist/contracts/Common/encoded-payload-storage.d.ts +1 -1
- package/dist/contracts/Common/encoded-payload-storage.js +5 -2
- package/dist/contracts/Configuration/Builders.d.ts +1 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +2 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +5 -1
- package/dist/contracts/Configuration/RegistrationBuilders.js +2 -2
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +2 -2
- package/dist/contracts/Handlers/Attributes.d.ts +5 -13
- package/dist/contracts/Handlers/Attributes.js +7 -11
- package/dist/contracts/Handlers/JsonContract.d.ts +2 -46
- package/dist/contracts/Handlers/JsonContract.js +4 -153
- package/dist/contracts/Locations/Rows.d.ts +2 -0
- package/dist/contracts/Spots/Contracts.d.ts +6 -1
- package/dist/contracts/Spots/ZLinkSpot.d.ts +3 -3
- package/dist/nest-integration.d.ts +1 -1
- package/dist/nest-integration.js +2 -1
- package/dist/runtime/abort.d.ts +5 -0
- package/dist/runtime/abort.js +10 -0
- package/dist/runtime/actors/actor-authority-publication.js +3 -2
- package/dist/runtime/actors/actor-client.d.ts +1 -2
- package/dist/runtime/actors/actor-client.js +52 -57
- package/dist/runtime/actors/actor-context.d.ts +2 -0
- package/dist/runtime/actors/actor-context.js +46 -9
- package/dist/runtime/actors/actor-handoff.d.ts +8 -4
- package/dist/runtime/actors/actor-handoff.js +219 -92
- package/dist/runtime/actors/actor-join-relocation.d.ts +3 -0
- package/dist/runtime/actors/actor-local-native-join.js +13 -12
- package/dist/runtime/actors/actor-mailbox.js +27 -1
- package/dist/runtime/actors/actor-remote-joiner.js +3 -1
- package/dist/runtime/actors/actor-remote-wire.js +15 -0
- package/dist/runtime/actors/actor-reply.d.ts +4 -0
- package/dist/runtime/actors/actor-reply.js +29 -0
- package/dist/runtime/actors/actor-routed-join-transport.d.ts +6 -2
- package/dist/runtime/actors/actor-routed-json-request.d.ts +2 -0
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +2 -0
- package/dist/runtime/actors/actor-runtime-state.js +2 -20
- package/dist/runtime/actors/actor-source-transfer.d.ts +1 -17
- package/dist/runtime/actors/index.d.ts +8 -3
- package/dist/runtime/actors/index.js +55 -27
- package/dist/runtime/actors/session-disconnected-wire.d.ts +8 -0
- package/dist/runtime/actors/session-disconnected-wire.js +48 -0
- package/dist/runtime/actors/spot-actor-dispatch.js +2 -2
- package/dist/runtime/admission.d.ts +9 -1
- package/dist/runtime/admission.js +56 -23
- package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +6 -8
- package/dist/runtime/application-jobs/application-ingress-record-owner.js +39 -22
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +15 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +61 -20
- package/dist/runtime/application-jobs/contracts.d.ts +12 -1
- package/dist/runtime/backend/contracts/index.d.ts +37 -12
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +2 -2
- package/dist/runtime/backend/mesh-completion-table.d.ts +9 -1
- package/dist/runtime/backend/mesh-completion-table.js +154 -49
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +28 -1
- package/dist/runtime/backend/mesh-dispatch-pump.js +208 -101
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +2 -2
- package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -9
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +5 -2
- package/dist/runtime/backend/node/node-raw-binding-port.js +124 -72
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +46 -13
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +181 -164
- package/dist/runtime/backend/node/node-socket-backend-adapter.d.ts +1 -1
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +11 -11
- package/dist/runtime/backend/raw-binding-port.d.ts +2 -2
- package/dist/runtime/backend/runtime-message.d.ts +1 -0
- package/dist/runtime/backend/runtime-message.js +5 -0
- package/dist/runtime/backend/runtime-values.d.ts +1 -0
- package/dist/runtime/backend/runtime-values.js +2 -1
- package/dist/runtime/channels/channel-clients.d.ts +2 -0
- package/dist/runtime/channels/channel-clients.js +75 -23
- package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +25 -5
- package/dist/runtime/channels/channel-dispatch-pipeline.js +111 -56
- package/dist/runtime/channels/channel-dispatch-services.d.ts +1 -0
- package/dist/runtime/channels/channel-dispatch-services.js +45 -0
- package/dist/runtime/channels/channel-dispatchers.d.ts +4 -3
- package/dist/runtime/channels/channel-dispatchers.js +62 -54
- package/dist/runtime/channels/channel-envelope-inspection.d.ts +1 -2
- package/dist/runtime/channels/channel-envelope-inspection.js +1 -16
- package/dist/runtime/channels/channel-envelope.d.ts +2 -0
- package/dist/runtime/channels/channel-envelope.js +146 -28
- package/dist/runtime/channels/channel-outbound-operations.d.ts +2 -2
- package/dist/runtime/channels/channel-outbound-operations.js +8 -8
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +4 -3
- package/dist/runtime/channels/channel-runtime-lifecycle.js +19 -24
- package/dist/runtime/channels/channel-runtime-manager.d.ts +9 -8
- package/dist/runtime/channels/channel-runtime-manager.js +16 -16
- package/dist/runtime/channels/channel-transports.d.ts +18 -16
- package/dist/runtime/channels/channel-transports.js +77 -58
- package/dist/runtime/channels/client-server-location-runtime.js +5 -4
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +2 -1
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/fanout-location-runtime.js +3 -3
- package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/local-spot-route-transport.js +2 -1
- package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +2 -2
- package/dist/runtime/channels/router-socket-spot-route-transport.js +4 -4
- package/dist/runtime/channels/source-spot-router.d.ts +2 -2
- package/dist/runtime/channels/source-spot-router.js +4 -4
- package/dist/runtime/channels/spot-node-route-transport.d.ts +2 -2
- package/dist/runtime/channels/spot-node-route-transport.js +4 -4
- package/dist/runtime/channels/spot-route-bridge-transport.d.ts +2 -2
- package/dist/runtime/channels/spot-route-bridge-transport.js +4 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +5 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +18 -18
- package/dist/runtime/diagnostics/flow-context.js +19 -7
- package/dist/runtime/diagnostics/index.js +4 -9
- package/dist/runtime/diagnostics/message-flow.d.ts +8 -0
- package/dist/runtime/diagnostics/message-flow.js +35 -5
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +2 -2
- package/dist/runtime/diagnostics/runtime-metrics.js +10 -8
- package/dist/runtime/execution/index.d.ts +4 -2
- package/dist/runtime/execution/index.js +33 -10
- package/dist/runtime/execution/serial-execution-queue.d.ts +5 -0
- package/dist/runtime/execution/serial-execution-queue.js +22 -2
- package/dist/runtime/execution/state-lane.d.ts +2 -0
- package/dist/runtime/execution/state-lane.js +5 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +2 -2
- package/dist/runtime/foundation/durable-service-request.d.ts +14 -0
- package/dist/runtime/foundation/durable-service-request.js +98 -0
- package/dist/runtime/foundation/operation-identity.d.ts +1 -0
- package/dist/runtime/foundation/operation-identity.js +5 -1
- package/dist/runtime/foundation/operation-registry.d.ts +25 -1
- package/dist/runtime/foundation/operation-registry.js +86 -18
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +61 -8
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +486 -266
- package/dist/runtime/foundation/service-liveness-registry.d.ts +12 -1
- package/dist/runtime/foundation/service-liveness-registry.js +38 -0
- package/dist/runtime/foundation/service-mailbox.d.ts +7 -0
- package/dist/runtime/foundation/service-maintenance-runtime.js +1 -6
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +3 -3
- package/dist/runtime/foundation/service-relocation-object-owner.js +48 -34
- package/dist/runtime/foundation/service-relocation-runtime.d.ts +2 -0
- package/dist/runtime/foundation/service-relocation-runtime.js +20 -4
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +10 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +2 -1
- package/dist/runtime/foundation/service-stateful-registry.d.ts +5 -4
- package/dist/runtime/foundation/service-stateful-registry.js +24 -26
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +75 -9
- package/dist/runtime/foundation/service-stateful-runtime.js +486 -218
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +14 -6
- package/dist/runtime/foundation/service-stateful-wire-codec.js +48 -27
- package/dist/runtime/foundation/service-topology-registry.d.ts +12 -2
- package/dist/runtime/foundation/service-topology-registry.js +61 -27
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +6 -1
- package/dist/runtime/foundation/service-wire-binary-primitives.js +27 -11
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +1 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +13 -3
- package/dist/runtime/foundation/service-wire-m6a-codec.js +189 -78
- package/dist/runtime/handlers/handler-instance-scope.d.ts +8 -0
- package/dist/runtime/handlers/handler-instance-scope.js +54 -11
- package/dist/runtime/host/actor-packet-relay.d.ts +6 -4
- package/dist/runtime/host/actor-packet-relay.js +59 -72
- package/dist/runtime/host/actor-placement-coordinator.js +25 -8
- package/dist/runtime/host/actor-runtime-options-factory.js +2 -2
- package/dist/runtime/host/actor-transfer-runtime.d.ts +7 -31
- package/dist/runtime/host/actor-transfer-runtime.js +85 -331
- package/dist/runtime/host/application-job-queue.d.ts +40 -7
- package/dist/runtime/host/application-job-queue.js +137 -42
- package/dist/runtime/host/entry-actor-runtime.d.ts +1 -0
- package/dist/runtime/host/entry-actor-runtime.js +3 -0
- package/dist/runtime/host/index.d.ts +12 -2
- package/dist/runtime/host/index.js +300 -202
- package/dist/runtime/host/location-runtime-owner.js +2 -6
- package/dist/runtime/host/mesh-router-resolver.d.ts +4 -0
- package/dist/runtime/host/mesh-router-resolver.js +14 -6
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -4
- package/dist/runtime/host/remote-bound-session-relay.js +73 -208
- package/dist/runtime/host/route-mesh-runtime.d.ts +2 -2
- package/dist/runtime/host/route-mesh-runtime.js +6 -4
- package/dist/runtime/host/runtime-shutdown.d.ts +1 -0
- package/dist/runtime/host/runtime-shutdown.js +3 -2
- package/dist/runtime/host/service-relocation-control.d.ts +1 -0
- package/dist/runtime/host/service-relocation-control.js +10 -4
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +22 -14
- package/dist/runtime/host/service-relocation-host-runtime.js +754 -599
- package/dist/runtime/host/spot-address-transport.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.js +16 -7
- package/dist/runtime/host/user-spot-creation-coordinator.js +33 -84
- package/dist/runtime/locations/actor-location-claims.d.ts +2 -2
- package/dist/runtime/locations/actor-location-claims.js +34 -19
- package/dist/runtime/locations/auto-connect-loop.d.ts +2 -0
- package/dist/runtime/locations/auto-connect-loop.js +22 -14
- package/dist/runtime/locations/auto-connect-reconciler.js +0 -6
- package/dist/runtime/locations/auto-connect-types.d.ts +0 -1
- package/dist/runtime/locations/descriptor-publication.d.ts +4 -0
- package/dist/runtime/locations/descriptor-publication.js +11 -0
- package/dist/runtime/locations/domain-store-contract.d.ts +1 -0
- package/dist/runtime/locations/in-memory-authority-store.d.ts +7 -1
- package/dist/runtime/locations/in-memory-authority-store.js +56 -19
- package/dist/runtime/locations/in-memory-location-store.js +1 -10
- package/dist/runtime/locations/index.d.ts +1 -0
- package/dist/runtime/locations/index.js +1 -0
- package/dist/runtime/locations/lease-tracker.js +1 -6
- package/dist/runtime/locations/lifecycle.d.ts +1 -2
- package/dist/runtime/locations/lifecycle.js +2 -5
- package/dist/runtime/locations/location-store-repository.d.ts +51 -1
- package/dist/runtime/locations/location-store-repository.js +363 -139
- package/dist/runtime/locations/relocation-blob.d.ts +18 -1
- package/dist/runtime/locations/relocation-blob.js +52 -1
- package/dist/runtime/locations/request-source-resolver.d.ts +37 -0
- package/dist/runtime/locations/request-source-resolver.js +80 -0
- package/dist/runtime/locations/resolvers.js +1 -1
- package/dist/runtime/locations/runtime.d.ts +7 -3
- package/dist/runtime/locations/runtime.js +61 -53
- package/dist/runtime/messaging/framework-json-v1.d.ts +4 -6
- package/dist/runtime/messaging/framework-json-v1.js +38 -294
- package/dist/runtime/messaging/packet-name.d.ts +1 -1
- package/dist/runtime/messaging/packet-name.js +8 -24
- package/dist/runtime/messaging/payload-codec.d.ts +7 -1
- package/dist/runtime/messaging/payload-codec.js +7 -6
- package/dist/runtime/messaging/request-result.d.ts +2 -0
- package/dist/runtime/messaging/request-result.js +57 -0
- package/dist/runtime/messaging/submission-result.d.ts +1 -0
- package/dist/runtime/messaging/submission-result.js +5 -2
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +34 -1
- package/dist/runtime/protocol/service_wire_codec.generated.js +229 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +16 -1
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +37 -8
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +7 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +36 -21
- package/dist/runtime/spots/index.d.ts +21 -11
- package/dist/runtime/spots/index.js +243 -178
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -2
- package/dist/runtime/spots/spot-activation-registry.js +21 -11
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +7 -7
- package/dist/runtime/spots/spot-activation.d.ts +7 -3
- package/dist/runtime/spots/spot-activation.js +140 -52
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -0
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +13 -22
- package/dist/runtime/spots/spot-actor-membership.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-membership.js +0 -8
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +33 -8
- package/dist/runtime/spots/spot-actor-packet-drain.js +5 -33
- package/dist/runtime/spots/spot-entry-activation.d.ts +2 -0
- package/dist/runtime/spots/spot-entry-activation.js +20 -11
- package/dist/runtime/spots/spot-handler-registry.d.ts +7 -4
- package/dist/runtime/spots/spot-handler-registry.js +24 -10
- package/dist/runtime/spots/spot-manager-internal-contracts.d.ts +2 -2
- package/dist/runtime/spots/spot-manager-public.js +2 -2
- package/dist/runtime/spots/spot-node-autoconnect.d.ts +2 -1
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -42
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -2
- package/dist/runtime/spots/spot-node-runtime-manager.js +115 -50
- package/dist/runtime/spots/spot-outbound.d.ts +3 -0
- package/dist/runtime/spots/spot-outbound.js +27 -18
- package/dist/runtime/spots/spot-remote-codec.js +5 -1
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +1 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +1 -1
- package/dist/runtime/spots/spot-runtime-ports.d.ts +1 -1
- package/dist/runtime/spots/spot-serial-executor.d.ts +10 -0
- package/dist/runtime/spots/spot-serial-executor.js +61 -8
- package/dist/runtime/spots/spot-serial-turn-executor.js +19 -2
- package/dist/runtime/spots/spot-subscription-dispatch.js +1 -4
- package/dist/runtime/spots/spot-timer.d.ts +57 -5
- package/dist/runtime/spots/spot-timer.js +288 -103
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +42 -11
- package/dist/runtime/streams/actor-session-binding-registry.js +165 -48
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +8 -4
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +2 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +15 -8
- package/dist/runtime/streams/bound-session-service.d.ts +1 -1
- package/dist/runtime/streams/bound-session-service.js +6 -11
- package/dist/runtime/streams/index.d.ts +3 -2
- package/dist/runtime/streams/index.js +6 -4
- package/dist/runtime/streams/managed-stream.js +3 -2
- package/dist/runtime/streams/native-fallback-bound-session.js +8 -73
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -8
- package/dist/runtime/streams/session-actor-coordinator.js +15 -32
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +3 -10
- package/dist/runtime/streams/stream-session-runtime.d.ts +1 -1
- package/dist/runtime/streams/stream-session-runtime.js +14 -31
- package/dist/runtime/workers/index.js +1 -1
- package/package.json +3 -3
- package/src/contracts/Actors/ZLinkActorClient.ts +2 -1
- package/src/contracts/Channels/Calls.ts +2 -1
- package/src/contracts/Common/ZLinkEncodedPayload.ts +24 -4
- package/src/contracts/Common/ZLinkMessageMetadata.ts +13 -8
- package/src/contracts/Common/encoded-payload-storage.ts +6 -3
- package/src/contracts/Configuration/Builders.ts +4 -1
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +7 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +6 -2
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -1
- package/src/contracts/Handlers/Attributes.ts +14 -21
- package/src/contracts/Handlers/JsonContract.ts +8 -216
- package/src/contracts/Locations/Rows.ts +2 -0
- package/src/contracts/Spots/Contracts.ts +10 -1
- package/src/contracts/Spots/ZLinkSpot.ts +3 -3
- package/src/nest-integration.ts +1 -0
- package/src/runtime/abort.ts +12 -0
- package/src/runtime/actors/actor-authority-publication.ts +3 -2
- package/src/runtime/actors/actor-client.ts +100 -85
- package/src/runtime/actors/actor-context.ts +49 -9
- package/src/runtime/actors/actor-handoff.ts +291 -110
- package/src/runtime/actors/actor-join-relocation.ts +3 -0
- package/src/runtime/actors/actor-local-native-join.ts +21 -26
- package/src/runtime/actors/actor-mailbox.ts +40 -2
- package/src/runtime/actors/actor-remote-joiner.ts +6 -1
- package/src/runtime/actors/actor-remote-wire.ts +17 -0
- package/src/runtime/actors/actor-reply.ts +42 -0
- package/src/runtime/actors/actor-routed-join-transport.ts +14 -4
- package/src/runtime/actors/actor-routed-json-request.ts +10 -2
- package/src/runtime/actors/actor-runtime-contracts.ts +2 -0
- package/src/runtime/actors/actor-runtime-state.ts +2 -20
- package/src/runtime/actors/actor-source-transfer.ts +1 -34
- package/src/runtime/actors/index.ts +60 -32
- package/src/runtime/actors/session-disconnected-wire.ts +66 -0
- package/src/runtime/actors/spot-actor-dispatch.ts +4 -2
- package/src/runtime/admission.ts +69 -21
- package/src/runtime/application-jobs/application-ingress-record-owner.ts +41 -25
- package/src/runtime/application-jobs/application-job-queue-scope.ts +83 -22
- package/src/runtime/application-jobs/contracts.ts +16 -1
- package/src/runtime/backend/contracts/index.ts +92 -18
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +5 -3
- package/src/runtime/backend/mesh-completion-table.ts +160 -57
- package/src/runtime/backend/mesh-dispatch-pump.ts +237 -108
- package/src/runtime/backend/node/node-backend-adapter-support.ts +17 -8
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +12 -2
- package/src/runtime/backend/node/node-raw-binding-port.ts +148 -85
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +315 -201
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +26 -11
- package/src/runtime/backend/raw-binding-port.ts +7 -2
- package/src/runtime/backend/runtime-message.ts +6 -0
- package/src/runtime/backend/runtime-values.ts +1 -0
- package/src/runtime/channels/channel-clients.ts +132 -58
- package/src/runtime/channels/channel-dispatch-pipeline.ts +198 -114
- package/src/runtime/channels/channel-dispatch-services.ts +69 -1
- package/src/runtime/channels/channel-dispatchers.ts +136 -90
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -16
- package/src/runtime/channels/channel-envelope.ts +225 -31
- package/src/runtime/channels/channel-outbound-operations.ts +22 -8
- package/src/runtime/channels/channel-runtime-lifecycle.ts +13 -13
- package/src/runtime/channels/channel-runtime-manager.ts +41 -17
- package/src/runtime/channels/channel-transports.ts +171 -112
- package/src/runtime/channels/client-server-location-runtime.ts +11 -10
- package/src/runtime/channels/dispatch-error-reporter.ts +4 -2
- package/src/runtime/channels/fanout-location-runtime.ts +17 -9
- package/src/runtime/channels/local-spot-route-transport.ts +3 -1
- package/src/runtime/channels/router-socket-spot-route-transport.ts +13 -4
- package/src/runtime/channels/source-spot-router.ts +8 -4
- package/src/runtime/channels/spot-node-route-transport.ts +8 -4
- package/src/runtime/channels/spot-route-bridge-transport.ts +6 -4
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +47 -18
- package/src/runtime/diagnostics/flow-context.ts +20 -7
- package/src/runtime/diagnostics/index.ts +1 -7
- package/src/runtime/diagnostics/message-flow.ts +47 -9
- package/src/runtime/diagnostics/runtime-metrics.ts +12 -10
- package/src/runtime/execution/index.ts +40 -14
- package/src/runtime/execution/serial-execution-queue.ts +33 -4
- package/src/runtime/execution/state-lane.ts +7 -0
- package/src/runtime/foundation/actor-join-recovery-codec.ts +2 -2
- package/src/runtime/foundation/durable-service-request.ts +137 -0
- package/src/runtime/foundation/operation-identity.ts +5 -1
- package/src/runtime/foundation/operation-registry.ts +98 -20
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +704 -336
- package/src/runtime/foundation/service-liveness-registry.ts +39 -0
- package/src/runtime/foundation/service-mailbox.ts +8 -0
- package/src/runtime/foundation/service-maintenance-runtime.ts +1 -8
- package/src/runtime/foundation/service-relocation-object-owner.ts +55 -36
- package/src/runtime/foundation/service-relocation-runtime.ts +25 -4
- package/src/runtime/foundation/service-runtime-contracts.ts +19 -2
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -1
- package/src/runtime/foundation/service-stateful-registry.ts +38 -35
- package/src/runtime/foundation/service-stateful-runtime.ts +732 -275
- package/src/runtime/foundation/service-stateful-wire-codec.ts +49 -16
- package/src/runtime/foundation/service-topology-registry.ts +91 -36
- package/src/runtime/foundation/service-wire-binary-primitives.ts +35 -12
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +231 -76
- package/src/runtime/handlers/handler-instance-scope.ts +67 -16
- package/src/runtime/host/actor-packet-relay.ts +113 -94
- package/src/runtime/host/actor-placement-coordinator.ts +31 -8
- package/src/runtime/host/actor-runtime-options-factory.ts +13 -2
- package/src/runtime/host/actor-transfer-runtime.ts +104 -430
- package/src/runtime/host/application-job-queue.ts +160 -41
- package/src/runtime/host/entry-actor-runtime.ts +4 -0
- package/src/runtime/host/index.ts +473 -271
- package/src/runtime/host/location-runtime-owner.ts +2 -6
- package/src/runtime/host/mesh-router-resolver.ts +13 -5
- package/src/runtime/host/remote-bound-session-relay.ts +88 -271
- package/src/runtime/host/route-mesh-runtime.ts +12 -6
- package/src/runtime/host/runtime-shutdown.ts +15 -4
- package/src/runtime/host/service-relocation-control.ts +11 -5
- package/src/runtime/host/service-relocation-host-runtime.ts +1092 -759
- package/src/runtime/host/spot-address-transport.ts +4 -2
- package/src/runtime/host/spot-runtime-options-factory.ts +20 -7
- package/src/runtime/host/user-spot-creation-coordinator.ts +41 -100
- package/src/runtime/locations/actor-location-claims.ts +52 -30
- package/src/runtime/locations/auto-connect-loop.ts +22 -14
- package/src/runtime/locations/auto-connect-reconciler.ts +0 -6
- package/src/runtime/locations/auto-connect-types.ts +0 -1
- package/src/runtime/locations/descriptor-publication.ts +7 -0
- package/src/runtime/locations/domain-store-contract.ts +5 -0
- package/src/runtime/locations/in-memory-authority-store.ts +85 -23
- package/src/runtime/locations/in-memory-location-store.ts +1 -12
- package/src/runtime/locations/index.ts +1 -0
- package/src/runtime/locations/lease-tracker.ts +2 -9
- package/src/runtime/locations/lifecycle.ts +8 -26
- package/src/runtime/locations/location-store-repository.ts +628 -152
- package/src/runtime/locations/relocation-blob.ts +75 -1
- package/src/runtime/locations/request-source-resolver.ts +138 -0
- package/src/runtime/locations/resolvers.ts +2 -2
- package/src/runtime/locations/runtime.ts +98 -64
- package/src/runtime/messaging/framework-json-v1.ts +5 -325
- package/src/runtime/messaging/packet-name.ts +5 -25
- package/src/runtime/messaging/payload-codec.ts +8 -11
- package/src/runtime/messaging/request-result.ts +62 -0
- package/src/runtime/messaging/submission-result.ts +5 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +218 -5
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +16 -13
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +46 -25
- package/src/runtime/spots/index.ts +389 -283
- package/src/runtime/spots/spot-activation-registry.ts +25 -13
- package/src/runtime/spots/spot-activation-state.ts +12 -19
- package/src/runtime/spots/spot-activation.ts +198 -96
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +25 -55
- package/src/runtime/spots/spot-actor-membership.ts +0 -15
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +56 -11
- package/src/runtime/spots/spot-actor-packet-drain.ts +9 -52
- package/src/runtime/spots/spot-entry-activation.ts +33 -21
- package/src/runtime/spots/spot-handler-registry.ts +56 -12
- package/src/runtime/spots/spot-manager-internal-contracts.ts +2 -2
- package/src/runtime/spots/spot-manager-public.ts +2 -2
- package/src/runtime/spots/spot-node-autoconnect.ts +28 -47
- package/src/runtime/spots/spot-node-runtime-manager.ts +197 -67
- package/src/runtime/spots/spot-outbound.ts +39 -19
- package/src/runtime/spots/spot-remote-codec.ts +9 -2
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +2 -1
- package/src/runtime/spots/spot-runtime-ports.ts +1 -1
- package/src/runtime/spots/spot-serial-executor.ts +97 -25
- package/src/runtime/spots/spot-serial-turn-executor.ts +22 -3
- package/src/runtime/spots/spot-subscription-dispatch.ts +1 -4
- package/src/runtime/spots/spot-timer.ts +418 -158
- package/src/runtime/streams/actor-session-binding-registry.ts +236 -64
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +16 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +23 -9
- package/src/runtime/streams/bound-session-service.ts +7 -10
- package/src/runtime/streams/index.ts +12 -6
- package/src/runtime/streams/managed-stream.ts +4 -2
- package/src/runtime/streams/native-fallback-bound-session.ts +14 -103
- package/src/runtime/streams/session-actor-coordinator.ts +39 -88
- package/src/runtime/streams/stream-binding-runtime-ports.ts +3 -9
- package/src/runtime/streams/stream-session-runtime.ts +13 -34
- package/src/runtime/workers/index.ts +1 -1
|
@@ -4,7 +4,9 @@ exports.ZLinkNodeRawBindingPort = void 0;
|
|
|
4
4
|
const zlink_1 = require("@zlink-systems/zlink");
|
|
5
5
|
const node_backend_adapter_support_1 = require("./node-backend-adapter-support");
|
|
6
6
|
const node_socket_backend_adapter_1 = require("./node-socket-backend-adapter");
|
|
7
|
+
const runtime_values_1 = require("../runtime-values");
|
|
7
8
|
const node_event_loop_poller_1 = require("./node-event-loop-poller");
|
|
9
|
+
const runtime_message_1 = require("../runtime-message");
|
|
8
10
|
class ZLinkNodeRawBindingPort {
|
|
9
11
|
sharedContext;
|
|
10
12
|
routerReceiveTimeoutMs;
|
|
@@ -174,13 +176,41 @@ class NodeRawSocketPort {
|
|
|
174
176
|
}
|
|
175
177
|
class NodeRawRouterPort extends NodeRawSocketPort {
|
|
176
178
|
nextIncomingRequestSequence = 1n;
|
|
179
|
+
routingIds = new Map();
|
|
180
|
+
nextRequestSequence = () => {
|
|
181
|
+
const current = this.nextIncomingRequestSequence;
|
|
182
|
+
this.nextIncomingRequestSequence =
|
|
183
|
+
current === BigInt(Number.MAX_SAFE_INTEGER) ? 1n : current + 1n;
|
|
184
|
+
return current;
|
|
185
|
+
};
|
|
186
|
+
replyParts = (targetRid, replyToken, parts) => {
|
|
187
|
+
// The receive record keeps the binding RoutingId it was delivered with,
|
|
188
|
+
// so the reply addresses that route without rebuilding the identity.
|
|
189
|
+
appendReplyParts(this.socket.reply(targetRid, replyToken), parts).submit();
|
|
190
|
+
};
|
|
191
|
+
preparedRoutingId(routingId) {
|
|
192
|
+
if (typeof routingId !== 'string')
|
|
193
|
+
return bindingRoutingId(routingId);
|
|
194
|
+
let prepared = this.routingIds.get(routingId);
|
|
195
|
+
if (prepared === undefined)
|
|
196
|
+
this.routingIds.set(routingId, (prepared = bindingRoutingId(routingId)));
|
|
197
|
+
return prepared;
|
|
198
|
+
}
|
|
199
|
+
close() {
|
|
200
|
+
try {
|
|
201
|
+
super.close();
|
|
202
|
+
}
|
|
203
|
+
finally {
|
|
204
|
+
this.routingIds.clear();
|
|
205
|
+
}
|
|
206
|
+
}
|
|
177
207
|
setReceiveFlowState(state) {
|
|
178
208
|
this.requireOpen();
|
|
179
209
|
this.socket.setReceiveFlowState(state === 'paused' ? zlink_1.ReceiveFlowState.PAUSED : zlink_1.ReceiveFlowState.RUNNING);
|
|
180
210
|
}
|
|
181
211
|
disconnectRid(routingId) {
|
|
182
212
|
this.requireOpen();
|
|
183
|
-
this.socket.
|
|
213
|
+
(0, node_socket_backend_adapter_1.disconnectSocketPeer)(this.socket, this.preparedRoutingId(routingId));
|
|
184
214
|
}
|
|
185
215
|
constructor(socket, receiveTimeoutMs) {
|
|
186
216
|
super(socket, true);
|
|
@@ -197,42 +227,36 @@ class NodeRawRouterPort extends NodeRawSocketPort {
|
|
|
197
227
|
}
|
|
198
228
|
setRoutingId(routingId) {
|
|
199
229
|
this.requireOpen();
|
|
200
|
-
this.socket.setRoutingId(
|
|
230
|
+
this.socket.setRoutingId(this.preparedRoutingId(routingId));
|
|
201
231
|
}
|
|
202
232
|
connectToRoutingId(routingId, endpoint) {
|
|
203
233
|
this.requireOpen();
|
|
204
|
-
this.socket.options.setConnectRoutingId(
|
|
234
|
+
this.socket.options.setConnectRoutingId(this.preparedRoutingId(routingId));
|
|
205
235
|
this.connect(endpoint);
|
|
206
236
|
}
|
|
207
237
|
send(targetRid, parts) {
|
|
208
238
|
this.requireOpen();
|
|
209
239
|
requireParts(parts);
|
|
210
|
-
return (0, node_backend_adapter_support_1.submitBindingAsyncSend)(this.socket.send(
|
|
240
|
+
return (0, node_backend_adapter_support_1.submitBindingAsyncSend)(this.socket.send(this.preparedRoutingId(targetRid)), parts);
|
|
211
241
|
}
|
|
212
242
|
submitSend(targetRid, parts) {
|
|
213
243
|
this.requireOpen();
|
|
214
244
|
requireParts(parts);
|
|
215
|
-
return (0, node_backend_adapter_support_1.submitBindingSend)(this.socket.send(
|
|
245
|
+
return (0, node_backend_adapter_support_1.submitBindingSend)(this.socket.send(this.preparedRoutingId(targetRid)), parts);
|
|
216
246
|
}
|
|
217
|
-
|
|
218
|
-
this.requireOpen();
|
|
219
|
-
const deadlineMs = performance.now() + timeoutMs;
|
|
247
|
+
request(targetRid, parts, timeoutMs, recordReceived, onAdmitted) {
|
|
220
248
|
let submission;
|
|
249
|
+
const deadlineMs = performance.now() + timeoutMs;
|
|
221
250
|
try {
|
|
222
|
-
|
|
251
|
+
this.requireOpen();
|
|
252
|
+
submission = appendRequestParts(this.socket.request(this.preparedRoutingId(targetRid)), parts)
|
|
223
253
|
.timeout(timeoutMs)
|
|
224
254
|
.submit();
|
|
225
255
|
}
|
|
226
256
|
catch (error) {
|
|
227
|
-
|
|
228
|
-
}
|
|
229
|
-
try {
|
|
230
|
-
const replies = await (0, node_backend_adapter_support_1.bindingRequestReply)(submission, deadlineMs, recordReceived);
|
|
231
|
-
return copyAndClose(replies);
|
|
232
|
-
}
|
|
233
|
-
catch (error) {
|
|
234
|
-
throw (0, node_backend_adapter_support_1.translateBindingResultError)(error, 'completion');
|
|
257
|
+
return Promise.reject((0, node_backend_adapter_support_1.translateBindingResultError)(error, 'submit'));
|
|
235
258
|
}
|
|
259
|
+
return requestReply(submission, deadlineMs, recordReceived, onAdmitted);
|
|
236
260
|
}
|
|
237
261
|
routesSnapshot() {
|
|
238
262
|
this.requireOpen();
|
|
@@ -243,14 +267,7 @@ class NodeRawRouterPort extends NodeRawSocketPort {
|
|
|
243
267
|
}
|
|
244
268
|
receive(dontWait = false) {
|
|
245
269
|
this.requireOpen();
|
|
246
|
-
return receiveRecord(this.socket, dontWait,
|
|
247
|
-
const current = this.nextIncomingRequestSequence;
|
|
248
|
-
this.nextIncomingRequestSequence =
|
|
249
|
-
current === BigInt(Number.MAX_SAFE_INTEGER) ? 1n : current + 1n;
|
|
250
|
-
return current;
|
|
251
|
-
}, (targetRid, replyToken, parts) => {
|
|
252
|
-
appendReplyParts(this.socket.reply(bindingRoutingId(targetRid), replyToken), parts).submit();
|
|
253
|
-
});
|
|
270
|
+
return receiveRecord(this.socket, dontWait, this.nextRequestSequence, this.replyParts);
|
|
254
271
|
}
|
|
255
272
|
}
|
|
256
273
|
class NodeRawDealerPort extends NodeRawSocketPort {
|
|
@@ -266,23 +283,17 @@ class NodeRawDealerPort extends NodeRawSocketPort {
|
|
|
266
283
|
requireParts(parts);
|
|
267
284
|
return (0, node_backend_adapter_support_1.submitBindingAsyncSend)(this.socket.send(), parts);
|
|
268
285
|
}
|
|
269
|
-
|
|
270
|
-
this.requireOpen();
|
|
271
|
-
const deadlineMs = performance.now() + timeoutMs;
|
|
286
|
+
request(parts, timeoutMs, onAdmitted) {
|
|
272
287
|
let submission;
|
|
288
|
+
const deadlineMs = performance.now() + timeoutMs;
|
|
273
289
|
try {
|
|
290
|
+
this.requireOpen();
|
|
274
291
|
submission = appendRequestParts(this.socket.request(), parts).timeout(timeoutMs).submit();
|
|
275
292
|
}
|
|
276
293
|
catch (error) {
|
|
277
|
-
|
|
278
|
-
}
|
|
279
|
-
try {
|
|
280
|
-
const replies = await (0, node_backend_adapter_support_1.bindingRequestReply)(submission, deadlineMs);
|
|
281
|
-
return copyAndClose(replies);
|
|
282
|
-
}
|
|
283
|
-
catch (error) {
|
|
284
|
-
throw (0, node_backend_adapter_support_1.translateBindingResultError)(error, 'completion');
|
|
294
|
+
return Promise.reject((0, node_backend_adapter_support_1.translateBindingResultError)(error, 'submit'));
|
|
285
295
|
}
|
|
296
|
+
return requestReply(submission, deadlineMs, undefined, onAdmitted);
|
|
286
297
|
}
|
|
287
298
|
receive(dontWait = false) {
|
|
288
299
|
this.requireOpen();
|
|
@@ -343,56 +354,97 @@ function requireParts(parts) {
|
|
|
343
354
|
throw new TypeError('Raw multipart operation requires at least one part.');
|
|
344
355
|
return parts;
|
|
345
356
|
}
|
|
357
|
+
const EMPTY_SOURCE_ROUTE = Buffer.alloc(0);
|
|
358
|
+
/**
|
|
359
|
+
* One received binding record. The payload Buffers are the binding's own
|
|
360
|
+
* `data()` storage, retained under the runtime payload policy instead of a
|
|
361
|
+
* second Framework copy; closing the record releases the binding handles.
|
|
362
|
+
*/
|
|
363
|
+
class NodeRawReceivedRecord {
|
|
364
|
+
received;
|
|
365
|
+
sourceRid;
|
|
366
|
+
sourceRoute;
|
|
367
|
+
routeGeneration;
|
|
368
|
+
requestSeq;
|
|
369
|
+
reply;
|
|
370
|
+
parts;
|
|
371
|
+
closed = false;
|
|
372
|
+
constructor(received, nextRequestSequence, reply) {
|
|
373
|
+
this.received = received;
|
|
374
|
+
const routingId = received.routingId;
|
|
375
|
+
this.sourceRid = routingId?.toString() ?? '';
|
|
376
|
+
this.sourceRoute = routingId?.toBytes() ?? EMPTY_SOURCE_ROUTE;
|
|
377
|
+
this.routeGeneration = received.routeGeneration;
|
|
378
|
+
const replyToken = received.replyToken;
|
|
379
|
+
if (replyToken !== null) {
|
|
380
|
+
this.requestSeq = nextRequestSequence?.();
|
|
381
|
+
if (reply === undefined) {
|
|
382
|
+
const operation = received.reply();
|
|
383
|
+
this.reply = (parts) => appendReplyParts(operation, parts).submit();
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
const target = routingId ?? bindingRoutingId(EMPTY_SOURCE_ROUTE);
|
|
387
|
+
this.reply = (parts) => reply(target, replyToken, parts);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
const parts = received.parts;
|
|
391
|
+
const retained = new Array(parts.length);
|
|
392
|
+
for (let index = 0; index < parts.length; index++)
|
|
393
|
+
retained[index] = runtime_message_1.ZLinkBufferMessage.retainPayload(parts[index]);
|
|
394
|
+
this.parts = retained;
|
|
395
|
+
}
|
|
396
|
+
close() {
|
|
397
|
+
if (this.closed)
|
|
398
|
+
return;
|
|
399
|
+
this.closed = true;
|
|
400
|
+
this.received.close();
|
|
401
|
+
}
|
|
402
|
+
}
|
|
346
403
|
function receiveRecord(socket, dontWait, nextRequestSequence, reply) {
|
|
347
404
|
const received = new zlink_1.Received();
|
|
348
405
|
if (!socket.recv(received, dontWait ? zlink_1.RecvFlags.DontWait : zlink_1.RecvFlags.None)) {
|
|
349
406
|
received.close();
|
|
350
407
|
return undefined;
|
|
351
408
|
}
|
|
352
|
-
let closed = false;
|
|
353
409
|
try {
|
|
354
|
-
|
|
355
|
-
const sourceRoute = received.routingId?.toBytes() ?? Buffer.alloc(0);
|
|
356
|
-
const requestSeq = received.replyToken === null ? undefined : nextRequestSequence?.();
|
|
357
|
-
const replyToken = received.replyToken;
|
|
358
|
-
const receivedReply = replyToken === null
|
|
359
|
-
? undefined
|
|
360
|
-
: reply === undefined
|
|
361
|
-
? received.reply()
|
|
362
|
-
: (parts) => reply(sourceRoute, replyToken, parts);
|
|
363
|
-
return {
|
|
364
|
-
sourceRid,
|
|
365
|
-
sourceRoute,
|
|
366
|
-
routeGeneration: received.routeGeneration,
|
|
367
|
-
...(requestSeq === undefined ? {} : { requestSeq }),
|
|
368
|
-
...(receivedReply === undefined
|
|
369
|
-
? {}
|
|
370
|
-
: {
|
|
371
|
-
reply: (parts) => {
|
|
372
|
-
if (typeof receivedReply === 'function') {
|
|
373
|
-
receivedReply(parts);
|
|
374
|
-
return;
|
|
375
|
-
}
|
|
376
|
-
appendReplyParts(receivedReply, parts).submit();
|
|
377
|
-
}
|
|
378
|
-
}),
|
|
379
|
-
parts: received.parts.map((part) => part.toBytes()),
|
|
380
|
-
close: () => {
|
|
381
|
-
if (closed)
|
|
382
|
-
return;
|
|
383
|
-
closed = true;
|
|
384
|
-
received.close();
|
|
385
|
-
}
|
|
386
|
-
};
|
|
410
|
+
return new NodeRawReceivedRecord(received, nextRequestSequence, reply);
|
|
387
411
|
}
|
|
388
412
|
catch (error) {
|
|
389
413
|
received.close();
|
|
390
414
|
throw error;
|
|
391
415
|
}
|
|
392
416
|
}
|
|
393
|
-
|
|
417
|
+
/**
|
|
418
|
+
* Continues once on the binding reply. Admission that completed at submit is
|
|
419
|
+
* confirmed in this turn; a backpressured submission keeps the admission
|
|
420
|
+
* wait that bounds it by the request deadline.
|
|
421
|
+
*/
|
|
422
|
+
function requestReply(submission, deadlineMs, recordReceived, onAdmitted) {
|
|
423
|
+
if (submission.result === runtime_values_1.SubmitResult.Backpressured) {
|
|
424
|
+
return (0, node_backend_adapter_support_1.bindingRequestReply)(submission, deadlineMs, recordReceived, onAdmitted).then(retainAndClose, rejectCompletion);
|
|
425
|
+
}
|
|
426
|
+
try {
|
|
427
|
+
onAdmitted?.();
|
|
428
|
+
}
|
|
429
|
+
catch (error) {
|
|
430
|
+
return Promise.reject((0, node_backend_adapter_support_1.translateBindingResultError)(error, 'completion'));
|
|
431
|
+
}
|
|
432
|
+
return submission.reply.then((replies) => {
|
|
433
|
+
try {
|
|
434
|
+
recordReceived?.();
|
|
435
|
+
return retainAndClose(replies);
|
|
436
|
+
}
|
|
437
|
+
catch (error) {
|
|
438
|
+
throw (0, node_backend_adapter_support_1.translateBindingResultError)(error, 'completion');
|
|
439
|
+
}
|
|
440
|
+
}, rejectCompletion);
|
|
441
|
+
}
|
|
442
|
+
function rejectCompletion(error) {
|
|
443
|
+
throw (0, node_backend_adapter_support_1.translateBindingResultError)(error, 'completion');
|
|
444
|
+
}
|
|
445
|
+
function retainAndClose(messages) {
|
|
394
446
|
try {
|
|
395
|
-
return messages.map((message) =>
|
|
447
|
+
return messages.map((message) => runtime_message_1.ZLinkBufferMessage.retainPayload(message));
|
|
396
448
|
}
|
|
397
449
|
finally {
|
|
398
450
|
for (const message of messages)
|
|
@@ -7,7 +7,7 @@ import { type RawServiceRequestResult } from '../../foundation/raw-service-mesh-
|
|
|
7
7
|
import type { ServiceInstanceActivationRecoveryEnvelope } from '../../foundation/service-instance-activation-recovery-codec';
|
|
8
8
|
import { type MeshOperationId, type MeshPeerEntry, type MeshPublisher, type ReadyBatch, type ReadyRecord, type ReceiveBatch, type ServiceSpot, type StreamSessionService, MeshNodeRuntimeState } from '../../foundation/service-runtime-contracts';
|
|
9
9
|
import type { ServiceActorRef, ServiceSpotState } from '../../foundation/service-stateful-registry';
|
|
10
|
-
import { type ServiceAsyncInstanceActivationAuthority, type ServiceInstanceApplicationLifecycle, type ServicePendingInstanceActivation, type ServiceSpotMessageFollowSeal, type ServiceUserSpotOperationHandler, type ServiceUserSpotOperationResult } from '../../foundation/service-stateful-runtime';
|
|
10
|
+
import { type ServiceAsyncInstanceActivationAuthority, type ServiceInstanceApplicationLifecycle, type ServicePendingInstanceActivation, type ServiceSessionOwnerDescriptors, type ServiceSpotMessageFollowSeal, type ServiceUserSpotOperationHandler, type ServiceUserSpotOperationResult } from '../../foundation/service-stateful-runtime';
|
|
11
11
|
import type { ServiceActorCreateRecord, ServiceDirectSpotRouteFence, ServiceInstanceActivationTarget, ServiceInstanceColdActivationTarget, ServiceInstanceRouteFence, ServiceSpotRouteFence, ServiceUserSpotCloseRecord, ServiceUserSpotCreateRecord } from '../../foundation/service-stateful-wire-codec';
|
|
12
12
|
import type { ServiceNodeDescriptor } from '../../foundation/service-topology-registry';
|
|
13
13
|
import { type ServiceApplicationPayload } from '../../foundation/service-wire-m6a-codec';
|
|
@@ -30,7 +30,7 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
|
|
|
30
30
|
private readonly channels;
|
|
31
31
|
private readonly peerIntents;
|
|
32
32
|
private completionHandler?;
|
|
33
|
-
|
|
33
|
+
readonly routingId: string;
|
|
34
34
|
private readonly lifecycleGeneration;
|
|
35
35
|
private bindEndpoint?;
|
|
36
36
|
private advertiseHost?;
|
|
@@ -38,7 +38,8 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
|
|
|
38
38
|
private stateful?;
|
|
39
39
|
private readyHandler?;
|
|
40
40
|
private maintenanceTimer?;
|
|
41
|
-
private
|
|
41
|
+
private maintenanceDueMs;
|
|
42
|
+
private pumpTask?;
|
|
42
43
|
private readable;
|
|
43
44
|
private readonly onReadable;
|
|
44
45
|
private readonly onMaintenance;
|
|
@@ -55,6 +56,8 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
|
|
|
55
56
|
private protocolError?;
|
|
56
57
|
private messageFollowHandler?;
|
|
57
58
|
private dispatchErrors?;
|
|
59
|
+
private sessionOwnerDescriptors?;
|
|
60
|
+
private requestSourceAcceptance?;
|
|
58
61
|
private readonly peerDisconnectedHandlers;
|
|
59
62
|
constructor(meshName: string, routingId: string | undefined, bindingPort: ZLinkRawBindingPort, applicationJobQueue?: ApplicationJobQueuePort | undefined, applicationJobReceiveFlowFailureSink?: ((error: unknown) => void) | undefined, peerAdmissionSealed?: (() => boolean) | undefined, infrastructureTaskRunner?: import("../../spots/spot-actor-join-dispatch").ZLinkDetachedTaskRunner | undefined);
|
|
60
63
|
configureObjectPlacement(options: {
|
|
@@ -70,6 +73,7 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
|
|
|
70
73
|
readonly owner: string;
|
|
71
74
|
}) => void): void;
|
|
72
75
|
setDispatchErrorReporter(reporter: ZLinkDispatchErrorReporter): void;
|
|
76
|
+
setSessionOwnerDescriptors(source: ServiceSessionOwnerDescriptors): void;
|
|
73
77
|
setProtocolErrorHandler(handler: (record: {
|
|
74
78
|
readonly sourceNodeRid: string;
|
|
75
79
|
readonly request: boolean;
|
|
@@ -80,16 +84,17 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
|
|
|
80
84
|
selectObjectPlacement(stableType: string): ZLinkBackendObjectPlacement;
|
|
81
85
|
instanceSpotPlacementTypes(): readonly string[];
|
|
82
86
|
sendToMissingInstanceSpot(target: ServiceInstanceColdActivationTarget, parts: MessageLike | readonly MessageLike[], deadlineUnixMs: bigint, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>): Promise<SubmitResult>;
|
|
83
|
-
requestToMissingInstanceSpot(target: ServiceInstanceColdActivationTarget, parts: MessageLike | readonly MessageLike[], deadlineUnixMs: bigint, sourceSpotId?: string, metadata?: ReadonlyMap<string, string
|
|
87
|
+
requestToMissingInstanceSpot(target: ServiceInstanceColdActivationTarget, parts: MessageLike | readonly MessageLike[], deadlineUnixMs: bigint, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, onAdmitted?: () => void): MeshOperationId;
|
|
84
88
|
setRoutingId(routingId: unknown): void;
|
|
85
89
|
setBind(endpoint: string): void;
|
|
86
90
|
setAdvertiseHost(host: string): void;
|
|
87
91
|
start(): void;
|
|
88
92
|
setMessageFollowHandler(handler: (record: import('../../foundation/service-stateful-wire-codec').ServiceMessageFollowRecord) => void): void;
|
|
89
93
|
sendMessageFollowNotification(targetNodeRid: string, record: Omit<import('../../foundation/service-stateful-wire-codec').ServiceMessageFollowRecord, 'kind'>): Promise<boolean>;
|
|
90
|
-
shutdown(_timeoutMs: number): RequestResultValue
|
|
94
|
+
shutdown(_timeoutMs: number): Promise<RequestResultValue>;
|
|
95
|
+
cancelPendingOperations(reason: unknown): void;
|
|
91
96
|
publishDraining(): Promise<void>;
|
|
92
|
-
close(): void
|
|
97
|
+
close(): Promise<void>;
|
|
93
98
|
addChannelName(name: string): void;
|
|
94
99
|
setChannelWeight(name: string, weight: number): Promise<void>;
|
|
95
100
|
setPlacementWeight(weight: number): Promise<void>;
|
|
@@ -99,6 +104,7 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
|
|
|
99
104
|
readonly expectedSecurityIdentity?: string;
|
|
100
105
|
readonly expectedLifecycleGeneration?: bigint;
|
|
101
106
|
}): Promise<bigint>;
|
|
107
|
+
setRequestSourceAcceptance(acceptance: import('../contracts').ZLinkBackendRequestSourceAcceptance): void;
|
|
102
108
|
expectPeer(peer: {
|
|
103
109
|
readonly nodeRoutingId: string;
|
|
104
110
|
readonly endpoint: string;
|
|
@@ -114,19 +120,26 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
|
|
|
114
120
|
readonly endpoint: string;
|
|
115
121
|
}[]): void;
|
|
116
122
|
isObjectClientNodeDirectTarget(targetRid: unknown): boolean;
|
|
123
|
+
waitForPeerRoute(targetRid: unknown, lifecycleGeneration: bigint, deadlineUnixMs: bigint, signal?: AbortSignal): Promise<void>;
|
|
124
|
+
observePeerRoute(targetRid: unknown): import("../../foundation/durable-service-request").PeerRouteObservation;
|
|
125
|
+
hasPeerRouteOrConnectionIntent(targetRid: unknown, endpoint: string): boolean;
|
|
117
126
|
isPeerRouteReady(targetRid: unknown, lifecycleGeneration?: bigint): boolean;
|
|
118
|
-
sendToNode(targetRid: unknown, parts: MessageLike | readonly MessageLike[]): Promise<SubmitResultValue>;
|
|
127
|
+
sendToNode(targetRid: unknown, parts: MessageLike | readonly MessageLike[]): SubmitResultValue | Promise<SubmitResultValue>;
|
|
119
128
|
sendInfrastructureControl(targetRid: unknown, record: Uint8Array | readonly Uint8Array[]): Promise<SubmitResultValue>;
|
|
120
129
|
sendInfrastructureControlFrames(targetRid: unknown, frames: readonly Uint8Array[]): Promise<SubmitResultValue>;
|
|
121
130
|
requestInfrastructureControlFrames(targetRid: unknown, frames: readonly Uint8Array[], options?: {
|
|
122
131
|
readonly timeoutMs?: number;
|
|
132
|
+
readonly signal?: AbortSignal;
|
|
133
|
+
readonly onSubmitted?: (signal: AbortSignal) => Promise<void>;
|
|
123
134
|
}): Promise<readonly Uint8Array[]>;
|
|
124
135
|
requestToNode(targetRid: unknown, parts: MessageLike | readonly MessageLike[], options?: {
|
|
125
136
|
readonly timeoutMs?: number;
|
|
137
|
+
readonly onAdmitted?: () => void;
|
|
126
138
|
}): MeshOperationId;
|
|
127
139
|
sendToChannel(channelName: string, parts: MessageLike | readonly MessageLike[]): Promise<SubmitResultValue>;
|
|
128
140
|
requestToChannel(channelName: string, parts: MessageLike | readonly MessageLike[], options?: {
|
|
129
141
|
readonly timeoutMs?: number;
|
|
142
|
+
readonly onAdmitted?: () => void;
|
|
130
143
|
}): MeshOperationId;
|
|
131
144
|
status(): {
|
|
132
145
|
state: MeshNodeRuntimeState;
|
|
@@ -193,10 +206,10 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
|
|
|
193
206
|
entrySpotRouteFence(targetNodeRid: string, targetSpotId: string): ServiceDirectSpotRouteFence;
|
|
194
207
|
sealSpotMessageFollowIngress(source: ServiceDirectSpotRouteFence): ServiceSpotMessageFollowSeal | undefined;
|
|
195
208
|
abortSpotMessageFollowIngress(seal: ServiceSpotMessageFollowSeal): boolean;
|
|
196
|
-
commitSpotMessageFollowIngress(seal: ServiceSpotMessageFollowSeal, target: ServiceDirectSpotRouteFence, durationMs: number): Promise<boolean>;
|
|
209
|
+
commitSpotMessageFollowIngress(seal: ServiceSpotMessageFollowSeal, target: ServiceDirectSpotRouteFence | null, durationMs: number): Promise<boolean>;
|
|
197
210
|
forgetSpotRoute(spot: ServiceSpotRouteFence['spot'], authorityOwnerGeneration: bigint, storeVersion?: string): void;
|
|
198
211
|
sendToInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean): Promise<SubmitResult>;
|
|
199
|
-
requestInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs?: number, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean): MeshOperationId;
|
|
212
|
+
requestInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs?: number, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean, onAdmitted?: () => void): MeshOperationId;
|
|
200
213
|
actorLookup(actorId: string): {
|
|
201
214
|
actor: ServiceActorRef;
|
|
202
215
|
spotId: string;
|
|
@@ -223,20 +236,30 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
|
|
|
223
236
|
readonly phase: 'admission';
|
|
224
237
|
readonly transferId: string;
|
|
225
238
|
}, timeoutMs?: number): MeshOperationId;
|
|
226
|
-
sendToActor(actor: ZLinkBackendActorRef, parts: MessageLike | readonly MessageLike[]
|
|
239
|
+
sendToActor(actor: ZLinkBackendActorRef, parts: MessageLike | readonly MessageLike[], options?: {
|
|
240
|
+
readonly flags?: number;
|
|
241
|
+
readonly routeFence?: import('../../foundation/service-stateful-wire-codec').ServiceActorRouteFence;
|
|
242
|
+
}): Promise<SubmitResultValue>;
|
|
227
243
|
requestToActor(actor: ZLinkBackendActorRef, parts: MessageLike | readonly MessageLike[], options?: {
|
|
228
244
|
readonly timeoutMs?: number;
|
|
245
|
+
readonly onAdmitted?: () => void;
|
|
246
|
+
readonly routeFence?: import('../../foundation/service-stateful-wire-codec').ServiceActorRouteFence;
|
|
229
247
|
}): MeshOperationId;
|
|
248
|
+
acceptRelocatedActorTerminal(operation: {
|
|
249
|
+
readonly high: bigint;
|
|
250
|
+
readonly low: bigint;
|
|
251
|
+
}, replyRouteId: bigint, result: import('../../foundation/service-stateful-runtime').ServiceStatefulResult): 'terminalReceived' | 'alreadyTerminal' | undefined;
|
|
230
252
|
actorSendToActor(source: ZLinkBackendActorRef, target: ZLinkBackendActorRef, parts: MessageLike | readonly MessageLike[]): Promise<SubmitResultValue>;
|
|
231
253
|
actorRequestToActor(source: ZLinkBackendActorRef, target: ZLinkBackendActorRef, parts: MessageLike | readonly MessageLike[], options?: {
|
|
232
254
|
readonly timeoutMs?: number;
|
|
255
|
+
readonly onAdmitted?: () => void;
|
|
233
256
|
}): MeshOperationId;
|
|
234
257
|
sendActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, parts: MessageLike | readonly MessageLike[], _flags?: number): Promise<SubmitResultValue>;
|
|
235
258
|
closeActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, timeoutMs?: number): MeshOperationId;
|
|
236
259
|
leaveActor(actor: ZLinkBackendActorRef, expectedMembershipEpoch: bigint, timeoutMs?: number): MeshOperationId;
|
|
237
260
|
createStreamSessionService(stream: unknown): StreamSessionService;
|
|
238
261
|
sendFromSpot(source: ServiceSpotState, target: ServiceDirectSpotRouteFence, parts: MessageLike | readonly MessageLike[]): Promise<SubmitResultValue>;
|
|
239
|
-
requestFromSpot(source: ServiceSpotState, target: ServiceDirectSpotRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs: number): MeshOperationId;
|
|
262
|
+
requestFromSpot(source: ServiceSpotState, target: ServiceDirectSpotRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs: number, onAdmitted?: () => void): MeshOperationId;
|
|
240
263
|
closeSpot(state: ServiceSpotState): boolean;
|
|
241
264
|
publishFromSpot(state: ServiceSpotState, channelName: string, topic: string, parts: MessageLike | readonly MessageLike[]): Promise<void>;
|
|
242
265
|
setSpotSubscription(state: ServiceSpotState, channelName: string, topicFilter: string): void;
|
|
@@ -244,13 +267,23 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
|
|
|
244
267
|
clearSpotSubscriptions(state: ServiceSpotState): void;
|
|
245
268
|
private createDescriptor;
|
|
246
269
|
private resolveAdvertisedEndpoint;
|
|
270
|
+
/**
|
|
271
|
+
* Arms the one maintenance timer for the nearest management deadline
|
|
272
|
+
* (spec 08 §4.2): request expiry, liveness, or a pending peer handshake.
|
|
273
|
+
* An earlier deadline re-arms it; a later one keeps the armed time.
|
|
274
|
+
*/
|
|
247
275
|
private scheduleMaintenance;
|
|
248
276
|
private pump;
|
|
249
|
-
private
|
|
277
|
+
private runPump;
|
|
250
278
|
private notifyReady;
|
|
279
|
+
/**
|
|
280
|
+
* The raw registry takes a remote request's terminal and hands it here,
|
|
281
|
+
* where the Framework completion owner receives it in the same turn.
|
|
282
|
+
*/
|
|
283
|
+
private readonly requestObserver;
|
|
284
|
+
private observedOperation;
|
|
251
285
|
private observeCompletion;
|
|
252
286
|
private observeStateful;
|
|
253
|
-
private observeImmediateFailure;
|
|
254
287
|
private deliverCompletion;
|
|
255
288
|
private drainMailbox;
|
|
256
289
|
private requireRuntime;
|