@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
|
@@ -208,22 +208,34 @@ export function wrapSocket<T extends { close(): void }>(
|
|
|
208
208
|
},
|
|
209
209
|
request(...args: unknown[]): unknown {
|
|
210
210
|
if (hasRoutedPeer) {
|
|
211
|
-
const [routingId, payload, timeoutMs] = args as [
|
|
211
|
+
const [routingId, payload, timeoutMs, onAdmitted] = args as [
|
|
212
|
+
unknown,
|
|
213
|
+
unknown,
|
|
214
|
+
number | undefined,
|
|
215
|
+
(() => void) | undefined
|
|
216
|
+
];
|
|
212
217
|
return submitBindingRequest(
|
|
213
218
|
(
|
|
214
219
|
nativeInstance as T & { request(routingId: unknown): ZLinkBindingRequestOperation }
|
|
215
220
|
).request(toNativeRoutingId(routingId)),
|
|
216
221
|
payload,
|
|
217
|
-
timeoutMs
|
|
222
|
+
timeoutMs,
|
|
223
|
+
undefined,
|
|
224
|
+
onAdmitted
|
|
218
225
|
);
|
|
219
226
|
}
|
|
220
227
|
if (hasRequest) {
|
|
221
|
-
const [payload, timeoutMs] = args as [
|
|
228
|
+
const [payload, timeoutMs, onAdmitted] = args as [
|
|
229
|
+
unknown,
|
|
230
|
+
number | undefined,
|
|
231
|
+
(() => void) | undefined
|
|
232
|
+
];
|
|
222
233
|
return submitBindingRequest(
|
|
223
234
|
(nativeInstance as T & { request(): ZLinkBindingRequestOperation }).request(),
|
|
224
235
|
payload,
|
|
225
236
|
timeoutMs,
|
|
226
|
-
adapter.receiveAdmission?.recordReceived
|
|
237
|
+
adapter.receiveAdmission?.recordReceived,
|
|
238
|
+
onAdmitted
|
|
227
239
|
);
|
|
228
240
|
}
|
|
229
241
|
throw new TypeError('Backend request requires a DEALER or ROUTER socket.');
|
|
@@ -302,7 +314,8 @@ export function wrapSocket<T extends { close(): void }>(
|
|
|
302
314
|
targetRid: unknown,
|
|
303
315
|
targetSpot: unknown,
|
|
304
316
|
payload: unknown,
|
|
305
|
-
timeoutMs?: number
|
|
317
|
+
timeoutMs?: number,
|
|
318
|
+
onAdmitted?: () => void
|
|
306
319
|
): Promise<readonly unknown[]> {
|
|
307
320
|
return submitBindingRequest(
|
|
308
321
|
(
|
|
@@ -311,13 +324,15 @@ export function wrapSocket<T extends { close(): void }>(
|
|
|
311
324
|
}
|
|
312
325
|
).requestToSpot(toNativeRoutingId(targetRid), toNativeRoutingId(targetSpot)),
|
|
313
326
|
payload,
|
|
314
|
-
timeoutMs
|
|
327
|
+
timeoutMs,
|
|
328
|
+
undefined,
|
|
329
|
+
onAdmitted
|
|
315
330
|
);
|
|
316
331
|
},
|
|
317
332
|
disconnectPeer(routingId: unknown): void {
|
|
318
|
-
|
|
333
|
+
disconnectSocketPeer(
|
|
319
334
|
nativeInstance as T & { disconnectRid(value: unknown): void },
|
|
320
|
-
routingId
|
|
335
|
+
toNativeRoutingId(routingId)
|
|
321
336
|
);
|
|
322
337
|
},
|
|
323
338
|
async bindActor(
|
|
@@ -361,15 +376,15 @@ export function nodeEventLoopPollerOf(socket: object): ZLinkNodeEventLoopPoller
|
|
|
361
376
|
return poller;
|
|
362
377
|
}
|
|
363
378
|
|
|
364
|
-
export function
|
|
379
|
+
export function disconnectSocketPeer(
|
|
365
380
|
socket: { disconnectRid(routingId: unknown): void },
|
|
366
381
|
routingId: unknown
|
|
367
382
|
): void {
|
|
368
383
|
try {
|
|
369
|
-
socket.disconnectRid(
|
|
384
|
+
socket.disconnectRid(routingId);
|
|
370
385
|
} catch (error) {
|
|
371
386
|
// An absent RID has already completed the physical close. The existing
|
|
372
|
-
//
|
|
387
|
+
// logical lifecycle still owns local cleanup and unbind.
|
|
373
388
|
if (!isBindingNotFound(error)) throw error;
|
|
374
389
|
}
|
|
375
390
|
}
|
|
@@ -67,7 +67,8 @@ export interface ZLinkRawRouterPort extends ZLinkRawSocketPort {
|
|
|
67
67
|
targetRid: string,
|
|
68
68
|
parts: readonly Uint8Array[],
|
|
69
69
|
timeoutMs: number,
|
|
70
|
-
recordReceived?: () => void
|
|
70
|
+
recordReceived?: () => void,
|
|
71
|
+
onAdmitted?: () => void
|
|
71
72
|
): Promise<readonly Buffer[]>;
|
|
72
73
|
receive(dontWait?: boolean): ZLinkRawReceivedRecord | undefined;
|
|
73
74
|
/** The selected route of every RID. The socket's one route observer calls it. */
|
|
@@ -77,7 +78,11 @@ export interface ZLinkRawRouterPort extends ZLinkRawSocketPort {
|
|
|
77
78
|
export interface ZLinkRawDealerPort extends ZLinkRawSocketPort {
|
|
78
79
|
setRoutingId(routingId: string): void;
|
|
79
80
|
send(parts: readonly Uint8Array[]): Promise<void>;
|
|
80
|
-
request(
|
|
81
|
+
request(
|
|
82
|
+
parts: readonly Uint8Array[],
|
|
83
|
+
timeoutMs: number,
|
|
84
|
+
onAdmitted?: () => void
|
|
85
|
+
): Promise<readonly Buffer[]>;
|
|
81
86
|
receive(dontWait?: boolean): ZLinkRawReceivedRecord | undefined;
|
|
82
87
|
}
|
|
83
88
|
|
|
@@ -17,6 +17,12 @@ export class ZLinkBufferMessage implements Message {
|
|
|
17
17
|
return new ZLinkBufferMessage(bytes);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
+
static retainPayload(message: Message): Buffer {
|
|
21
|
+
// Binding data() Buffers retain their storage after the message handle closes.
|
|
22
|
+
// Preserve that ownership at runtime boundaries without copying the payload.
|
|
23
|
+
return message.data();
|
|
24
|
+
}
|
|
25
|
+
|
|
20
26
|
data(): Buffer {
|
|
21
27
|
return this.bytes;
|
|
22
28
|
}
|
|
@@ -39,6 +39,7 @@ export type SubmitResult = (typeof SubmitResult)[keyof typeof SubmitResult];
|
|
|
39
39
|
export type ZLinkBackendSendFlags = number;
|
|
40
40
|
export type ZLinkBackendRecvFlags = number;
|
|
41
41
|
export const ZLINK_BACKEND_SEND_NONE: ZLinkBackendSendFlags = 0;
|
|
42
|
+
export const ZLINK_BACKEND_SEND_DONT_WAIT: ZLinkBackendSendFlags = 1;
|
|
42
43
|
export const ZLINK_BACKEND_RECV_DONT_WAIT: ZLinkBackendRecvFlags = 1;
|
|
43
44
|
|
|
44
45
|
export class ZLinkBackendResultError extends Error {
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { DEFAULT_REQUEST_TIMEOUT_MS } from '../../contracts/Configuration/Registration';
|
|
2
|
+
import { createZLinkRequest } from '../messaging/request-result';
|
|
3
|
+
import type { ZLinkRequest } from '../../contracts/Handlers/Attributes';
|
|
2
4
|
import type {
|
|
3
5
|
ZLinkChannelClient,
|
|
4
6
|
ZLinkChannelRequestCall,
|
|
@@ -23,6 +25,7 @@ import {
|
|
|
23
25
|
requireClassicFanoutCompletion,
|
|
24
26
|
throwAlreadySubmitted,
|
|
25
27
|
ZLinkSubmitStatus,
|
|
28
|
+
submittedResult,
|
|
26
29
|
type ZLinkSubmitResult
|
|
27
30
|
} from '../messaging/submission-result';
|
|
28
31
|
import type {
|
|
@@ -165,7 +168,23 @@ export class DefaultZLinkFanoutClient implements ZLinkFanoutClient {
|
|
|
165
168
|
}
|
|
166
169
|
}
|
|
167
170
|
|
|
171
|
+
interface PreparedNodeSend {
|
|
172
|
+
readonly validate: () => void;
|
|
173
|
+
readonly submit: (
|
|
174
|
+
packetName: string | undefined,
|
|
175
|
+
metadata: ReadonlyMap<string, string>,
|
|
176
|
+
message?: unknown
|
|
177
|
+
) => ZLinkSubmitResult | Promise<ZLinkSubmitResult>;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
interface PreparedNodeRequest {
|
|
181
|
+
readonly validate: () => void;
|
|
182
|
+
readonly submit: ZLinkRequestSubmitter;
|
|
183
|
+
}
|
|
184
|
+
|
|
168
185
|
export class DefaultZLinkRouteClient implements ZLinkRouteClient {
|
|
186
|
+
private readonly nodeSends = new Map<string, Map<string, PreparedNodeSend>>();
|
|
187
|
+
private readonly nodeRequests = new Map<string, Map<string, PreparedNodeRequest>>();
|
|
169
188
|
constructor(
|
|
170
189
|
private readonly registration: ZLinkFrameworkRegistration,
|
|
171
190
|
private readonly transport?: ZLinkRouteClientTransport,
|
|
@@ -175,35 +194,50 @@ export class DefaultZLinkRouteClient implements ZLinkRouteClient {
|
|
|
175
194
|
) {}
|
|
176
195
|
|
|
177
196
|
sendToNode(meshName: string, targetNodeRid: string, message: unknown): ZLinkSendCall {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
197
|
+
let targets = this.nodeSends.get(meshName);
|
|
198
|
+
if (targets === undefined) this.nodeSends.set(meshName, (targets = new Map()));
|
|
199
|
+
let prepared = targets.get(targetNodeRid);
|
|
200
|
+
if (prepared === undefined) {
|
|
201
|
+
prepared = {
|
|
202
|
+
validate: () => {
|
|
203
|
+
this.requireMesh(meshName);
|
|
204
|
+
},
|
|
205
|
+
submit: (packetName, metadata, payload) =>
|
|
206
|
+
normalizeSubmitResult(
|
|
207
|
+
this.requireTransport().submit(meshName, targetNodeRid, packetName, payload, metadata)
|
|
208
|
+
)
|
|
209
|
+
};
|
|
210
|
+
targets.set(targetNodeRid, prepared);
|
|
211
|
+
}
|
|
212
|
+
return new DefaultZLinkSendCall(prepared.validate, prepared.submit, message);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
requestToNode(meshName: string, targetNodeRid: string, request: unknown): ZLinkRequestCall {
|
|
216
|
+
let targets = this.nodeRequests.get(meshName);
|
|
217
|
+
if (targets === undefined) this.nodeRequests.set(meshName, (targets = new Map()));
|
|
218
|
+
let prepared = targets.get(targetNodeRid);
|
|
219
|
+
if (prepared === undefined) {
|
|
220
|
+
prepared = {
|
|
221
|
+
validate: () => this.requireMesh(meshName),
|
|
222
|
+
submit: (packetName, timeoutMs, metadata, signal, onAdmitted, message) =>
|
|
223
|
+
this.requireTransport().request(
|
|
183
224
|
meshName,
|
|
184
225
|
targetNodeRid,
|
|
185
226
|
packetName,
|
|
186
227
|
message,
|
|
187
|
-
|
|
228
|
+
timeoutMs,
|
|
229
|
+
signal,
|
|
230
|
+
metadata,
|
|
231
|
+
onAdmitted
|
|
188
232
|
)
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
requestToNode(meshName: string, targetNodeRid: string, request: unknown): ZLinkRequestCall {
|
|
233
|
+
};
|
|
234
|
+
targets.set(targetNodeRid, prepared);
|
|
235
|
+
}
|
|
194
236
|
return new DefaultZLinkRequestCall(
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
targetNodeRid,
|
|
200
|
-
packetName,
|
|
201
|
-
request,
|
|
202
|
-
timeoutMs,
|
|
203
|
-
signal,
|
|
204
|
-
metadata
|
|
205
|
-
),
|
|
206
|
-
this.defaultRequestTimeout(meshName)
|
|
237
|
+
prepared.validate,
|
|
238
|
+
prepared.submit,
|
|
239
|
+
this.defaultRequestTimeout(meshName),
|
|
240
|
+
request
|
|
207
241
|
);
|
|
208
242
|
}
|
|
209
243
|
|
|
@@ -233,7 +267,7 @@ export class DefaultZLinkRouteClient implements ZLinkRouteClient {
|
|
|
233
267
|
requestToChannel(channelName: string, request: unknown): ZLinkChannelRequestCall {
|
|
234
268
|
return new DefaultZLinkRequestCall(
|
|
235
269
|
() => this.requireChannelRoute(channelName),
|
|
236
|
-
(packetName, timeoutMs, metadata, signal) => {
|
|
270
|
+
(packetName, timeoutMs, metadata, signal, onAdmitted) => {
|
|
237
271
|
const route = this.requireChannelRoute(channelName);
|
|
238
272
|
if (route.kind === 'route-mesh') {
|
|
239
273
|
return this.requireTransport().requestToChannel(
|
|
@@ -243,7 +277,8 @@ export class DefaultZLinkRouteClient implements ZLinkRouteClient {
|
|
|
243
277
|
request,
|
|
244
278
|
timeoutMs,
|
|
245
279
|
signal,
|
|
246
|
-
metadata
|
|
280
|
+
metadata,
|
|
281
|
+
onAdmitted
|
|
247
282
|
);
|
|
248
283
|
}
|
|
249
284
|
return this.requireChannelTransport().request(
|
|
@@ -252,7 +287,8 @@ export class DefaultZLinkRouteClient implements ZLinkRouteClient {
|
|
|
252
287
|
request,
|
|
253
288
|
timeoutMs,
|
|
254
289
|
signal,
|
|
255
|
-
metadata
|
|
290
|
+
metadata,
|
|
291
|
+
onAdmitted
|
|
256
292
|
);
|
|
257
293
|
},
|
|
258
294
|
this.defaultRequestTimeoutForChannel(channelName)
|
|
@@ -279,11 +315,12 @@ export class DefaultZLinkRouteClient implements ZLinkRouteClient {
|
|
|
279
315
|
() => {
|
|
280
316
|
this.requireSpotTransport();
|
|
281
317
|
},
|
|
282
|
-
(_packetName, timeoutMs, metadata, signal) =>
|
|
318
|
+
(_packetName, timeoutMs, metadata, signal, onAdmitted) =>
|
|
283
319
|
requestToSpotHandle(this.requireSpotTransport(), spot, request, {
|
|
284
320
|
timeoutMs,
|
|
285
321
|
signal,
|
|
286
322
|
metadata,
|
|
323
|
+
onAdmitted,
|
|
287
324
|
spotRouterChannelIdForMesh: this.spotRouterChannelIdForMesh
|
|
288
325
|
}),
|
|
289
326
|
this.registration.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS
|
|
@@ -416,21 +453,24 @@ export class DefaultZLinkSpotPublisherClient implements ZLinkSpotPublisherClient
|
|
|
416
453
|
}
|
|
417
454
|
|
|
418
455
|
class DefaultZLinkSendCall implements ZLinkSendCall {
|
|
419
|
-
private
|
|
456
|
+
private selectedMetadata?: Map<string, string>;
|
|
420
457
|
private executed = false;
|
|
421
458
|
|
|
422
459
|
constructor(
|
|
423
460
|
private readonly validate: () => void,
|
|
424
461
|
private readonly submitter: (
|
|
425
462
|
packetName: string | undefined,
|
|
426
|
-
metadata: ReadonlyMap<string, string
|
|
427
|
-
|
|
463
|
+
metadata: ReadonlyMap<string, string>,
|
|
464
|
+
message?: unknown
|
|
465
|
+
) => ZLinkSubmitResult | Promise<ZLinkSubmitResult>,
|
|
466
|
+
private readonly message?: unknown
|
|
428
467
|
) {}
|
|
429
468
|
|
|
430
469
|
metadata(key: string, value: string): this;
|
|
431
470
|
metadata(metadata: ZLinkMessageMetadata): this;
|
|
432
471
|
metadata(keyOrMetadata: string | ZLinkMessageMetadata, value?: string): this {
|
|
433
472
|
ensureNotExecuted(this.executed);
|
|
473
|
+
this.selectedMetadata ??= new Map<string, string>();
|
|
434
474
|
if (typeof keyOrMetadata === 'string') {
|
|
435
475
|
this.selectedMetadata.set(keyOrMetadata, value!);
|
|
436
476
|
} else {
|
|
@@ -441,12 +481,22 @@ class DefaultZLinkSendCall implements ZLinkSendCall {
|
|
|
441
481
|
return this;
|
|
442
482
|
}
|
|
443
483
|
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
484
|
+
submit(): Promise<void> {
|
|
485
|
+
try {
|
|
486
|
+
ensureNotExecuted(this.executed);
|
|
487
|
+
this.validate();
|
|
488
|
+
this.executed = true;
|
|
489
|
+
const result = this.submitter(
|
|
490
|
+
undefined,
|
|
491
|
+
this.selectedMetadata ?? EMPTY_CALL_METADATA,
|
|
492
|
+
this.message
|
|
493
|
+
);
|
|
494
|
+
if (result instanceof Promise) return result.then(completeOneWaySend);
|
|
495
|
+
completeOneWaySend(result);
|
|
496
|
+
return completedOneWaySend;
|
|
497
|
+
} catch (error) {
|
|
498
|
+
return Promise.reject(error);
|
|
499
|
+
}
|
|
450
500
|
}
|
|
451
501
|
}
|
|
452
502
|
|
|
@@ -456,29 +506,47 @@ function ensureNotExecuted(executed: boolean): void {
|
|
|
456
506
|
}
|
|
457
507
|
}
|
|
458
508
|
|
|
459
|
-
|
|
460
|
-
|
|
509
|
+
const EMPTY_CALL_METADATA: ReadonlyMap<string, string> = new Map();
|
|
510
|
+
const completedOneWaySend = Promise.resolve();
|
|
511
|
+
|
|
512
|
+
function completeOneWaySend(result: ZLinkSubmitResult): void {
|
|
513
|
+
requireOneWayCompletion(result, 'One-way send');
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
function normalizeSubmitResult(
|
|
517
|
+
result: void | ZLinkSubmitResult | Promise<void | ZLinkSubmitResult>
|
|
518
|
+
): ZLinkSubmitResult | Promise<ZLinkSubmitResult> {
|
|
519
|
+
return result instanceof Promise
|
|
520
|
+
? result.then((value) => value ?? submittedResult)
|
|
521
|
+
: (result ?? submittedResult);
|
|
461
522
|
}
|
|
462
523
|
|
|
524
|
+
type ZLinkRequestSubmitter = <TReply>(
|
|
525
|
+
packetName: string | undefined,
|
|
526
|
+
timeoutMs: number | undefined,
|
|
527
|
+
metadata: ReadonlyMap<string, string>,
|
|
528
|
+
signal?: AbortSignal,
|
|
529
|
+
onAdmitted?: () => void,
|
|
530
|
+
message?: unknown
|
|
531
|
+
) => Promise<TReply>;
|
|
532
|
+
|
|
463
533
|
class DefaultZLinkRequestCall implements ZLinkChannelRequestCall {
|
|
464
534
|
private timeoutMs?: number;
|
|
465
|
-
private
|
|
535
|
+
private selectedMetadata?: Map<string, string>;
|
|
466
536
|
private readonly turn: ZLinkSpotSerialTurn | undefined = captureZLinkSpotSerialTurn();
|
|
467
537
|
|
|
538
|
+
/** `message` is the request payload a prepared submitter receives per call. */
|
|
468
539
|
constructor(
|
|
469
540
|
private readonly validate: () => void,
|
|
470
|
-
private readonly submitter:
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
metadata: ReadonlyMap<string, string>,
|
|
474
|
-
signal?: AbortSignal
|
|
475
|
-
) => Promise<TReply>,
|
|
476
|
-
private readonly defaultRequestTimeoutMs?: number
|
|
541
|
+
private readonly submitter: ZLinkRequestSubmitter,
|
|
542
|
+
private readonly defaultRequestTimeoutMs?: number,
|
|
543
|
+
private readonly message?: unknown
|
|
477
544
|
) {}
|
|
478
545
|
|
|
479
546
|
metadata(key: string, value: string): this;
|
|
480
547
|
metadata(metadata: ZLinkMessageMetadata): this;
|
|
481
548
|
metadata(keyOrMetadata: string | ZLinkMessageMetadata, value?: string): this {
|
|
549
|
+
this.selectedMetadata ??= new Map<string, string>();
|
|
482
550
|
if (typeof keyOrMetadata === 'string') {
|
|
483
551
|
this.selectedMetadata.set(keyOrMetadata, value!);
|
|
484
552
|
} else {
|
|
@@ -494,15 +562,19 @@ class DefaultZLinkRequestCall implements ZLinkChannelRequestCall {
|
|
|
494
562
|
return this;
|
|
495
563
|
}
|
|
496
564
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
565
|
+
submit<TReply>(signal?: AbortSignal): ZLinkRequest<TReply> {
|
|
566
|
+
return createZLinkRequest((onAdmitted) => {
|
|
567
|
+
throwIfAborted(signal);
|
|
568
|
+
this.validate();
|
|
569
|
+
return this.submitter<TReply>(
|
|
570
|
+
undefined,
|
|
571
|
+
this.timeoutMs ?? this.defaultRequestTimeoutMs,
|
|
572
|
+
this.selectedMetadata === undefined ? EMPTY_CALL_METADATA : new Map(this.selectedMetadata),
|
|
573
|
+
signal,
|
|
574
|
+
onAdmitted,
|
|
575
|
+
this.message
|
|
576
|
+
);
|
|
577
|
+
});
|
|
506
578
|
}
|
|
507
579
|
|
|
508
580
|
async yield<TReply>(signal?: AbortSignal): Promise<TReply> {
|
|
@@ -512,10 +584,12 @@ class DefaultZLinkRequestCall implements ZLinkChannelRequestCall {
|
|
|
512
584
|
const pending = this.submitter<TReply>(
|
|
513
585
|
undefined,
|
|
514
586
|
this.timeoutMs ?? this.defaultRequestTimeoutMs,
|
|
515
|
-
new Map(this.selectedMetadata),
|
|
516
|
-
signal
|
|
587
|
+
this.selectedMetadata === undefined ? EMPTY_CALL_METADATA : new Map(this.selectedMetadata),
|
|
588
|
+
signal,
|
|
589
|
+
undefined,
|
|
590
|
+
this.message
|
|
517
591
|
);
|
|
518
|
-
return turn.
|
|
592
|
+
return turn.yieldFrameworkPromise(pending);
|
|
519
593
|
}
|
|
520
594
|
}
|
|
521
595
|
|