@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
|
@@ -25,8 +25,10 @@ import {
|
|
|
25
25
|
submitBindingAsyncSend,
|
|
26
26
|
submitBindingSend
|
|
27
27
|
} from './node-backend-adapter-support';
|
|
28
|
-
import { isEndpointCloseIgnorableError } from './node-socket-backend-adapter';
|
|
28
|
+
import { disconnectSocketPeer, isEndpointCloseIgnorableError } from './node-socket-backend-adapter';
|
|
29
|
+
import { SubmitResult } from '../runtime-values';
|
|
29
30
|
import { ZLinkNodeEventLoopPoller } from './node-event-loop-poller';
|
|
31
|
+
import { ZLinkBufferMessage } from '../runtime-message';
|
|
30
32
|
import type {
|
|
31
33
|
ZLinkRawBindingPort,
|
|
32
34
|
ZLinkRawDealerPort,
|
|
@@ -226,6 +228,38 @@ abstract class NodeRawSocketPort<TSocket extends Socket> implements ZLinkRawSock
|
|
|
226
228
|
|
|
227
229
|
class NodeRawRouterPort extends NodeRawSocketPort<RouterSocket> implements ZLinkRawRouterPort {
|
|
228
230
|
private nextIncomingRequestSequence = 1n;
|
|
231
|
+
private readonly routingIds = new Map<string, BindingRoutingId>();
|
|
232
|
+
private readonly nextRequestSequence = () => {
|
|
233
|
+
const current = this.nextIncomingRequestSequence;
|
|
234
|
+
this.nextIncomingRequestSequence =
|
|
235
|
+
current === BigInt(Number.MAX_SAFE_INTEGER) ? 1n : current + 1n;
|
|
236
|
+
return current;
|
|
237
|
+
};
|
|
238
|
+
private readonly replyParts = (
|
|
239
|
+
targetRid: BindingRoutingId,
|
|
240
|
+
replyToken: ReplyToken,
|
|
241
|
+
parts: readonly Uint8Array[]
|
|
242
|
+
) => {
|
|
243
|
+
// The receive record keeps the binding RoutingId it was delivered with,
|
|
244
|
+
// so the reply addresses that route without rebuilding the identity.
|
|
245
|
+
appendReplyParts(this.socket.reply(targetRid, replyToken), parts).submit();
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
private preparedRoutingId(routingId: string | Uint8Array): BindingRoutingId {
|
|
249
|
+
if (typeof routingId !== 'string') return bindingRoutingId(routingId);
|
|
250
|
+
let prepared = this.routingIds.get(routingId);
|
|
251
|
+
if (prepared === undefined)
|
|
252
|
+
this.routingIds.set(routingId, (prepared = bindingRoutingId(routingId)));
|
|
253
|
+
return prepared;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
override close(): void {
|
|
257
|
+
try {
|
|
258
|
+
super.close();
|
|
259
|
+
} finally {
|
|
260
|
+
this.routingIds.clear();
|
|
261
|
+
}
|
|
262
|
+
}
|
|
229
263
|
|
|
230
264
|
setReceiveFlowState(state: 'running' | 'paused'): void {
|
|
231
265
|
this.requireOpen();
|
|
@@ -236,11 +270,7 @@ class NodeRawRouterPort extends NodeRawSocketPort<RouterSocket> implements ZLink
|
|
|
236
270
|
|
|
237
271
|
disconnectRid(routingId: string): void {
|
|
238
272
|
this.requireOpen();
|
|
239
|
-
(
|
|
240
|
-
this.socket as RouterSocket & {
|
|
241
|
-
disconnectRid(value: BindingRoutingId): void;
|
|
242
|
-
}
|
|
243
|
-
).disconnectRid(bindingRoutingId(routingId));
|
|
273
|
+
disconnectSocketPeer(this.socket, this.preparedRoutingId(routingId));
|
|
244
274
|
}
|
|
245
275
|
|
|
246
276
|
constructor(socket: RouterSocket, receiveTimeoutMs?: number) {
|
|
@@ -260,49 +290,45 @@ class NodeRawRouterPort extends NodeRawSocketPort<RouterSocket> implements ZLink
|
|
|
260
290
|
|
|
261
291
|
setRoutingId(routingId: string): void {
|
|
262
292
|
this.requireOpen();
|
|
263
|
-
this.socket.setRoutingId(
|
|
293
|
+
this.socket.setRoutingId(this.preparedRoutingId(routingId));
|
|
264
294
|
}
|
|
265
295
|
|
|
266
296
|
connectToRoutingId(routingId: string, endpoint: string): void {
|
|
267
297
|
this.requireOpen();
|
|
268
|
-
this.socket.options.setConnectRoutingId(
|
|
298
|
+
this.socket.options.setConnectRoutingId(this.preparedRoutingId(routingId));
|
|
269
299
|
this.connect(endpoint);
|
|
270
300
|
}
|
|
271
301
|
|
|
272
302
|
send(targetRid: string, parts: readonly Uint8Array[]): Promise<void> {
|
|
273
303
|
this.requireOpen();
|
|
274
304
|
requireParts(parts);
|
|
275
|
-
return submitBindingAsyncSend(this.socket.send(
|
|
305
|
+
return submitBindingAsyncSend(this.socket.send(this.preparedRoutingId(targetRid)), parts);
|
|
276
306
|
}
|
|
277
307
|
|
|
278
308
|
submitSend(targetRid: string, parts: readonly Uint8Array[]) {
|
|
279
309
|
this.requireOpen();
|
|
280
310
|
requireParts(parts);
|
|
281
|
-
return submitBindingSend(this.socket.send(
|
|
311
|
+
return submitBindingSend(this.socket.send(this.preparedRoutingId(targetRid)), parts);
|
|
282
312
|
}
|
|
283
313
|
|
|
284
|
-
|
|
314
|
+
request(
|
|
285
315
|
targetRid: string,
|
|
286
316
|
parts: readonly Uint8Array[],
|
|
287
317
|
timeoutMs: number,
|
|
288
|
-
recordReceived?: () => void
|
|
318
|
+
recordReceived?: () => void,
|
|
319
|
+
onAdmitted?: () => void
|
|
289
320
|
): Promise<readonly Buffer[]> {
|
|
290
|
-
this.requireOpen();
|
|
291
|
-
const deadlineMs = performance.now() + timeoutMs;
|
|
292
321
|
let submission: ReturnType<RequestSubmitOperation['submit']>;
|
|
322
|
+
const deadlineMs = performance.now() + timeoutMs;
|
|
293
323
|
try {
|
|
294
|
-
|
|
324
|
+
this.requireOpen();
|
|
325
|
+
submission = appendRequestParts(this.socket.request(this.preparedRoutingId(targetRid)), parts)
|
|
295
326
|
.timeout(timeoutMs)
|
|
296
327
|
.submit();
|
|
297
328
|
} catch (error) {
|
|
298
|
-
|
|
299
|
-
}
|
|
300
|
-
try {
|
|
301
|
-
const replies = await bindingRequestReply(submission, deadlineMs, recordReceived);
|
|
302
|
-
return copyAndClose(replies);
|
|
303
|
-
} catch (error) {
|
|
304
|
-
throw translateBindingResultError(error, 'completion');
|
|
329
|
+
return Promise.reject(translateBindingResultError(error, 'submit'));
|
|
305
330
|
}
|
|
331
|
+
return requestReply(submission, deadlineMs, recordReceived, onAdmitted);
|
|
306
332
|
}
|
|
307
333
|
|
|
308
334
|
routesSnapshot(): readonly ZLinkRawRouterRoute[] {
|
|
@@ -315,22 +341,7 @@ class NodeRawRouterPort extends NodeRawSocketPort<RouterSocket> implements ZLink
|
|
|
315
341
|
|
|
316
342
|
receive(dontWait = false): ZLinkRawReceivedRecord | undefined {
|
|
317
343
|
this.requireOpen();
|
|
318
|
-
return receiveRecord(
|
|
319
|
-
this.socket,
|
|
320
|
-
dontWait,
|
|
321
|
-
() => {
|
|
322
|
-
const current = this.nextIncomingRequestSequence;
|
|
323
|
-
this.nextIncomingRequestSequence =
|
|
324
|
-
current === BigInt(Number.MAX_SAFE_INTEGER) ? 1n : current + 1n;
|
|
325
|
-
return current;
|
|
326
|
-
},
|
|
327
|
-
(targetRid, replyToken, parts) => {
|
|
328
|
-
appendReplyParts(
|
|
329
|
-
this.socket.reply(bindingRoutingId(targetRid), replyToken),
|
|
330
|
-
parts
|
|
331
|
-
).submit();
|
|
332
|
-
}
|
|
333
|
-
);
|
|
344
|
+
return receiveRecord(this.socket, dontWait, this.nextRequestSequence, this.replyParts);
|
|
334
345
|
}
|
|
335
346
|
}
|
|
336
347
|
|
|
@@ -350,21 +361,20 @@ class NodeRawDealerPort extends NodeRawSocketPort<DealerSocket> implements ZLink
|
|
|
350
361
|
return submitBindingAsyncSend(this.socket.send(), parts);
|
|
351
362
|
}
|
|
352
363
|
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
364
|
+
request(
|
|
365
|
+
parts: readonly Uint8Array[],
|
|
366
|
+
timeoutMs: number,
|
|
367
|
+
onAdmitted?: () => void
|
|
368
|
+
): Promise<readonly Buffer[]> {
|
|
356
369
|
let submission: ReturnType<RequestSubmitOperation['submit']>;
|
|
370
|
+
const deadlineMs = performance.now() + timeoutMs;
|
|
357
371
|
try {
|
|
372
|
+
this.requireOpen();
|
|
358
373
|
submission = appendRequestParts(this.socket.request(), parts).timeout(timeoutMs).submit();
|
|
359
374
|
} catch (error) {
|
|
360
|
-
|
|
361
|
-
}
|
|
362
|
-
try {
|
|
363
|
-
const replies = await bindingRequestReply(submission, deadlineMs);
|
|
364
|
-
return copyAndClose(replies);
|
|
365
|
-
} catch (error) {
|
|
366
|
-
throw translateBindingResultError(error, 'completion');
|
|
375
|
+
return Promise.reject(translateBindingResultError(error, 'submit'));
|
|
367
376
|
}
|
|
377
|
+
return requestReply(submission, deadlineMs, undefined, onAdmitted);
|
|
368
378
|
}
|
|
369
379
|
|
|
370
380
|
receive(dontWait = false): ZLinkRawReceivedRecord | undefined {
|
|
@@ -436,11 +446,61 @@ function requireParts(parts: readonly Uint8Array[]): [Uint8Array, ...Uint8Array[
|
|
|
436
446
|
}
|
|
437
447
|
|
|
438
448
|
type RawReceivedReply = (
|
|
439
|
-
targetRid:
|
|
449
|
+
targetRid: BindingRoutingId,
|
|
440
450
|
replyToken: ReplyToken,
|
|
441
451
|
parts: readonly Uint8Array[]
|
|
442
452
|
) => void;
|
|
443
453
|
|
|
454
|
+
const EMPTY_SOURCE_ROUTE = Buffer.alloc(0);
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* One received binding record. The payload Buffers are the binding's own
|
|
458
|
+
* `data()` storage, retained under the runtime payload policy instead of a
|
|
459
|
+
* second Framework copy; closing the record releases the binding handles.
|
|
460
|
+
*/
|
|
461
|
+
class NodeRawReceivedRecord implements ZLinkRawReceivedRecord {
|
|
462
|
+
readonly sourceRid: string;
|
|
463
|
+
readonly sourceRoute: Uint8Array;
|
|
464
|
+
readonly routeGeneration: bigint;
|
|
465
|
+
readonly requestSeq?: bigint;
|
|
466
|
+
readonly reply?: (parts: readonly Uint8Array[]) => void;
|
|
467
|
+
readonly parts: readonly Buffer[];
|
|
468
|
+
private closed = false;
|
|
469
|
+
|
|
470
|
+
constructor(
|
|
471
|
+
private readonly received: Received,
|
|
472
|
+
nextRequestSequence: (() => bigint) | undefined,
|
|
473
|
+
reply: RawReceivedReply | undefined
|
|
474
|
+
) {
|
|
475
|
+
const routingId = received.routingId;
|
|
476
|
+
this.sourceRid = routingId?.toString() ?? '';
|
|
477
|
+
this.sourceRoute = routingId?.toBytes() ?? EMPTY_SOURCE_ROUTE;
|
|
478
|
+
this.routeGeneration = received.routeGeneration;
|
|
479
|
+
const replyToken = received.replyToken;
|
|
480
|
+
if (replyToken !== null) {
|
|
481
|
+
this.requestSeq = nextRequestSequence?.();
|
|
482
|
+
if (reply === undefined) {
|
|
483
|
+
const operation = received.reply();
|
|
484
|
+
this.reply = (parts) => appendReplyParts(operation, parts).submit();
|
|
485
|
+
} else {
|
|
486
|
+
const target = routingId ?? bindingRoutingId(EMPTY_SOURCE_ROUTE);
|
|
487
|
+
this.reply = (parts) => reply(target, replyToken, parts);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
const parts = received.parts;
|
|
491
|
+
const retained = new Array<Buffer>(parts.length);
|
|
492
|
+
for (let index = 0; index < parts.length; index++)
|
|
493
|
+
retained[index] = ZLinkBufferMessage.retainPayload(parts[index]!);
|
|
494
|
+
this.parts = retained;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
close(): void {
|
|
498
|
+
if (this.closed) return;
|
|
499
|
+
this.closed = true;
|
|
500
|
+
this.received.close();
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
|
|
444
504
|
function receiveRecord(
|
|
445
505
|
socket: Pick<RouterSocket | DealerSocket, 'recv'>,
|
|
446
506
|
dontWait: boolean,
|
|
@@ -452,50 +512,53 @@ function receiveRecord(
|
|
|
452
512
|
received.close();
|
|
453
513
|
return undefined;
|
|
454
514
|
}
|
|
455
|
-
let closed = false;
|
|
456
515
|
try {
|
|
457
|
-
|
|
458
|
-
const sourceRoute = received.routingId?.toBytes() ?? Buffer.alloc(0);
|
|
459
|
-
const requestSeq = received.replyToken === null ? undefined : nextRequestSequence?.();
|
|
460
|
-
const replyToken = received.replyToken;
|
|
461
|
-
const receivedReply =
|
|
462
|
-
replyToken === null
|
|
463
|
-
? undefined
|
|
464
|
-
: reply === undefined
|
|
465
|
-
? received.reply()
|
|
466
|
-
: (parts: readonly Uint8Array[]) => reply(sourceRoute, replyToken, parts);
|
|
467
|
-
return {
|
|
468
|
-
sourceRid,
|
|
469
|
-
sourceRoute,
|
|
470
|
-
routeGeneration: received.routeGeneration,
|
|
471
|
-
...(requestSeq === undefined ? {} : { requestSeq }),
|
|
472
|
-
...(receivedReply === undefined
|
|
473
|
-
? {}
|
|
474
|
-
: {
|
|
475
|
-
reply: (parts: readonly Uint8Array[]) => {
|
|
476
|
-
if (typeof receivedReply === 'function') {
|
|
477
|
-
receivedReply(parts);
|
|
478
|
-
return;
|
|
479
|
-
}
|
|
480
|
-
appendReplyParts(receivedReply, parts).submit();
|
|
481
|
-
}
|
|
482
|
-
}),
|
|
483
|
-
parts: received.parts.map((part) => part.toBytes()),
|
|
484
|
-
close: () => {
|
|
485
|
-
if (closed) return;
|
|
486
|
-
closed = true;
|
|
487
|
-
received.close();
|
|
488
|
-
}
|
|
489
|
-
};
|
|
516
|
+
return new NodeRawReceivedRecord(received, nextRequestSequence, reply);
|
|
490
517
|
} catch (error) {
|
|
491
518
|
received.close();
|
|
492
519
|
throw error;
|
|
493
520
|
}
|
|
494
521
|
}
|
|
495
522
|
|
|
496
|
-
|
|
523
|
+
/**
|
|
524
|
+
* Continues once on the binding reply. Admission that completed at submit is
|
|
525
|
+
* confirmed in this turn; a backpressured submission keeps the admission
|
|
526
|
+
* wait that bounds it by the request deadline.
|
|
527
|
+
*/
|
|
528
|
+
function requestReply(
|
|
529
|
+
submission: ReturnType<RequestSubmitOperation['submit']>,
|
|
530
|
+
deadlineMs: number,
|
|
531
|
+
recordReceived: (() => void) | undefined,
|
|
532
|
+
onAdmitted: (() => void) | undefined
|
|
533
|
+
): Promise<readonly Buffer[]> {
|
|
534
|
+
if (submission.result === SubmitResult.Backpressured) {
|
|
535
|
+
return bindingRequestReply(submission, deadlineMs, recordReceived, onAdmitted).then(
|
|
536
|
+
retainAndClose,
|
|
537
|
+
rejectCompletion
|
|
538
|
+
);
|
|
539
|
+
}
|
|
540
|
+
try {
|
|
541
|
+
onAdmitted?.();
|
|
542
|
+
} catch (error) {
|
|
543
|
+
return Promise.reject(translateBindingResultError(error, 'completion'));
|
|
544
|
+
}
|
|
545
|
+
return submission.reply.then((replies) => {
|
|
546
|
+
try {
|
|
547
|
+
recordReceived?.();
|
|
548
|
+
return retainAndClose(replies);
|
|
549
|
+
} catch (error) {
|
|
550
|
+
throw translateBindingResultError(error, 'completion');
|
|
551
|
+
}
|
|
552
|
+
}, rejectCompletion);
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
function rejectCompletion(error: unknown): never {
|
|
556
|
+
throw translateBindingResultError(error, 'completion');
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
function retainAndClose(messages: readonly Message[]): readonly Buffer[] {
|
|
497
560
|
try {
|
|
498
|
-
return messages.map((message) =>
|
|
561
|
+
return messages.map((message) => ZLinkBufferMessage.retainPayload(message));
|
|
499
562
|
} finally {
|
|
500
563
|
for (const message of messages) message.close();
|
|
501
564
|
}
|