@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
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ZLinkRuntimeAdmissionGate = void 0;
|
|
4
4
|
exports.shouldCompactBackingArray = shouldCompactBackingArray;
|
|
5
5
|
const framework_errors_internal_1 = require("./framework-errors-internal");
|
|
6
|
+
const abort_1 = require("./abort");
|
|
6
7
|
const BACKING_ARRAY_COMPACTION_MIN_HEAD = 1024;
|
|
7
8
|
/** 소비한 배열 prefix가 정리 조건에 도달했는지 판정합니다. */
|
|
8
9
|
function shouldCompactBackingArray(head, length) {
|
|
@@ -57,35 +58,59 @@ class ZLinkRuntimeAdmissionGate {
|
|
|
57
58
|
}
|
|
58
59
|
}
|
|
59
60
|
claim(meshName, operation) {
|
|
61
|
+
const state = this.enter(meshName, operation);
|
|
62
|
+
let closed = false;
|
|
63
|
+
return {
|
|
64
|
+
close: () => {
|
|
65
|
+
if (closed)
|
|
66
|
+
return;
|
|
67
|
+
closed = true;
|
|
68
|
+
exitAdmission(state);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Runs one admitted unit of work. Work that completes synchronously leaves
|
|
74
|
+
* admission in the same turn; asynchronous work leaves it from the single
|
|
75
|
+
* continuation on its result.
|
|
76
|
+
*/
|
|
77
|
+
run(meshName, operation, work, onRejected) {
|
|
78
|
+
let state;
|
|
79
|
+
let result;
|
|
80
|
+
try {
|
|
81
|
+
state = this.enter(meshName, operation);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
// The domain owns admission rejection completion, just as it owns handler failure.
|
|
85
|
+
return onRejected === undefined ? Promise.reject(error) : onRejected(error);
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
result = work();
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
exitAdmission(state);
|
|
92
|
+
return Promise.reject(error);
|
|
93
|
+
}
|
|
94
|
+
if (!(0, abort_1.isPromiseLike)(result)) {
|
|
95
|
+
exitAdmission(state);
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
return Promise.resolve(result).then((value) => {
|
|
99
|
+
exitAdmission(state);
|
|
100
|
+
return value;
|
|
101
|
+
}, (error) => {
|
|
102
|
+
exitAdmission(state);
|
|
103
|
+
throw error;
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
enter(meshName, operation) {
|
|
60
107
|
const state = this.requireState(meshName);
|
|
61
108
|
if (this.ownerAdmissionOpen() && !state.sealed) {
|
|
62
109
|
state.active += 1;
|
|
63
|
-
|
|
64
|
-
return {
|
|
65
|
-
close: () => {
|
|
66
|
-
if (closed)
|
|
67
|
-
return;
|
|
68
|
-
closed = true;
|
|
69
|
-
state.active -= 1;
|
|
70
|
-
if (state.active === 0) {
|
|
71
|
-
let resolve;
|
|
72
|
-
while ((resolve = takeWaiter(state)) !== undefined)
|
|
73
|
-
resolve();
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
};
|
|
110
|
+
return state;
|
|
77
111
|
}
|
|
78
112
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(state.sealedReason, `${operation} was rejected because framework admission is closed.`);
|
|
79
113
|
}
|
|
80
|
-
async run(meshName, operation, work) {
|
|
81
|
-
const claim = this.claim(meshName, operation);
|
|
82
|
-
try {
|
|
83
|
-
return await work();
|
|
84
|
-
}
|
|
85
|
-
finally {
|
|
86
|
-
claim.close();
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
114
|
awaitZero(meshName, signal) {
|
|
90
115
|
const state = this.requireState(meshName);
|
|
91
116
|
if (state.active === 0)
|
|
@@ -150,6 +175,14 @@ class ZLinkRuntimeAdmissionGate {
|
|
|
150
175
|
}
|
|
151
176
|
}
|
|
152
177
|
exports.ZLinkRuntimeAdmissionGate = ZLinkRuntimeAdmissionGate;
|
|
178
|
+
function exitAdmission(state) {
|
|
179
|
+
state.active -= 1;
|
|
180
|
+
if (state.active === 0) {
|
|
181
|
+
let resolve;
|
|
182
|
+
while ((resolve = takeWaiter(state)) !== undefined)
|
|
183
|
+
resolve();
|
|
184
|
+
}
|
|
185
|
+
}
|
|
153
186
|
function takeWaiter(state) {
|
|
154
187
|
advanceWaiterHead(state);
|
|
155
188
|
const waiter = state.waiters[state.waiterHead];
|
|
@@ -10,33 +10,31 @@ export interface IngressRecordPort {
|
|
|
10
10
|
*/
|
|
11
11
|
export declare class ApplicationIngressRecordOwner {
|
|
12
12
|
private readonly shared;
|
|
13
|
-
private
|
|
13
|
+
private stop?;
|
|
14
14
|
private closed;
|
|
15
15
|
private constructor();
|
|
16
16
|
static create(queue: ApplicationJobQueuePort, initialPermit: ApplicationJobPermitPort, record: IngressRecordPort): ApplicationIngressRecordOwner;
|
|
17
17
|
retain(): ApplicationIngressRecordOwner;
|
|
18
18
|
takeInitial(domain: ApplicationJobRecordDomain): ApplicationJobRecordLease;
|
|
19
|
-
acquire(domain: ApplicationJobRecordDomain, signal?: AbortSignal): Promise<ApplicationJobRecordLease>;
|
|
19
|
+
acquire(domain: ApplicationJobRecordDomain, signal?: AbortSignal): ApplicationJobRecordLease | Promise<ApplicationJobRecordLease>;
|
|
20
|
+
private acquireAdditional;
|
|
20
21
|
close(): void;
|
|
21
22
|
private requireOpen;
|
|
22
23
|
}
|
|
23
24
|
/** Queue-permit child of one shared raw ingress record. */
|
|
24
25
|
export declare class ApplicationJobRecordLease implements ApplicationJobPermitPort {
|
|
25
26
|
private readonly shared;
|
|
26
|
-
private
|
|
27
|
+
private permit;
|
|
27
28
|
private ingressClosed;
|
|
28
|
-
private permitReleased;
|
|
29
29
|
private processingTerminal;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
constructor(shared: SharedIngressRecordState, permit: ApplicationJobPermitPort);
|
|
30
|
+
detachedForHandlerTurn: boolean;
|
|
31
|
+
constructor(shared: SharedIngressRecordState, permit: ApplicationJobPermitPort | undefined);
|
|
33
32
|
get origin(): ApplicationJobOrigin;
|
|
34
33
|
markApplicationQueued(): void;
|
|
35
34
|
detachForHandlerTurn(): void;
|
|
36
35
|
releaseBeforeHandler(): void;
|
|
37
36
|
releaseAfterInternalProcessing(): void;
|
|
38
37
|
close(): void;
|
|
39
|
-
private releasePermit;
|
|
40
38
|
private releaseJobIfTerminal;
|
|
41
39
|
}
|
|
42
40
|
declare class SharedIngressRecordState {
|
|
@@ -8,7 +8,7 @@ exports.ApplicationJobRecordLease = exports.ApplicationIngressRecordOwner = void
|
|
|
8
8
|
*/
|
|
9
9
|
class ApplicationIngressRecordOwner {
|
|
10
10
|
shared;
|
|
11
|
-
stop
|
|
11
|
+
stop;
|
|
12
12
|
closed = false;
|
|
13
13
|
constructor(shared) {
|
|
14
14
|
this.shared = shared;
|
|
@@ -29,13 +29,30 @@ class ApplicationIngressRecordOwner {
|
|
|
29
29
|
}
|
|
30
30
|
return job;
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
acquire(domain, signal) {
|
|
33
|
+
try {
|
|
34
|
+
this.requireOpen();
|
|
35
|
+
const initial = this.shared.takeInitialPermit(domain);
|
|
36
|
+
if (initial !== undefined)
|
|
37
|
+
return initial;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
return Promise.reject(error);
|
|
41
|
+
}
|
|
42
|
+
return this.acquireAdditional(domain, signal);
|
|
43
|
+
}
|
|
44
|
+
async acquireAdditional(domain, signal) {
|
|
45
|
+
const stop = (this.stop ??= new AbortController());
|
|
46
|
+
const waitSignal = signal === undefined ? stop.signal : AbortSignal.any([stop.signal, signal]);
|
|
47
|
+
let permit;
|
|
48
|
+
try {
|
|
49
|
+
permit = await this.shared.acquirePermit(waitSignal);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
if (error === ownerClosedError)
|
|
53
|
+
throw ownerClosedError();
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
39
56
|
if (this.closed) {
|
|
40
57
|
permit.releaseAfterInternalProcessing();
|
|
41
58
|
throw ownerClosedError();
|
|
@@ -46,7 +63,8 @@ class ApplicationIngressRecordOwner {
|
|
|
46
63
|
if (this.closed)
|
|
47
64
|
return;
|
|
48
65
|
this.closed = true;
|
|
49
|
-
this.
|
|
66
|
+
// The queue forwards this reason; only a rejected acquisition constructs the error.
|
|
67
|
+
this.stop?.abort(ownerClosedError);
|
|
50
68
|
this.shared.releaseOwner();
|
|
51
69
|
}
|
|
52
70
|
requireOpen() {
|
|
@@ -60,10 +78,8 @@ class ApplicationJobRecordLease {
|
|
|
60
78
|
shared;
|
|
61
79
|
permit;
|
|
62
80
|
ingressClosed = false;
|
|
63
|
-
permitReleased = false;
|
|
64
81
|
processingTerminal = false;
|
|
65
82
|
detachedForHandlerTurn = false;
|
|
66
|
-
jobReleased = false;
|
|
67
83
|
constructor(shared, permit) {
|
|
68
84
|
this.shared = shared;
|
|
69
85
|
this.permit = permit;
|
|
@@ -79,11 +95,11 @@ class ApplicationJobRecordLease {
|
|
|
79
95
|
this.detachedForHandlerTurn = true;
|
|
80
96
|
}
|
|
81
97
|
releaseBeforeHandler() {
|
|
82
|
-
this.
|
|
98
|
+
this.permit?.releaseBeforeHandler();
|
|
83
99
|
}
|
|
84
100
|
releaseAfterInternalProcessing() {
|
|
85
101
|
this.processingTerminal = true;
|
|
86
|
-
this.
|
|
102
|
+
this.permit?.releaseAfterInternalProcessing();
|
|
87
103
|
this.releaseJobIfTerminal();
|
|
88
104
|
}
|
|
89
105
|
close() {
|
|
@@ -96,17 +112,17 @@ class ApplicationJobRecordLease {
|
|
|
96
112
|
}
|
|
97
113
|
this.releaseJobIfTerminal();
|
|
98
114
|
}
|
|
99
|
-
releasePermit(release) {
|
|
100
|
-
if (this.permitReleased)
|
|
101
|
-
return;
|
|
102
|
-
this.permitReleased = true;
|
|
103
|
-
release();
|
|
104
|
-
}
|
|
105
115
|
releaseJobIfTerminal() {
|
|
106
|
-
|
|
116
|
+
const permit = this.permit;
|
|
117
|
+
if (permit === undefined || !this.ingressClosed || !this.processingTerminal)
|
|
107
118
|
return;
|
|
108
|
-
this.
|
|
109
|
-
|
|
119
|
+
this.permit = undefined;
|
|
120
|
+
try {
|
|
121
|
+
this.shared.releaseJob();
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
permit.releaseStorage?.();
|
|
125
|
+
}
|
|
110
126
|
}
|
|
111
127
|
}
|
|
112
128
|
exports.ApplicationJobRecordLease = ApplicationJobRecordLease;
|
|
@@ -174,6 +190,7 @@ class SharedIngressRecordState {
|
|
|
174
190
|
this.initialPermit?.releaseAfterInternalProcessing();
|
|
175
191
|
}
|
|
176
192
|
finally {
|
|
193
|
+
this.initialPermit?.releaseStorage?.();
|
|
177
194
|
this.initialPermit = undefined;
|
|
178
195
|
this.record.close();
|
|
179
196
|
}
|
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
import type { ApplicationJobOrigin, ApplicationJobPermitPort } from './contracts';
|
|
2
|
+
/** Ends the internal processing of one record turn unless its handler detached the permit. */
|
|
3
|
+
export declare function releaseApplicationJobPermitTurn(permit: ApplicationJobPermitPort | undefined): void;
|
|
4
|
+
/**
|
|
5
|
+
* Makes `permit` the current record's permit for the synchronous part of a
|
|
6
|
+
* dispatch. The caller restores the returned previous scope with
|
|
7
|
+
* {@link leaveApplicationJobPermitScope} and releases the turn itself, so a
|
|
8
|
+
* dispatcher that already continues on the handler result needs no second
|
|
9
|
+
* continuation here.
|
|
10
|
+
*/
|
|
11
|
+
export declare function enterApplicationJobPermitScope(permit: ApplicationJobPermitPort): ApplicationJobPermitPort | undefined;
|
|
12
|
+
export declare function leaveApplicationJobPermitScope(previous: ApplicationJobPermitPort | undefined): void;
|
|
2
13
|
/**
|
|
3
14
|
* Carries the host-owned queue permit through internal async dispatch without
|
|
4
15
|
* leaking capacity ownership into public handler contracts.
|
|
5
16
|
*/
|
|
6
|
-
export declare function runWithApplicationJobPermit<TResult>(permit: ApplicationJobPermitPort, callback: () => Promise<TResult>
|
|
17
|
+
export declare function runWithApplicationJobPermit<TResult>(permit: ApplicationJobPermitPort, callback: () => Promise<TResult>): Promise<TResult>;
|
|
18
|
+
export declare function runWithApplicationJobPermit<TResult, TFirst = undefined, TSecond = undefined>(permit: ApplicationJobPermitPort, callback: (first: TFirst, second: TSecond) => Promise<TResult> | TResult, first?: TFirst, second?: TSecond): TResult | Promise<TResult>;
|
|
7
19
|
/** Releases the current job permit immediately before the first user callback. */
|
|
8
20
|
export declare function releaseApplicationJobPermitBeforeHandler(): void;
|
|
9
21
|
/** True while dispatch already owns the host-wide application job permit. */
|
|
10
22
|
export declare function hasApplicationJobPermit(): boolean;
|
|
23
|
+
/** The current ingress reservation; capacity remains owned by its host queue. */
|
|
24
|
+
export declare function currentApplicationJobPermit(): ApplicationJobPermitPort | undefined;
|
|
11
25
|
/** Keeps the ingress origin when a durable record later reacquires its permit. */
|
|
12
26
|
export declare function currentApplicationJobOrigin(): ApplicationJobOrigin;
|
|
13
27
|
/** Re-enters the captured permit scope when a serial executor runs later. */
|
|
@@ -1,45 +1,87 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.releaseApplicationJobPermitTurn = releaseApplicationJobPermitTurn;
|
|
4
|
+
exports.enterApplicationJobPermitScope = enterApplicationJobPermitScope;
|
|
5
|
+
exports.leaveApplicationJobPermitScope = leaveApplicationJobPermitScope;
|
|
3
6
|
exports.runWithApplicationJobPermit = runWithApplicationJobPermit;
|
|
4
7
|
exports.releaseApplicationJobPermitBeforeHandler = releaseApplicationJobPermitBeforeHandler;
|
|
5
8
|
exports.releaseApplicationJobPermitForDurableHandoff = releaseApplicationJobPermitForDurableHandoff;
|
|
6
9
|
exports.hasApplicationJobPermit = hasApplicationJobPermit;
|
|
10
|
+
exports.currentApplicationJobPermit = currentApplicationJobPermit;
|
|
7
11
|
exports.currentApplicationJobOrigin = currentApplicationJobOrigin;
|
|
8
12
|
exports.bindApplicationJobPermit = bindApplicationJobPermit;
|
|
9
13
|
exports.detachApplicationJobPermit = detachApplicationJobPermit;
|
|
10
14
|
const node_async_hooks_1 = require("node:async_hooks");
|
|
11
15
|
const applicationJobPermitScope = new node_async_hooks_1.AsyncLocalStorage();
|
|
16
|
+
function releasePermitTurn() {
|
|
17
|
+
releaseApplicationJobPermitTurn(applicationJobPermitScope.getStore());
|
|
18
|
+
}
|
|
19
|
+
/** Ends the internal processing of one record turn unless its handler detached the permit. */
|
|
20
|
+
function releaseApplicationJobPermitTurn(permit) {
|
|
21
|
+
if (permit !== undefined && !permit.detachedForHandlerTurn)
|
|
22
|
+
permit.releaseAfterInternalProcessing();
|
|
23
|
+
}
|
|
12
24
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
25
|
+
* Makes `permit` the current record's permit for the synchronous part of a
|
|
26
|
+
* dispatch. The caller restores the returned previous scope with
|
|
27
|
+
* {@link leaveApplicationJobPermitScope} and releases the turn itself, so a
|
|
28
|
+
* dispatcher that already continues on the handler result needs no second
|
|
29
|
+
* continuation here.
|
|
15
30
|
*/
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
31
|
+
function enterApplicationJobPermitScope(permit) {
|
|
32
|
+
const previous = applicationJobPermitScope.getStore();
|
|
33
|
+
applicationJobPermitScope.enterWith(permit);
|
|
34
|
+
return previous;
|
|
35
|
+
}
|
|
36
|
+
function leaveApplicationJobPermitScope(previous) {
|
|
37
|
+
applicationJobPermitScope.enterWith(previous);
|
|
38
|
+
}
|
|
39
|
+
function releasePermitSuccess(value) {
|
|
40
|
+
releasePermitTurn();
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
function releasePermitFailure(error) {
|
|
44
|
+
releasePermitTurn();
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
function runWithApplicationJobPermit(permit, callback, first, second) {
|
|
48
|
+
const previous = applicationJobPermitScope.getStore();
|
|
49
|
+
applicationJobPermitScope.enterWith(permit);
|
|
50
|
+
try {
|
|
51
|
+
const result = callback(first, second);
|
|
52
|
+
if (result !== null && (typeof result === 'object' || typeof result === 'function')) {
|
|
53
|
+
return Promise.resolve(result).then(releasePermitSuccess, releasePermitFailure);
|
|
25
54
|
}
|
|
26
|
-
|
|
55
|
+
releasePermitTurn();
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
releasePermitTurn();
|
|
60
|
+
return Promise.reject(error);
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
applicationJobPermitScope.enterWith(previous);
|
|
64
|
+
}
|
|
27
65
|
}
|
|
28
66
|
/** Releases the current job permit immediately before the first user callback. */
|
|
29
67
|
function releaseApplicationJobPermitBeforeHandler() {
|
|
30
|
-
applicationJobPermitScope.getStore()?.
|
|
68
|
+
applicationJobPermitScope.getStore()?.releaseBeforeHandler();
|
|
31
69
|
}
|
|
32
70
|
/** @internal Returns an ingress permit after a durable queue takes record ownership. */
|
|
33
71
|
function releaseApplicationJobPermitForDurableHandoff() {
|
|
34
|
-
applicationJobPermitScope.getStore()?.
|
|
72
|
+
applicationJobPermitScope.getStore()?.releaseAfterInternalProcessing();
|
|
35
73
|
}
|
|
36
74
|
/** True while dispatch already owns the host-wide application job permit. */
|
|
37
75
|
function hasApplicationJobPermit() {
|
|
38
76
|
return applicationJobPermitScope.getStore() !== undefined;
|
|
39
77
|
}
|
|
78
|
+
/** The current ingress reservation; capacity remains owned by its host queue. */
|
|
79
|
+
function currentApplicationJobPermit() {
|
|
80
|
+
return applicationJobPermitScope.getStore();
|
|
81
|
+
}
|
|
40
82
|
/** Keeps the ingress origin when a durable record later reacquires its permit. */
|
|
41
83
|
function currentApplicationJobOrigin() {
|
|
42
|
-
return applicationJobPermitScope.getStore().
|
|
84
|
+
return applicationJobPermitScope.getStore().origin;
|
|
43
85
|
}
|
|
44
86
|
/** Re-enters the captured permit scope when a serial executor runs later. */
|
|
45
87
|
function bindApplicationJobPermit(callback) {
|
|
@@ -53,10 +95,9 @@ function bindApplicationJobPermit(callback) {
|
|
|
53
95
|
* detached owner must release it at handler entry or at a pre-start terminal.
|
|
54
96
|
*/
|
|
55
97
|
function detachApplicationJobPermit() {
|
|
56
|
-
const
|
|
57
|
-
if (
|
|
98
|
+
const permit = applicationJobPermitScope.getStore();
|
|
99
|
+
if (permit === undefined)
|
|
58
100
|
return undefined;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return scope.permit;
|
|
101
|
+
permit.detachForHandlerTurn();
|
|
102
|
+
return permit;
|
|
62
103
|
}
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
export type ApplicationJobOrigin = 'local' | 'remote';
|
|
2
2
|
export interface ApplicationJobPermitPort {
|
|
3
|
+
/** Reacquires this record's host supply after durable FIFO ownership. */
|
|
4
|
+
reacquire?(signal: AbortSignal): Promise<ApplicationJobPermitPort>;
|
|
3
5
|
readonly origin: ApplicationJobOrigin;
|
|
6
|
+
readonly detachedForHandlerTurn: boolean;
|
|
4
7
|
markApplicationQueued(): void;
|
|
5
8
|
/** Transfers ingress-record cleanup to a detached exact-target handler turn. */
|
|
6
|
-
detachForHandlerTurn
|
|
9
|
+
detachForHandlerTurn(): void;
|
|
7
10
|
releaseBeforeHandler(): void;
|
|
8
11
|
releaseAfterInternalProcessing(): void;
|
|
12
|
+
/** Returns reusable reservation storage only after its ingress lifetime ends. */
|
|
13
|
+
releaseStorage?(): void;
|
|
14
|
+
}
|
|
15
|
+
export interface ApplicationJobReceiveRotationPort {
|
|
16
|
+
reserve(): void;
|
|
17
|
+
take(): ApplicationJobPermitPort | undefined;
|
|
18
|
+
releaseUnused(): void;
|
|
9
19
|
}
|
|
10
20
|
export interface ApplicationJobQueuePort {
|
|
21
|
+
createReceiveRotation(capacity: number, origin: ApplicationJobOrigin): ApplicationJobReceiveRotationPort;
|
|
11
22
|
acquire(signal: AbortSignal | undefined, origin: ApplicationJobOrigin): Promise<ApplicationJobPermitPort>;
|
|
12
23
|
/** Returns a grant now, or registers one FIFO waiter that later calls resume. */
|
|
13
24
|
acquireOrResume(resume: (permit: ApplicationJobPermitPort) => void, reject: (reason: unknown) => void, signal: AbortSignal | undefined, origin: ApplicationJobOrigin): ApplicationJobPermitPort | undefined;
|
|
@@ -32,9 +32,17 @@ export type ZLinkBackendObjectPlacement = {
|
|
|
32
32
|
} | {
|
|
33
33
|
readonly kind: 'unavailable';
|
|
34
34
|
};
|
|
35
|
+
export type ZLinkBackendRequestSourceAcceptance = (nodeRid: string, nodeGeneration: bigint, nodeRidStorageHex: string, signal?: AbortSignal) => import('../../locations/request-source-resolver').ZLinkRequestSourceFence | undefined | Promise<import('../../locations/request-source-resolver').ZLinkRequestSourceFence | undefined>;
|
|
35
36
|
export interface ZLinkBackendMeshNode {
|
|
37
|
+
acceptRelocatedActorTerminal?(operation: {
|
|
38
|
+
readonly high: bigint;
|
|
39
|
+
readonly low: bigint;
|
|
40
|
+
}, replyRouteId: bigint, result: import('../../foundation/service-stateful-runtime').ServiceStatefulResult): 'terminalReceived' | 'alreadyTerminal' | undefined;
|
|
41
|
+
readonly routingId?: RoutingId;
|
|
42
|
+
cancelPendingOperations?(reason: unknown): void;
|
|
36
43
|
completeClosedInstance?(spotId: string, objectGeneration: bigint): void;
|
|
37
44
|
setDispatchErrorReporter?(reporter: import('../../channels/dispatch-error-reporter').ZLinkDispatchErrorReporter, meshName: string): void;
|
|
45
|
+
setSessionOwnerDescriptors?(source: import('../../foundation/service-stateful-runtime').ServiceSessionOwnerDescriptors): void;
|
|
38
46
|
setRoutingId(routingId: unknown): void;
|
|
39
47
|
setBind(endpoint: string): void;
|
|
40
48
|
setAdvertiseHost(host: string): void;
|
|
@@ -51,9 +59,9 @@ export interface ZLinkBackendMeshNode {
|
|
|
51
59
|
}) => void): void;
|
|
52
60
|
setMessageFollowHandler?(handler: (record: import('../../foundation/service-stateful-wire-codec').ServiceMessageFollowRecord) => void): void;
|
|
53
61
|
sendMessageFollowNotification?(targetNodeRid: string, record: Omit<import('../../foundation/service-stateful-wire-codec').ServiceMessageFollowRecord, 'kind'>): Promise<boolean>;
|
|
54
|
-
shutdown(timeoutMs: number): RequestResult
|
|
62
|
+
shutdown(timeoutMs: number): Promise<RequestResult>;
|
|
55
63
|
publishDraining?(): Promise<void>;
|
|
56
|
-
close(): void
|
|
64
|
+
close(): Promise<void>;
|
|
57
65
|
addChannelName(name: string): void;
|
|
58
66
|
setChannelWeight(name: string, weight: number): Promise<void>;
|
|
59
67
|
setPlacementWeight(weight: number): Promise<void>;
|
|
@@ -68,9 +76,9 @@ export interface ZLinkBackendMeshNode {
|
|
|
68
76
|
selectObjectPlacement(stableType: string): ZLinkBackendObjectPlacement;
|
|
69
77
|
instanceSpotPlacementTypes?(): readonly string[];
|
|
70
78
|
sendToMissingInstanceSpot(target: ServiceInstanceColdActivationTarget, parts: ZLinkBackendMessageLike | readonly ZLinkBackendMessageLike[], deadlineUnixMs: bigint, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>): Promise<SubmitResult>;
|
|
71
|
-
requestToMissingInstanceSpot(target: ServiceInstanceColdActivationTarget, parts: ZLinkBackendMessageLike | readonly ZLinkBackendMessageLike[], deadlineUnixMs: bigint, sourceSpotId?: string, metadata?: ReadonlyMap<string, string
|
|
79
|
+
requestToMissingInstanceSpot(target: ServiceInstanceColdActivationTarget, parts: ZLinkBackendMessageLike | readonly ZLinkBackendMessageLike[], deadlineUnixMs: bigint, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, onAdmitted?: () => void): MeshOperationId;
|
|
72
80
|
sendToInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean): Promise<SubmitResult>;
|
|
73
|
-
requestInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs?: number, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean): MeshOperationId;
|
|
81
|
+
requestInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs?: number, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean, onAdmitted?: () => void): MeshOperationId;
|
|
74
82
|
registerUserSpotOperationHandler(handler: ServiceUserSpotOperationHandler): void;
|
|
75
83
|
requestUserSpotCreate(targetNodeRid: string, request: Omit<ServiceUserSpotCreateRecord, 'kind' | 'correlation' | 'operation'>, timeoutMs: number): Promise<ServiceUserSpotOperationResult>;
|
|
76
84
|
requestUserSpotClose(targetNodeRid: string, request: Omit<ServiceUserSpotCloseRecord, 'kind' | 'correlation' | 'operation'>, timeoutMs: number): Promise<ServiceUserSpotOperationResult>;
|
|
@@ -96,11 +104,19 @@ export interface ZLinkBackendMeshNode {
|
|
|
96
104
|
readonly securityIdentity?: string;
|
|
97
105
|
readonly lifecycleGeneration: bigint;
|
|
98
106
|
}): void;
|
|
107
|
+
/**
|
|
108
|
+
* Installs the source request owner check the first accepting owner runs on Actor and Spot
|
|
109
|
+
* ingress (Location runtime §9.3). Undefined from the check ends the request Unavailable.
|
|
110
|
+
*/
|
|
111
|
+
setRequestSourceAcceptance?(acceptance: ZLinkBackendRequestSourceAcceptance): void;
|
|
99
112
|
isObjectClientNodeDirectTarget?(targetRid: unknown): boolean;
|
|
113
|
+
observePeerRoute?(targetRid: unknown): import('../../foundation/durable-service-request').PeerRouteObservation;
|
|
114
|
+
hasPeerRouteOrConnectionIntent?(targetRid: unknown, endpoint: string): boolean;
|
|
100
115
|
isPeerRouteReady?(targetRid: unknown, lifecycleGeneration?: bigint): boolean;
|
|
116
|
+
waitForPeerRoute?(targetRid: unknown, lifecycleGeneration: bigint, deadlineUnixMs: bigint, signal?: AbortSignal): Promise<void>;
|
|
101
117
|
sendToNode(targetRid: unknown, parts: MessageLike | readonly MessageLike[], options?: {
|
|
102
118
|
flags?: number;
|
|
103
|
-
}): Promise<SubmitResult>;
|
|
119
|
+
}): SubmitResult | Promise<SubmitResult>;
|
|
104
120
|
/**
|
|
105
121
|
* Sends service-wire infrastructure frames directly to a peer. Relocation
|
|
106
122
|
* Prepare may add NODE-INTERNAL sideband frames after its canonical frame.
|
|
@@ -114,11 +130,14 @@ export interface ZLinkBackendMeshNode {
|
|
|
114
130
|
*/
|
|
115
131
|
requestInfrastructureControlFrames?(targetRid: unknown, frames: readonly Uint8Array[], options?: {
|
|
116
132
|
readonly timeoutMs?: number;
|
|
133
|
+
readonly signal?: AbortSignal;
|
|
134
|
+
readonly onSubmitted?: (signal: AbortSignal) => Promise<void>;
|
|
117
135
|
}): Promise<readonly Uint8Array[]>;
|
|
118
136
|
requestToNode(targetRid: unknown, parts: MessageLike | readonly MessageLike[], options?: {
|
|
119
137
|
flags?: number;
|
|
120
138
|
timeoutMs?: number;
|
|
121
139
|
applicationMetadata?: Buffer;
|
|
140
|
+
onAdmitted?: () => void;
|
|
122
141
|
}): MeshOperationId;
|
|
123
142
|
sendToChannel(channelName: string, parts: MessageLike | readonly MessageLike[], options?: {
|
|
124
143
|
flags?: number;
|
|
@@ -127,6 +146,7 @@ export interface ZLinkBackendMeshNode {
|
|
|
127
146
|
flags?: number;
|
|
128
147
|
timeoutMs?: number;
|
|
129
148
|
applicationMetadata?: Buffer;
|
|
149
|
+
onAdmitted?: () => void;
|
|
130
150
|
}): MeshOperationId;
|
|
131
151
|
status(): MeshNodeStatus;
|
|
132
152
|
peers(): MeshPeerEntry[];
|
|
@@ -165,7 +185,8 @@ export interface ZLinkBackendMeshNode {
|
|
|
165
185
|
forgetSpotRoute?(spot: ServiceDirectSpotRouteFence['spot'], authorityOwnerGeneration: bigint, storeVersion?: string): void;
|
|
166
186
|
sealSpotMessageFollowIngress?(source: ServiceDirectSpotRouteFence): ServiceSpotMessageFollowSeal | undefined;
|
|
167
187
|
abortSpotMessageFollowIngress?(seal: ServiceSpotMessageFollowSeal): boolean;
|
|
168
|
-
|
|
188
|
+
/** A null target consumes the committed seal without installing a Follow route. */
|
|
189
|
+
commitSpotMessageFollowIngress?(seal: ServiceSpotMessageFollowSeal, target: ServiceDirectSpotRouteFence | null, durationMs: number): Promise<boolean>;
|
|
169
190
|
joinActorSpot(actor: ZLinkBackendActorRef, targetNodeRid: unknown, targetSpotId: unknown, targetSpotGeneration: bigint, request: ServiceApplicationPayload, timeoutMs?: number): MeshOperationId;
|
|
170
191
|
joinActorSpotCanonical(actor: ZLinkBackendActorRef, targetNodeRid: unknown, targetSpotId: unknown, targetSpotGeneration: bigint, request: ServiceApplicationPayload, actorFence: {
|
|
171
192
|
readonly targetNodeGeneration: bigint;
|
|
@@ -186,11 +207,14 @@ export interface ZLinkBackendMeshNode {
|
|
|
186
207
|
}, timeoutMs?: number): MeshOperationId;
|
|
187
208
|
sendToActor(actor: ZLinkBackendActorRef, parts: MessageLike | readonly MessageLike[], options?: {
|
|
188
209
|
flags?: number;
|
|
210
|
+
routeFence?: import('../../foundation/service-stateful-wire-codec').ServiceActorRouteFence;
|
|
189
211
|
}): Promise<SubmitResult>;
|
|
190
212
|
requestToActor(actor: ZLinkBackendActorRef, parts: MessageLike | readonly MessageLike[], options?: {
|
|
191
213
|
flags?: number;
|
|
192
214
|
timeoutMs?: number;
|
|
193
215
|
applicationMetadata?: Buffer;
|
|
216
|
+
onAdmitted?: () => void;
|
|
217
|
+
routeFence?: import('../../foundation/service-stateful-wire-codec').ServiceActorRouteFence;
|
|
194
218
|
}): MeshOperationId;
|
|
195
219
|
actorSendToActor(source: ZLinkBackendActorRef, target: ZLinkBackendActorRef, parts: MessageLike | readonly MessageLike[], options?: {
|
|
196
220
|
flags?: number;
|
|
@@ -199,6 +223,7 @@ export interface ZLinkBackendMeshNode {
|
|
|
199
223
|
flags?: number;
|
|
200
224
|
timeoutMs?: number;
|
|
201
225
|
applicationMetadata?: Buffer;
|
|
226
|
+
onAdmitted?: () => void;
|
|
202
227
|
}): MeshOperationId;
|
|
203
228
|
sendActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, parts: MessageLike | readonly MessageLike[], flags?: number): Promise<SubmitResult>;
|
|
204
229
|
closeActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, timeoutMs?: number): MeshOperationId;
|
|
@@ -283,7 +308,7 @@ export interface ZLinkBackendDealerSocket extends ZLinkBackendConnectableSocket
|
|
|
283
308
|
receiveTimeoutMs: number;
|
|
284
309
|
maxMessageSize: number;
|
|
285
310
|
send(message: Message | readonly Message[]): Promise<void>;
|
|
286
|
-
request(message: Message | readonly Message[], timeoutMs?: number): Promise<readonly Message[]>;
|
|
311
|
+
request(message: Message | readonly Message[], timeoutMs?: number, onAdmitted?: () => void): Promise<readonly Message[]>;
|
|
287
312
|
recv(flags?: ZLinkBackendRecvFlags): Received | undefined;
|
|
288
313
|
}
|
|
289
314
|
export interface ZLinkBackendReplyOperation {
|
|
@@ -297,7 +322,7 @@ export interface ZLinkBackendSendOperation {
|
|
|
297
322
|
export interface ZLinkBackendRequestOperation {
|
|
298
323
|
message(message: MessageLike): ZLinkBackendRequestOperation;
|
|
299
324
|
timeout(timeoutMs: number): ZLinkBackendRequestOperation;
|
|
300
|
-
submit(): Promise<readonly Message[]>;
|
|
325
|
+
submit(onAdmitted?: () => void): Promise<readonly Message[]>;
|
|
301
326
|
}
|
|
302
327
|
export interface ZLinkBackendRouterSocket extends ZLinkBackendConnectableSocket {
|
|
303
328
|
setReceiveFlowState(state: ReceiveFlowState): void;
|
|
@@ -311,9 +336,9 @@ export interface ZLinkBackendRouterSocket extends ZLinkBackendConnectableSocket
|
|
|
311
336
|
setRoutingId(routingId: RoutingId): void;
|
|
312
337
|
recv(flags?: ZLinkBackendRecvFlags): Received | undefined;
|
|
313
338
|
send(routingId: RoutingId, message: Message | readonly Message[]): Promise<void>;
|
|
314
|
-
request(routingId: RoutingId, message: Message | readonly Message[], timeoutMs?: number): Promise<readonly Message[]>;
|
|
339
|
+
request(routingId: RoutingId, message: Message | readonly Message[], timeoutMs?: number, onAdmitted?: () => void): Promise<readonly Message[]>;
|
|
315
340
|
sendToSpot(targetNodeRid: RoutingId, targetSpotId: RoutingId, parts: readonly Message[], flags?: ZLinkBackendSendFlags): Promise<void>;
|
|
316
|
-
requestToSpot(targetNodeRid: RoutingId, targetSpotId: RoutingId, parts: readonly Message[], timeoutMs?: number): Promise<readonly Message[]>;
|
|
341
|
+
requestToSpot(targetNodeRid: RoutingId, targetSpotId: RoutingId, parts: readonly Message[], timeoutMs?: number, onAdmitted?: () => void): Promise<readonly Message[]>;
|
|
317
342
|
disconnectPeer(routingId: RoutingId): void;
|
|
318
343
|
reply(routingId: RoutingId, replyToken: unknown): ZLinkBackendReplyOperation;
|
|
319
344
|
reply(routingId: RoutingId, replyToken: unknown, message: Message | readonly Message[]): void;
|
|
@@ -413,11 +438,11 @@ export interface ZLinkBackendSpot extends ZLinkBackendObject {
|
|
|
413
438
|
drainReply(): number;
|
|
414
439
|
drainChannelReply(subjectHandle: bigint): number;
|
|
415
440
|
setDispatchHandler(handler: (info: ZLinkBackendSpotDispatchInfo) => void): void;
|
|
416
|
-
requestToChannel(channelName: string, payload: Message | readonly Message[], timeoutMs?: number): Promise<readonly Message[]>;
|
|
441
|
+
requestToChannel(channelName: string, payload: Message | readonly Message[], timeoutMs?: number, onAdmitted?: () => void): Promise<readonly Message[]>;
|
|
417
442
|
sendToChannel(channelName: string, payload: Message | readonly Message[]): Promise<void>;
|
|
418
443
|
publish(topic: string, payload: Message | readonly Message[], flags: ZLinkBackendSendFlags): boolean;
|
|
419
444
|
sendToSpot(targetRid: RoutingId, spotId: RoutingId, payload: Message | readonly Message[]): Promise<void>;
|
|
420
|
-
requestToSpot(targetRid: RoutingId, spotId: RoutingId, payload: Message | readonly Message[], timeoutMs?: number): Promise<readonly Message[]>;
|
|
445
|
+
requestToSpot(targetRid: RoutingId, spotId: RoutingId, payload: Message | readonly Message[], timeoutMs?: number, onAdmitted?: () => void): Promise<readonly Message[]>;
|
|
421
446
|
dispose(): Promise<void>;
|
|
422
447
|
}
|
|
423
448
|
export interface ZLinkChannelBackendAdapter {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.meshActorSessionNodeAdapter = meshActorSessionNodeAdapter;
|
|
4
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
4
5
|
const submission_result_1 = require("../messaging/submission-result");
|
|
5
6
|
const mesh_completion_table_1 = require("./mesh-completion-table");
|
|
6
7
|
function meshActorSessionNodeAdapter(node, completions) {
|
|
@@ -16,8 +17,7 @@ function meshActorSessionNodeAdapter(node, completions) {
|
|
|
16
17
|
const completion = await completions.submit(() => node.closeActorBoundSession(actor, expectedBindingGeneration, timeoutMs), signal);
|
|
17
18
|
try {
|
|
18
19
|
if (completion.terminalResult !== 0 || completion.failureErrno !== 0) {
|
|
19
|
-
throw
|
|
20
|
-
`'${completion.terminalResult}' and errno '${completion.failureErrno}'.`);
|
|
20
|
+
throw (0, framework_errors_internal_1.wireReplyFailureException)(completion.terminalResult, completion.failureErrno, `Actor '${actor.actorId}' bound-session close failed.`);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
finally {
|
|
@@ -16,9 +16,17 @@ export type ZLinkMeshCompletionTerminal = Pick<ReceiveRecord, 'operationId' | 't
|
|
|
16
16
|
export type ZLinkMeshCompletionHandler = (terminal: ZLinkMeshCompletionTerminal, materialize: () => ReceiveRecord) => void;
|
|
17
17
|
export declare class ZLinkMeshCompletionTable {
|
|
18
18
|
private readonly onDiagnostic?;
|
|
19
|
-
private
|
|
19
|
+
private buckets;
|
|
20
|
+
private readonly slots;
|
|
21
|
+
private free;
|
|
22
|
+
private activeCount;
|
|
20
23
|
private disposed;
|
|
21
24
|
constructor(onDiagnostic?: ((diagnostic: ZLinkMeshCompletionDiagnostic) => void) | undefined);
|
|
25
|
+
private prepareSlots;
|
|
26
|
+
private bucket;
|
|
27
|
+
private indexSlot;
|
|
28
|
+
private findSlot;
|
|
29
|
+
private releaseSlot;
|
|
22
30
|
/**
|
|
23
31
|
* Reserves the dispatcher slot before transport submission. The backend
|
|
24
32
|
* observes native terminals through Promises, so identity binding finishes
|