@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
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkNativeFallbackBoundSession = void 0;
|
|
4
|
+
const Registration_1 = require("../../contracts/Configuration/Registration");
|
|
4
5
|
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
5
6
|
const contracts_1 = require("../../contracts");
|
|
6
7
|
const submission_result_1 = require("../messaging/submission-result");
|
|
7
8
|
const actors_1 = require("../actors");
|
|
8
9
|
const actor_packet_relay_wire_1 = require("../actors/actor-packet-relay-wire");
|
|
9
10
|
const bound_session_wire_1 = require("../actors/bound-session-wire");
|
|
10
|
-
const actor_routed_json_request_1 = require("../actors/actor-routed-json-request");
|
|
11
|
-
const protocol_1 = require("./protocol");
|
|
12
11
|
const packet_name_1 = require("../messaging/packet-name");
|
|
13
12
|
const flow_context_1 = require("../diagnostics/flow-context");
|
|
14
13
|
class ZLinkNativeFallbackBoundSession {
|
|
@@ -20,40 +19,12 @@ class ZLinkNativeFallbackBoundSession {
|
|
|
20
19
|
return new ZLinkNativeFallbackBoundSessionSendCall(this.options, message);
|
|
21
20
|
}
|
|
22
21
|
async disconnect(signal) {
|
|
23
|
-
const remoteTarget = this.options.remoteBoundSessionTargetProvider();
|
|
24
|
-
if (remoteTarget !== undefined) {
|
|
25
|
-
const spotKind = 'spotKind' in remoteTarget
|
|
26
|
-
? remoteTarget.spotKind
|
|
27
|
-
: undefined;
|
|
28
|
-
const payload = (0, actor_packet_relay_wire_1.encodeRemoteActorPacketRelayPayload)({
|
|
29
|
-
actorId: this.options.actorId,
|
|
30
|
-
routerChannelId: remoteTarget.routerChannelId,
|
|
31
|
-
header: (0, protocol_1.encodeStreamHeader)(disconnectedFrameHeader()),
|
|
32
|
-
payload: Buffer.alloc(0)
|
|
33
|
-
});
|
|
34
|
-
const target = {
|
|
35
|
-
routerChannelId: remoteTarget.routerChannelId,
|
|
36
|
-
targetNodeRid: remoteTarget.targetNodeRid,
|
|
37
|
-
spotId: remoteTarget.spotId,
|
|
38
|
-
spotKind: spotKind ?? contracts_1.ZLinkSpotKind.Entry
|
|
39
|
-
};
|
|
40
|
-
if (await (0, actor_routed_json_request_1.tryRequestRoutedJson)(this.options.routedTransport, target, payload, {
|
|
41
|
-
timeoutMs: this.options.requestTimeoutMs,
|
|
42
|
-
signal
|
|
43
|
-
})) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
await this.options.routedTransport.sendToSpot(target, payload, {
|
|
47
|
-
packetName: actors_1.ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET
|
|
48
|
-
});
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
22
|
const actorRef = this.options.actorRefProvider();
|
|
52
23
|
const node = this.options.nativeActorNodeProvider();
|
|
53
24
|
if (actorRef !== undefined &&
|
|
54
25
|
node !== undefined &&
|
|
55
26
|
currentBindingGeneration(actorRef) !== undefined) {
|
|
56
|
-
await this.options.runtime.disconnectNativeBoundSession(node, actorRef, signal);
|
|
27
|
+
await this.options.runtime.disconnectNativeBoundSession(node, actorRef, this.options.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, signal);
|
|
57
28
|
return;
|
|
58
29
|
}
|
|
59
30
|
await this.options.runtime.disconnectBoundSession(this.options.actorId, signal);
|
|
@@ -96,30 +67,11 @@ class ZLinkNativeFallbackBoundSessionSendCall {
|
|
|
96
67
|
async executeScoped(packetName) {
|
|
97
68
|
const localActor = this.options.localActorProvider?.() === true;
|
|
98
69
|
const remoteTarget = this.options.remoteBoundSessionTargetProvider();
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
return result;
|
|
105
|
-
}
|
|
106
|
-
// A local Actor with a concrete native owner has a direct binding path.
|
|
107
|
-
// Use that path before a routed transfer target. The transfer target is
|
|
108
|
-
// retained for actors whose current owner is remote or whose native
|
|
109
|
-
// binding is no longer available.
|
|
110
|
-
const actorRef = this.options.actorRefProvider();
|
|
111
|
-
const node = this.options.nativeActorNodeProvider();
|
|
112
|
-
const bindingGeneration = currentBindingGeneration(actorRef);
|
|
113
|
-
if (actorRef !== undefined && node !== undefined && bindingGeneration !== undefined) {
|
|
114
|
-
nativeAttempted = true;
|
|
115
|
-
const result = await this.options.runtime.sendNativeBoundSession(node, actorRef, this.message, packetName, this.selectedMetadata);
|
|
116
|
-
if (result.status !== submission_result_1.ZLinkSubmitStatus.TargetNotFound) {
|
|
117
|
-
this.traceSubmitted(result, packetName);
|
|
118
|
-
return result;
|
|
119
|
-
}
|
|
120
|
-
if (remoteTarget === undefined) {
|
|
121
|
-
return result;
|
|
122
|
-
}
|
|
70
|
+
if (localActor || remoteTarget === undefined) {
|
|
71
|
+
const localResult = await this.options.runtime.submitLocalBoundSession(this.options.actorId, this.message, packetName, this.selectedMetadata);
|
|
72
|
+
if (localResult.status !== submission_result_1.ZLinkSubmitStatus.TargetNotFound) {
|
|
73
|
+
this.traceSubmitted(localResult, packetName);
|
|
74
|
+
return localResult;
|
|
123
75
|
}
|
|
124
76
|
}
|
|
125
77
|
if (remoteTarget !== undefined) {
|
|
@@ -152,18 +104,10 @@ class ZLinkNativeFallbackBoundSessionSendCall {
|
|
|
152
104
|
this.traceSubmitted(result, packetName);
|
|
153
105
|
return result;
|
|
154
106
|
}
|
|
155
|
-
const localResult = await this.options.runtime.submitLocalBoundSession(this.options.actorId, this.message, packetName, this.selectedMetadata);
|
|
156
|
-
if (localResult.status !== submission_result_1.ZLinkSubmitStatus.TargetNotFound) {
|
|
157
|
-
this.traceSubmitted(localResult, packetName);
|
|
158
|
-
return localResult;
|
|
159
|
-
}
|
|
160
107
|
const actorRef = this.options.actorRefProvider();
|
|
161
108
|
const node = this.options.nativeActorNodeProvider();
|
|
162
109
|
const bindingGeneration = currentBindingGeneration(actorRef);
|
|
163
|
-
if (
|
|
164
|
-
actorRef !== undefined &&
|
|
165
|
-
node !== undefined &&
|
|
166
|
-
bindingGeneration !== undefined) {
|
|
110
|
+
if (actorRef !== undefined && node !== undefined && bindingGeneration !== undefined) {
|
|
167
111
|
const result = await this.options.runtime.sendNativeBoundSession(node, actorRef, this.message, packetName, this.selectedMetadata);
|
|
168
112
|
this.traceSubmitted(result, packetName);
|
|
169
113
|
return result;
|
|
@@ -189,12 +133,3 @@ function currentBindingGeneration(actorRef) {
|
|
|
189
133
|
function positiveBindingGeneration(generation) {
|
|
190
134
|
return generation !== undefined && generation > 0n ? generation : undefined;
|
|
191
135
|
}
|
|
192
|
-
function disconnectedFrameHeader() {
|
|
193
|
-
return {
|
|
194
|
-
kind: protocol_1.ZLinkStreamMessageKind.Send,
|
|
195
|
-
codec: protocol_1.ZLinkStreamCodec.Raw,
|
|
196
|
-
flags: protocol_1.ZLinkStreamHeaderFlags.None,
|
|
197
|
-
name: actors_1.ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET,
|
|
198
|
-
metadata: new Map()
|
|
199
|
-
};
|
|
200
|
-
}
|
|
@@ -3,7 +3,7 @@ import type { ZLinkRuntimeMetrics } from '../diagnostics';
|
|
|
3
3
|
import { ZLinkActorSessionBindingRegistry, type ZLinkActorSessionAuthorityFence } from './actor-session-binding-registry';
|
|
4
4
|
import { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
|
|
5
5
|
import { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './session-context';
|
|
6
|
-
import type { ZLinkSessionBindingConfirmationOptions } from './stream-binding-runtime-ports';
|
|
6
|
+
import type { ZLinkActorRouteCommitOptions, ZLinkSessionBindingConfirmationOptions } from './stream-binding-runtime-ports';
|
|
7
7
|
export interface ZLinkSessionActorCoordinatorOptions {
|
|
8
8
|
readonly actorBindTimeoutMs?: number;
|
|
9
9
|
readonly actorRefResolver?: (actor: ZLinkActor) => ActorRef;
|
|
@@ -28,17 +28,11 @@ export declare class ZLinkSessionActorCoordinator {
|
|
|
28
28
|
constructor(routes: ZLinkActorSessionBindingRegistry<DefaultZLinkSessionContext, DefaultZLinkSessionActor>, sessionActorRuntime: ConstructorParameters<typeof DefaultZLinkSessionActor>[0], options?: ZLinkSessionActorCoordinatorOptions, lifecycle?: ZLinkActorSessionLifecycleCoordinator);
|
|
29
29
|
bind(context: DefaultZLinkSessionContext, actorOrRef: ZLinkActor | ActorRef, signal?: AbortSignal): Promise<DefaultZLinkSessionActor>;
|
|
30
30
|
private replaceBinding;
|
|
31
|
-
private replaceBindingCore;
|
|
32
31
|
private resolveAuthorityFence;
|
|
33
32
|
bindOrGet(context: DefaultZLinkSessionContext, actorRef: ActorRef, signal?: AbortSignal): Promise<DefaultZLinkSessionActor>;
|
|
34
33
|
rebindActor(actorRef: ActorRef, signal?: AbortSignal): Promise<void>;
|
|
35
34
|
refreshActor(actorRef: ActorRef, signal?: AbortSignal): Promise<void>;
|
|
36
|
-
commitActorRoute(actorRef: ActorRef, signal?: AbortSignal, options?:
|
|
37
|
-
readonly confirmRemoteSessionBinding?: boolean | 'send';
|
|
38
|
-
readonly releaseSeal?: {
|
|
39
|
-
readonly sealId: string;
|
|
40
|
-
};
|
|
41
|
-
}): Promise<void>;
|
|
35
|
+
commitActorRoute(actorRef: ActorRef, signal?: AbortSignal, options?: ZLinkActorRouteCommitOptions): Promise<void>;
|
|
42
36
|
retireRemoteBinding(actorRef: ActorRef, sessionRid: ActorRef['nodeRid'], bindingGeneration: bigint, signal?: AbortSignal): Promise<boolean>;
|
|
43
37
|
authorityFence(actorId: string): Promise<{
|
|
44
38
|
readonly authorityOwnerGeneration: bigint;
|
|
@@ -26,10 +26,7 @@ class ZLinkSessionActorCoordinator {
|
|
|
26
26
|
: this.resolveActorRef(actorOrRef);
|
|
27
27
|
return await this.lifecycle.run(actorRef.actorId, async () => this.replaceBinding(context, actorRef, signal));
|
|
28
28
|
}
|
|
29
|
-
async replaceBinding(context, actorRef, signal
|
|
30
|
-
return await this.replaceBindingCore(context, actorRef, signal, confirmRemoteSessionBinding, releaseSeal);
|
|
31
|
-
}
|
|
32
|
-
async replaceBindingCore(context, actorRef, signal, confirmRemoteSessionBinding = true, releaseSeal) {
|
|
29
|
+
async replaceBinding(context, actorRef, signal) {
|
|
33
30
|
(0, abort_1.throwIfAborted)(signal);
|
|
34
31
|
if (actorRef.actorId.trim().length === 0) {
|
|
35
32
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorRouteNotFound, 'Actor id must not be empty.');
|
|
@@ -60,22 +57,15 @@ class ZLinkSessionActorCoordinator {
|
|
|
60
57
|
: undefined, previous?.actor.ref);
|
|
61
58
|
const sessionActor = reuseActor ??
|
|
62
59
|
new session_context_1.DefaultZLinkSessionActor(this.sessionActorRuntime, boundActorRef, bindingToken);
|
|
63
|
-
const sessionIdentity =
|
|
60
|
+
const sessionIdentity = this.actorBindingRoutingId(context);
|
|
64
61
|
if (previous === undefined) {
|
|
65
|
-
if (releaseSeal !== undefined) {
|
|
66
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorSessionNotBound, `Actor '${actorRef.actorId}' route switch has no Session binding to release.`, true);
|
|
67
|
-
}
|
|
68
62
|
await this.routes.bind(context, sessionActor, bindingToken, authorityFence, sessionIdentity, () => sessionActor.updateRef(boundActorRef));
|
|
69
63
|
}
|
|
70
|
-
else if (releaseSeal !== undefined) {
|
|
71
|
-
await this.routes.replaceAndReleaseSeal(previous, context, sessionActor, bindingToken, releaseSeal.sealId, authorityFence, sessionIdentity, () => sessionActor.updateRef(boundActorRef));
|
|
72
|
-
}
|
|
73
64
|
else {
|
|
74
65
|
await this.routes.replace(previous, context, sessionActor, bindingToken, authorityFence, sessionIdentity, () => sessionActor.updateRef(boundActorRef));
|
|
75
66
|
}
|
|
76
|
-
if (
|
|
77
|
-
|
|
78
|
-
const waitForAcknowledgement = previous === undefined && confirmRemoteSessionBinding !== 'send';
|
|
67
|
+
if (this.options.confirmRemoteActorSessionBinding !== undefined) {
|
|
68
|
+
const waitForAcknowledgement = previous === undefined;
|
|
79
69
|
const confirmation = this.options.confirmRemoteActorSessionBinding(boundActorRef, this.actorBindingRoutingId(context), undefined, {
|
|
80
70
|
waitForAcknowledgement,
|
|
81
71
|
binding: context.stream instanceof managed_stream_1.ZLinkManagedStream
|
|
@@ -204,25 +194,18 @@ class ZLinkSessionActorCoordinator {
|
|
|
204
194
|
if (route === undefined)
|
|
205
195
|
return;
|
|
206
196
|
requireSameIncarnation(route.actor.ref, normalizedActorRef);
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
}
|
|
219
|
-
if (options.releaseSeal !== undefined &&
|
|
220
|
-
!(await this.routes.abortSeal(normalizedActorRef.actorId, options.releaseSeal.sealId))) {
|
|
221
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor '${normalizedActorRef.actorId}' route switch lost its relocation seal.`, true);
|
|
222
|
-
}
|
|
223
|
-
return;
|
|
197
|
+
const authorityFence = await this.resolveAuthorityFence(normalizedActorRef, signal);
|
|
198
|
+
// Relocation changes only the Actor route of this physical binding.
|
|
199
|
+
// Publish the ref and authority together in the binding registry's turn;
|
|
200
|
+
// a native bind would issue a different binding generation.
|
|
201
|
+
const boundActorRef = withBindingGeneration(normalizedActorRef, bindingGenerationOf(route.actor.ref), undefined);
|
|
202
|
+
const commitActor = () => route.actor.updateRef(boundActorRef);
|
|
203
|
+
if (options.releaseSeal !== undefined) {
|
|
204
|
+
await this.routes.replaceAndReleaseSeal(route, route.context, route.actor, route.bindingToken, options.releaseSeal.sealId, authorityFence, route.sessionIdentity, commitActor);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
await this.routes.replace(route, route.context, route.actor, route.bindingToken, authorityFence, route.sessionIdentity, commitActor);
|
|
224
208
|
}
|
|
225
|
-
await this.replaceBinding(route.context, normalizedActorRef, signal, options.confirmRemoteSessionBinding, options.releaseSeal);
|
|
226
209
|
});
|
|
227
210
|
}
|
|
228
211
|
async retireRemoteBinding(actorRef, sessionRid, bindingGeneration, signal) {
|
|
@@ -26,15 +26,8 @@ export interface ZLinkStreamActorLifecyclePort {
|
|
|
26
26
|
}
|
|
27
27
|
export interface ZLinkActorRouteCommitOptions {
|
|
28
28
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* request/ACK would create a nested route request while the Session
|
|
32
|
-
* ownership command is being dispatched.
|
|
33
|
-
*/
|
|
34
|
-
readonly confirmRemoteSessionBinding?: boolean | 'send';
|
|
35
|
-
/**
|
|
36
|
-
* Command 44 keeps ingress sealed while the native route is prepared, then
|
|
37
|
-
* publishes the new route and releases this exact seal in one owner turn.
|
|
29
|
+
* Command 44 publishes the Actor route of the existing binding and releases
|
|
30
|
+
* this exact seal in one owner turn.
|
|
38
31
|
*/
|
|
39
32
|
readonly releaseSeal?: {
|
|
40
33
|
readonly sealId: string;
|
|
@@ -68,7 +61,7 @@ export interface ZLinkRemoteBoundSessionPort extends ZLinkStreamActorLifecyclePo
|
|
|
68
61
|
sendNativeBoundSessionError(node: ZLinkBackendActorSessionNode, actorRef: ActorRef, packetName: string, requestSeq: bigint, error: unknown, metadata: ReadonlyMap<string, string>, signal?: AbortSignal): Promise<void>;
|
|
69
62
|
}
|
|
70
63
|
export interface ZLinkNativeFallbackBoundSessionPort {
|
|
71
|
-
disconnectNativeBoundSession(node: ZLinkBackendActorSessionNode, actorRef: ActorRef, signal?: AbortSignal): Promise<void>;
|
|
64
|
+
disconnectNativeBoundSession(node: ZLinkBackendActorSessionNode, actorRef: ActorRef, timeoutMs: number, signal?: AbortSignal): Promise<void>;
|
|
72
65
|
disconnectBoundSession(actorId: string, signal?: AbortSignal): Promise<void>;
|
|
73
66
|
sendLocalBoundSession(actorId: string, message: unknown, packetName: string | undefined, metadata: ReadonlyMap<string, string>): Promise<boolean>;
|
|
74
67
|
submitLocalBoundSession(actorId: string, message: unknown, packetName: string | undefined, metadata: ReadonlyMap<string, string>, signal?: AbortSignal): Promise<ZLinkSubmitResult>;
|
|
@@ -134,7 +134,7 @@ export declare class ZLinkStreamSessionNodeRuntime {
|
|
|
134
134
|
private readonly receiveAbortController;
|
|
135
135
|
private receiveLoop;
|
|
136
136
|
private monitorLoop;
|
|
137
|
-
private
|
|
137
|
+
private receiveWake;
|
|
138
138
|
private receiveWorkSinceYield;
|
|
139
139
|
constructor(options: ZLinkStreamSessionNodeRuntimeOptions & ZLinkStreamLivenessOptions);
|
|
140
140
|
start(): void;
|
|
@@ -33,27 +33,6 @@ const systemLivenessClock = {
|
|
|
33
33
|
setTimer: (callback, delayMs) => setTimeout(callback, Math.min(delayMs, MAX_TIMER_DELAY_MS)),
|
|
34
34
|
clearTimer: (timer) => clearTimeout(timer)
|
|
35
35
|
};
|
|
36
|
-
class ZLinkStreamReceiveWake {
|
|
37
|
-
pending;
|
|
38
|
-
resolvePending;
|
|
39
|
-
finish = () => {
|
|
40
|
-
const resolve = this.resolvePending;
|
|
41
|
-
this.pending = undefined;
|
|
42
|
-
this.resolvePending = undefined;
|
|
43
|
-
resolve?.();
|
|
44
|
-
};
|
|
45
|
-
wait() {
|
|
46
|
-
if (this.pending !== undefined)
|
|
47
|
-
return this.pending;
|
|
48
|
-
this.pending = new Promise((resolve) => {
|
|
49
|
-
this.resolvePending = resolve;
|
|
50
|
-
});
|
|
51
|
-
return this.pending;
|
|
52
|
-
}
|
|
53
|
-
wake() {
|
|
54
|
-
this.finish();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
36
|
class ZLinkStreamSessionRuntime {
|
|
58
37
|
options;
|
|
59
38
|
removeSession;
|
|
@@ -87,7 +66,7 @@ class ZLinkStreamSessionRuntime {
|
|
|
87
66
|
this.traceFrameWritten(kind, packetName, correlationId);
|
|
88
67
|
});
|
|
89
68
|
const sessionOrPromise = options.sessionFactory(this.context);
|
|
90
|
-
this.sessionReady = isPromiseLike(sessionOrPromise)
|
|
69
|
+
this.sessionReady = (0, abort_1.isPromiseLike)(sessionOrPromise)
|
|
91
70
|
? sessionOrPromise.then((session) => this.completeSessionCreation(session), (error) => {
|
|
92
71
|
this.context.completeConfiguration();
|
|
93
72
|
throw error;
|
|
@@ -650,7 +629,7 @@ class ZLinkStreamSessionNodeRuntime {
|
|
|
650
629
|
receiveAbortController = new AbortController();
|
|
651
630
|
receiveLoop;
|
|
652
631
|
monitorLoop;
|
|
653
|
-
receiveWake
|
|
632
|
+
receiveWake;
|
|
654
633
|
receiveWorkSinceYield = 0;
|
|
655
634
|
constructor(options) {
|
|
656
635
|
this.options = options;
|
|
@@ -1113,13 +1092,20 @@ class ZLinkStreamSessionNodeRuntime {
|
|
|
1113
1092
|
});
|
|
1114
1093
|
}
|
|
1115
1094
|
async waitReceiveLoopWake(signal) {
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1095
|
+
const wake = new AbortController();
|
|
1096
|
+
this.receiveWake = wake;
|
|
1097
|
+
try {
|
|
1098
|
+
// Readiness, internal wake and shutdown share one cancellable wait;
|
|
1099
|
+
// no losing Promise retains reactions across receive cycles.
|
|
1100
|
+
await this.options.readablePoller.waitForReadable(AbortSignal.any([signal, wake.signal]));
|
|
1101
|
+
}
|
|
1102
|
+
finally {
|
|
1103
|
+
wake.abort();
|
|
1104
|
+
this.receiveWake = undefined;
|
|
1105
|
+
}
|
|
1120
1106
|
}
|
|
1121
1107
|
wakeReceiveLoop() {
|
|
1122
|
-
this.receiveWake
|
|
1108
|
+
this.receiveWake?.abort();
|
|
1123
1109
|
}
|
|
1124
1110
|
getOrCreateSession(routingId) {
|
|
1125
1111
|
const sessionId = (0, managed_stream_1.streamSessionIdFromRoutingId)(routingId);
|
|
@@ -1153,9 +1139,6 @@ function streamMonitorHasEndpoint(event) {
|
|
|
1153
1139
|
const endpoint = event;
|
|
1154
1140
|
return endpoint.localAddr !== undefined || endpoint.remoteAddr !== undefined;
|
|
1155
1141
|
}
|
|
1156
|
-
function isPromiseLike(value) {
|
|
1157
|
-
return typeof value.then === 'function';
|
|
1158
|
-
}
|
|
1159
1142
|
function normalizeStreamCloseReason(reason) {
|
|
1160
1143
|
switch (reason) {
|
|
1161
1144
|
case 'client_close':
|
|
@@ -409,7 +409,7 @@ class DefaultZLinkWorkerCall {
|
|
|
409
409
|
yield(signal) {
|
|
410
410
|
const turn = (0, execution_1.requireZLinkYieldTurn)(this.turn);
|
|
411
411
|
const pending = this.begin(signal);
|
|
412
|
-
return turn.
|
|
412
|
+
return turn.yieldFrameworkPromise(pending);
|
|
413
413
|
}
|
|
414
414
|
begin(signal) {
|
|
415
415
|
if (this.terminatorSelected) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zlink-systems/framework",
|
|
3
|
-
"version": "0.30.
|
|
3
|
+
"version": "0.30.2",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@opentelemetry/api": "^1.9.1",
|
|
21
21
|
"@opentelemetry/api-logs": "^0.221.0",
|
|
22
|
-
"@zlink-systems/stream-wire": "0.30.
|
|
23
|
-
"@zlink-systems/zlink": "1.
|
|
22
|
+
"@zlink-systems/stream-wire": "0.30.2",
|
|
23
|
+
"@zlink-systems/zlink": "1.20.0"
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ActorId } from '../Common';
|
|
2
|
+
import type { ZLinkRequest } from '../Handlers/Attributes';
|
|
2
3
|
|
|
3
4
|
export interface ZLinkActorClient {
|
|
4
5
|
sendToActor(actorId: ActorId, message: unknown): ZLinkActorSendCall;
|
|
@@ -13,6 +14,6 @@ export interface ZLinkActorSendCall {
|
|
|
13
14
|
export interface ZLinkActorRequestCall {
|
|
14
15
|
metadata(key: string, value: string): this;
|
|
15
16
|
timeout(timeoutMs: number): this;
|
|
16
|
-
submit<TReply>(signal?: AbortSignal):
|
|
17
|
+
submit<TReply>(signal?: AbortSignal): ZLinkRequest<TReply>;
|
|
17
18
|
yield<TReply>(signal?: AbortSignal): Promise<TReply>;
|
|
18
19
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ZLinkMessageMetadata } from '../Common';
|
|
2
|
+
import type { ZLinkRequest } from '../Handlers/Attributes';
|
|
2
3
|
|
|
3
4
|
export interface ZLinkSendCall {
|
|
4
5
|
metadata(key: string, value: string): this;
|
|
@@ -10,7 +11,7 @@ export interface ZLinkRequestCall {
|
|
|
10
11
|
metadata(key: string, value: string): this;
|
|
11
12
|
metadata(metadata: ZLinkMessageMetadata): this;
|
|
12
13
|
timeout(timeoutMs: number): this;
|
|
13
|
-
submit<TReply>(signal?: AbortSignal):
|
|
14
|
+
submit<TReply>(signal?: AbortSignal): ZLinkRequest<TReply>;
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
export interface ZLinkChannelRequestCall extends ZLinkRequestCall {
|
|
@@ -1,18 +1,38 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
adoptEncodedPayload,
|
|
3
|
+
borrowEncodedPayload,
|
|
4
|
+
storeEncodedPayload
|
|
5
|
+
} from './encoded-payload-storage';
|
|
2
6
|
|
|
3
7
|
export class ZLinkEncodedPayload {
|
|
4
|
-
private constructor(bytes: Uint8Array) {
|
|
5
|
-
|
|
8
|
+
private constructor(bytes: Uint8Array, owned: boolean) {
|
|
9
|
+
if (owned) {
|
|
10
|
+
adoptEncodedPayload(this, bytes);
|
|
11
|
+
} else {
|
|
12
|
+
storeEncodedPayload(this, bytes);
|
|
13
|
+
}
|
|
6
14
|
}
|
|
7
15
|
|
|
16
|
+
/** Copies the supplied bytes. */
|
|
8
17
|
static from(bytes: Uint8Array): ZLinkEncodedPayload {
|
|
9
|
-
return new ZLinkEncodedPayload(bytes);
|
|
18
|
+
return new ZLinkEncodedPayload(bytes, false);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Retains the supplied bytes without copying. Do not modify them afterward; mutation changes the payload. */
|
|
22
|
+
static fromOwned(bytes: Uint8Array): ZLinkEncodedPayload {
|
|
23
|
+
return new ZLinkEncodedPayload(bytes, true);
|
|
10
24
|
}
|
|
11
25
|
|
|
26
|
+
/** Returns a copy of the stored bytes. */
|
|
12
27
|
data(): Uint8Array {
|
|
13
28
|
return new Uint8Array(this.stored());
|
|
14
29
|
}
|
|
15
30
|
|
|
31
|
+
/** Returns the stored bytes without copying. Do not modify this view or its backing buffer. */
|
|
32
|
+
view(): Readonly<Uint8Array> {
|
|
33
|
+
return this.stored();
|
|
34
|
+
}
|
|
35
|
+
|
|
16
36
|
toBytes(): Uint8Array {
|
|
17
37
|
return this.data();
|
|
18
38
|
}
|
|
@@ -11,7 +11,7 @@ export interface ZLinkMessageMetadataPolicy {
|
|
|
11
11
|
class ImmutableZLinkMessageMetadata implements ZLinkMessageMetadata {
|
|
12
12
|
readonly values: ReadonlyMap<string, string>;
|
|
13
13
|
|
|
14
|
-
constructor(values:
|
|
14
|
+
constructor(values: Iterable<readonly [string, string]> = []) {
|
|
15
15
|
this.values = Object.freeze(new ImmutableMetadataMap(values));
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -23,12 +23,8 @@ class ImmutableZLinkMessageMetadata implements ZLinkMessageMetadata {
|
|
|
23
23
|
class ImmutableMetadataMap implements ReadonlyMap<string, string> {
|
|
24
24
|
readonly #values: Map<string, string>;
|
|
25
25
|
|
|
26
|
-
constructor(values:
|
|
27
|
-
this.#values = new Map(
|
|
28
|
-
typeof (values as ReadonlyMap<string, string>)[Symbol.iterator] === 'function'
|
|
29
|
-
? (values as ReadonlyMap<string, string>)
|
|
30
|
-
: Object.entries(values)
|
|
31
|
-
);
|
|
26
|
+
constructor(values: Iterable<readonly [string, string]>) {
|
|
27
|
+
this.#values = new Map(values);
|
|
32
28
|
}
|
|
33
29
|
|
|
34
30
|
get size(): number {
|
|
@@ -74,5 +70,14 @@ export const ZLinkMessageMetadataEmpty: ZLinkMessageMetadata = Object.freeze(
|
|
|
74
70
|
export function zlinkMessageMetadata(
|
|
75
71
|
values: ReadonlyMap<string, string> | Readonly<Record<string, string>>
|
|
76
72
|
): ZLinkMessageMetadata {
|
|
77
|
-
|
|
73
|
+
const entries =
|
|
74
|
+
typeof (values as ReadonlyMap<string, string>)[Symbol.iterator] === 'function'
|
|
75
|
+
? (values as ReadonlyMap<string, string>)
|
|
76
|
+
: Object.entries(values);
|
|
77
|
+
const size = Array.isArray(entries)
|
|
78
|
+
? entries.length
|
|
79
|
+
: (entries as ReadonlyMap<string, string>).size;
|
|
80
|
+
return size === 0
|
|
81
|
+
? ZLinkMessageMetadataEmpty
|
|
82
|
+
: Object.freeze(new ImmutableZLinkMessageMetadata(entries));
|
|
78
83
|
}
|
|
@@ -6,9 +6,12 @@ export function storeEncodedPayload(owner: object, bytes: Uint8Array): Buffer {
|
|
|
6
6
|
return stored;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
export function adoptEncodedPayload(owner: object, bytes:
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
export function adoptEncodedPayload(owner: object, bytes: Uint8Array): Buffer {
|
|
10
|
+
const stored = Buffer.isBuffer(bytes)
|
|
11
|
+
? bytes
|
|
12
|
+
: Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
13
|
+
encodedPayloadStorage.set(owner, stored);
|
|
14
|
+
return stored;
|
|
12
15
|
}
|
|
13
16
|
|
|
14
17
|
export function borrowEncodedPayload(owner: object): Buffer | undefined {
|
|
@@ -141,7 +141,10 @@ export interface ZLinkMeshObjectRoleBuilder {
|
|
|
141
141
|
export interface ZLinkMeshObjectClientBuilder {}
|
|
142
142
|
|
|
143
143
|
export interface ZLinkMeshObjectServerBuilder {
|
|
144
|
-
addEntrySpot<TEntrySpot extends ZLinkEntrySpot>(
|
|
144
|
+
addEntrySpot<TEntrySpot extends ZLinkEntrySpot>(
|
|
145
|
+
entrySpotType: Type<TEntrySpot>,
|
|
146
|
+
actorType: string
|
|
147
|
+
): this;
|
|
145
148
|
addSpotFactory<TSpot extends ZLinkSpot>(
|
|
146
149
|
spotType: string,
|
|
147
150
|
implementation: Type<TSpot>,
|
|
@@ -68,13 +68,18 @@ export function validateSessionReplacementCallbackTimeout(timeoutMs: number): nu
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
export function registerEntrySpot(
|
|
71
|
-
options: { entrySpotType?: Type<ZLinkEntrySpot
|
|
72
|
-
entrySpotType: Type<ZLinkEntrySpot
|
|
71
|
+
options: { entrySpotType?: Type<ZLinkEntrySpot>; entrySpotActorType?: string },
|
|
72
|
+
entrySpotType: Type<ZLinkEntrySpot>,
|
|
73
|
+
actorType: string
|
|
73
74
|
): void {
|
|
74
75
|
if (options.entrySpotType !== undefined) {
|
|
75
76
|
throw new ZLinkConfigurationException('Duplicate Entry Spot registration on SpotNode.');
|
|
76
77
|
}
|
|
78
|
+
if (typeof actorType !== 'string' || actorType.length === 0) {
|
|
79
|
+
throw new ZLinkConfigurationException('Entry Spot Actor type must be a non-empty string.');
|
|
80
|
+
}
|
|
77
81
|
options.entrySpotType = entrySpotType;
|
|
82
|
+
options.entrySpotActorType = actorType;
|
|
78
83
|
}
|
|
79
84
|
|
|
80
85
|
export function registerSpotFactory(
|
|
@@ -1234,8 +1234,11 @@ class DefaultMeshObjectServerBuilder implements ZLinkMeshObjectServerBuilder {
|
|
|
1234
1234
|
private readonly node: MutableSpotNodeOptions
|
|
1235
1235
|
) {}
|
|
1236
1236
|
|
|
1237
|
-
addEntrySpot<TEntrySpot extends ZLinkEntrySpot>(
|
|
1238
|
-
|
|
1237
|
+
addEntrySpot<TEntrySpot extends ZLinkEntrySpot>(
|
|
1238
|
+
entrySpotType: Type<TEntrySpot>,
|
|
1239
|
+
actorType: string
|
|
1240
|
+
): this {
|
|
1241
|
+
registerEntrySpot(this.node, entrySpotType, actorType);
|
|
1239
1242
|
return this;
|
|
1240
1243
|
}
|
|
1241
1244
|
|
|
@@ -1646,6 +1649,7 @@ interface MutableSpotNodeOptions {
|
|
|
1646
1649
|
router?: MutableSpotRouterCapabilityOptions;
|
|
1647
1650
|
pubSub?: MutableSpotPubSubCapabilityOptions;
|
|
1648
1651
|
entrySpotType?: Type<ZLinkEntrySpot>;
|
|
1652
|
+
entrySpotActorType?: string;
|
|
1649
1653
|
spotFactories?: Type<ZLinkSpot>[];
|
|
1650
1654
|
spotFactoryRegistrations?: Record<
|
|
1651
1655
|
string,
|
|
@@ -268,6 +268,7 @@ export interface ZLinkSpotNodeOptions {
|
|
|
268
268
|
readonly router?: ZLinkSpotRouterCapabilityOptions;
|
|
269
269
|
readonly pubSub?: ZLinkSpotPubSubCapabilityOptions;
|
|
270
270
|
readonly entrySpotType?: Type<ZLinkEntrySpot>;
|
|
271
|
+
readonly entrySpotActorType?: string;
|
|
271
272
|
readonly spotFactories?: readonly Type<ZLinkSpot>[];
|
|
272
273
|
readonly spotFactoryRegistrations?: Readonly<
|
|
273
274
|
Record<
|
|
@@ -85,7 +85,7 @@ export interface ZLinkRuntimeMessageFlowEvent {
|
|
|
85
85
|
readonly commandId?: number;
|
|
86
86
|
readonly messageSize?: number;
|
|
87
87
|
readonly durationSeconds?: number;
|
|
88
|
-
readonly errorReason?: ZLinkDispatchErrorReason;
|
|
88
|
+
readonly errorReason?: ZLinkDispatchErrorReason | 'activation_timeout' | 'activation_rejected';
|
|
89
89
|
readonly errorAction?: ZLinkDispatchErrorAction;
|
|
90
90
|
readonly errorType?: string;
|
|
91
91
|
readonly errorMessage?: string;
|
|
@@ -195,6 +195,7 @@ export type ZLinkDispatchErrorReason =
|
|
|
195
195
|
| 'unexpected_reply'
|
|
196
196
|
| 'backpressure'
|
|
197
197
|
| 'target_closed'
|
|
198
|
+
| 'location_unavailable'
|
|
198
199
|
| 'stale_target'
|
|
199
200
|
| 'shutdown';
|
|
200
201
|
|
|
@@ -4,23 +4,25 @@ import {
|
|
|
4
4
|
type ZLinkPacketJsonContract
|
|
5
5
|
} from './JsonContract';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
readonly jsonContract?: ZLinkPacketJsonContract;
|
|
18
|
-
}
|
|
7
|
+
import {
|
|
8
|
+
ZLINK_DECORATOR_METADATA,
|
|
9
|
+
readZLinkDecoratorMetadata,
|
|
10
|
+
type ZLinkDecoratorMetadata
|
|
11
|
+
} from '@zlink-systems/stream-wire/internal/json';
|
|
12
|
+
export {
|
|
13
|
+
ZLINK_DECORATOR_METADATA,
|
|
14
|
+
readZLinkDecoratorMetadata
|
|
15
|
+
} from '@zlink-systems/stream-wire/internal/json';
|
|
16
|
+
export type { ZLinkDecoratorMetadata } from '@zlink-systems/stream-wire/internal/json';
|
|
19
17
|
|
|
20
18
|
export function ZLinkHandlerGroup(groupName: string): ClassDecorator {
|
|
21
19
|
return classDecorator({ kind: 'handlerGroup', groupName });
|
|
22
20
|
}
|
|
23
21
|
|
|
22
|
+
export interface ZLinkRequest<TReply> extends Promise<TReply> {
|
|
23
|
+
readonly admitted: Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
|
|
24
26
|
export function ZLinkRequest(packetName?: string): MethodDecorator {
|
|
25
27
|
return methodDecorator({ kind: 'request', packetName });
|
|
26
28
|
}
|
|
@@ -106,12 +108,3 @@ function appendMetadata(target: object, metadata: ZLinkDecoratorMetadata): void
|
|
|
106
108
|
writable: false
|
|
107
109
|
});
|
|
108
110
|
}
|
|
109
|
-
|
|
110
|
-
export function readZLinkDecoratorMetadata(target: object): readonly ZLinkDecoratorMetadata[] {
|
|
111
|
-
if (!Object.prototype.hasOwnProperty.call(target, ZLINK_DECORATOR_METADATA)) {
|
|
112
|
-
return [];
|
|
113
|
-
}
|
|
114
|
-
return (target as Record<symbol, unknown>)[
|
|
115
|
-
ZLINK_DECORATOR_METADATA
|
|
116
|
-
] as readonly ZLinkDecoratorMetadata[];
|
|
117
|
-
}
|