@zlink-systems/framework 0.25.0 → 0.27.0
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/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +5 -0
- package/dist/internal.js +16 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +28 -0
- package/dist/runtime/activation-admission.js +57 -0
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +42 -143
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +19 -17
- package/dist/runtime/actors/actor-handoff.d.ts +13 -7
- package/dist/runtime/actors/actor-handoff.js +36 -25
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +85 -123
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
- package/dist/runtime/actors/actor-remote-joiner.js +11 -17
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
- package/dist/runtime/actors/actor-request-deadline.js +31 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
- package/dist/runtime/actors/deferred-join-completion.js +21 -0
- package/dist/runtime/actors/index.d.ts +10 -8
- package/dist/runtime/actors/index.js +101 -73
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +7 -1
- package/dist/runtime/admission.js +11 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +8 -33
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
- package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -9
- package/dist/runtime/channels/channel-clients.js +68 -60
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.js +47 -29
- package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
- package/dist/runtime/channels/channel-outbound-operations.js +9 -18
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
- package/dist/runtime/channels/channel-runtime-manager.js +4 -12
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
- package/dist/runtime/channels/channel-socket-registry.js +296 -235
- package/dist/runtime/channels/channel-transports.d.ts +11 -20
- package/dist/runtime/channels/channel-transports.js +68 -47
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +133 -81
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.js +3 -2
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +22 -9
- package/dist/runtime/execution/index.js +107 -37
- package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
- package/dist/runtime/execution/serial-execution-queue.js +99 -26
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/listener-records.d.ts +11 -0
- package/dist/runtime/foundation/listener-records.js +20 -0
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
- package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
- package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
- package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
- package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
- package/dist/runtime/foundation/service-topology-registry.js +22 -61
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
- package/dist/runtime/host/actor-packet-relay.js +48 -91
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
- package/dist/runtime/host/actor-transfer-runtime.js +210 -256
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +19 -14
- package/dist/runtime/host/index.js +234 -175
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +11 -23
- package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
- package/dist/runtime/host/route-mesh-runtime.js +178 -257
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
- package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
- package/dist/runtime/host/spot-address-transport.d.ts +2 -3
- package/dist/runtime/host/spot-address-transport.js +34 -136
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
- package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
- package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
- package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +5 -10
- package/dist/runtime/locations/lifecycle.js +4 -33
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +303 -332
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +44 -30
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
- package/dist/runtime/locations/spot-location-claims.js +40 -23
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/submission-result.d.ts +3 -0
- package/dist/runtime/messaging/submission-result.js +48 -0
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
- package/dist/runtime/spots/index.d.ts +29 -29
- package/dist/runtime/spots/index.js +441 -313
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
- package/dist/runtime/spots/spot-activation-registry.js +27 -60
- package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
- package/dist/runtime/spots/spot-activation-state.js +4 -17
- package/dist/runtime/spots/spot-activation.d.ts +10 -9
- package/dist/runtime/spots/spot-activation.js +103 -81
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
- package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
- package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
- package/dist/runtime/spots/spot-actor-membership.js +44 -53
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-entry-activation.js +9 -21
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +6 -5
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
- package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +10 -37
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
- package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
- package/dist/runtime/spots/spot-serial-executor.js +9 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
- package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
- package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -19
- package/dist/runtime/streams/index.d.ts +15 -14
- package/dist/runtime/streams/index.js +38 -39
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +17 -8
- package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +1 -1
- package/dist/runtime/streams/session-calls.js +5 -4
- package/dist/runtime/streams/session-context.d.ts +6 -6
- package/dist/runtime/streams/session-context.js +22 -4
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/session-serial-executor.js +2 -2
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- package/src/internal.ts +15 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +72 -0
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +77 -204
- package/src/runtime/actors/actor-context.ts +45 -39
- package/src/runtime/actors/actor-handoff.ts +55 -45
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +174 -215
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +15 -36
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/actor-source-transfer.ts +5 -18
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +44 -0
- package/src/runtime/actors/index.ts +122 -88
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +13 -2
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +15 -42
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
- package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
- package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
- package/src/runtime/backend/raw-binding-port.ts +14 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +58 -29
- package/src/runtime/channels/channel-outbound-operations.ts +10 -31
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +8 -15
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +369 -262
- package/src/runtime/channels/channel-transports.ts +161 -115
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +175 -106
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +5 -2
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +116 -38
- package/src/runtime/execution/serial-execution-queue.ts +179 -34
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/listener-records.ts +21 -0
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
- package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
- package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
- package/src/runtime/foundation/service-topology-registry.ts +30 -79
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +57 -147
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +266 -418
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +408 -312
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +12 -44
- package/src/runtime/host/route-mesh-runtime.ts +236 -275
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
- package/src/runtime/host/spot-address-transport.ts +73 -195
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
- package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
- package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +16 -45
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +450 -478
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +90 -58
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +54 -26
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/submission-result.ts +57 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
- package/src/runtime/spots/index.ts +687 -437
- package/src/runtime/spots/spot-activation-registry.ts +42 -71
- package/src/runtime/spots/spot-activation-state.ts +4 -16
- package/src/runtime/spots/spot-activation.ts +167 -115
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
- package/src/runtime/spots/spot-actor-membership.ts +107 -75
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -33
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +29 -21
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
- package/src/runtime/spots/spot-outbound.ts +47 -68
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +10 -43
- package/src/runtime/spots/spot-serial-executor.ts +10 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +23 -37
- package/src/runtime/streams/index.ts +102 -88
- package/src/runtime/streams/managed-stream.ts +29 -10
- package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +6 -5
- package/src/runtime/streams/session-context.ts +54 -10
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/session-serial-executor.ts +2 -2
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
- package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -1,44 +1,45 @@
|
|
|
1
|
-
import
|
|
2
|
-
ActorRef,
|
|
3
|
-
Type,
|
|
4
|
-
ZLinkActor,
|
|
5
|
-
ZLinkBoundSession,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
ZLinkStreamCompressionCodec,
|
|
11
|
-
ZLinkStreamCompressionOptions
|
|
1
|
+
import {
|
|
2
|
+
type ActorRef,
|
|
3
|
+
type Type,
|
|
4
|
+
type ZLinkActor,
|
|
5
|
+
type ZLinkBoundSession,
|
|
6
|
+
type ZLinkMessageSerializer,
|
|
7
|
+
type ZLinkSession,
|
|
8
|
+
type ZLinkSessionActor,
|
|
9
|
+
type ZLinkSessionFactory,
|
|
10
|
+
type ZLinkStreamCompressionCodec,
|
|
11
|
+
type ZLinkStreamCompressionOptions,
|
|
12
|
+
ZLinkMessage
|
|
12
13
|
} from '../../contracts';
|
|
13
|
-
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
14
|
-
import type { ZLinkSubmitResult } from '../messaging/submission-result';
|
|
15
|
-
import { ZLinkMessage } from '../../contracts';
|
|
16
14
|
import type { Message } from '../../contracts/Common/Message';
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
type ZLinkFrameworkRegistration
|
|
21
|
-
} from '../configuration';
|
|
22
|
-
import { ZLinkDispatchErrorReporter } from '../channels';
|
|
15
|
+
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
16
|
+
import { DEFAULT_STREAM_NODE_MAX_MESSAGE_SIZE } from '../../contracts/Configuration/InternalDefaults';
|
|
17
|
+
import { zlinkDefaultLocationOptions } from '../../contracts/Locations/Options';
|
|
23
18
|
import type {
|
|
24
|
-
ZLinkBackendAdapterFactory,
|
|
25
19
|
ZLinkBackendActorSessionNode,
|
|
20
|
+
ZLinkBackendAdapterFactory,
|
|
26
21
|
ZLinkBackendContext,
|
|
27
22
|
ZLinkBackendMeshNode,
|
|
28
23
|
ZLinkBackendSocketMonitor,
|
|
29
24
|
ZLinkBackendStreamSocket
|
|
30
25
|
} from '../backend/contracts';
|
|
31
26
|
import type { ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
|
|
27
|
+
import { ZLinkDispatchErrorReporter } from '../channels';
|
|
28
|
+
import {
|
|
29
|
+
buildAdvertisedEndpoint,
|
|
30
|
+
ZLinkConfigurationException,
|
|
31
|
+
type ZLinkFrameworkRegistration
|
|
32
|
+
} from '../configuration';
|
|
33
|
+
import type { ZLinkListenerRecords } from '../foundation/listener-records';
|
|
32
34
|
import type { StreamSessionService } from '../foundation/service-runtime-contracts';
|
|
33
35
|
import { registerServiceSessionBindingIngressPort } from '../foundation/service-session-binding-ingress-port';
|
|
34
36
|
import {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
type ZLinkStreamReplyMessageKind
|
|
40
|
-
} from './protocol';
|
|
37
|
+
ApplicationJobQueue,
|
|
38
|
+
resolveApplicationJobQueueConfiguration
|
|
39
|
+
} from '../host/application-job-queue';
|
|
40
|
+
import type { ZLinkSubmitResult } from '../messaging/submission-result';
|
|
41
41
|
import {
|
|
42
|
+
DEFAULT_TERMINAL_RELOCATION_CAPACITY,
|
|
42
43
|
ZLinkActorSessionBindingRegistry,
|
|
43
44
|
type ZLinkActorSessionAuthorityFence
|
|
44
45
|
} from './actor-session-binding-registry';
|
|
@@ -47,38 +48,45 @@ import {
|
|
|
47
48
|
registerActorSessionBindingRuntimeOwner
|
|
48
49
|
} from './actor-session-binding-runtime-owner';
|
|
49
50
|
import { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
|
|
51
|
+
import { ZLinkBoundActorRelaySender } from './bound-actor-relay-sender';
|
|
50
52
|
import {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
} from './
|
|
53
|
+
DefaultZLinkBoundSessionResponseTarget,
|
|
54
|
+
type ZLinkBoundSessionResponseTarget
|
|
55
|
+
} from './bound-session-response-target';
|
|
56
|
+
import { ZLinkBoundSessionService, type ZLinkBoundSessionTransport } from './bound-session-service';
|
|
57
|
+
import { ZLinkManagedStream } from './managed-stream';
|
|
55
58
|
import {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
messageToBytes,
|
|
60
|
+
ZLinkStreamCodec,
|
|
61
|
+
ZLinkStreamMessageKind,
|
|
62
|
+
type ZLinkStreamFrameHeader,
|
|
63
|
+
type ZLinkStreamReplyMessageKind
|
|
64
|
+
} from './protocol';
|
|
65
|
+
import { ZLinkSessionActorCoordinator } from './session-actor-coordinator';
|
|
60
66
|
import {
|
|
61
67
|
DefaultZLinkBoundSession,
|
|
62
68
|
DefaultZLinkSessionActor,
|
|
63
69
|
DefaultZLinkSessionContext
|
|
64
70
|
} from './session-context';
|
|
65
|
-
import {
|
|
66
|
-
DefaultZLinkBoundSessionResponseTarget,
|
|
67
|
-
type ZLinkBoundSessionResponseTarget
|
|
68
|
-
} from './bound-session-response-target';
|
|
69
|
-
import { ZLinkBoundSessionService, type ZLinkBoundSessionTransport } from './bound-session-service';
|
|
70
|
-
import { ZLinkSessionActorCoordinator } from './session-actor-coordinator';
|
|
71
|
-
import { ZLinkBoundActorRelaySender } from './bound-actor-relay-sender';
|
|
72
|
-
import { ZLinkManagedStream } from './managed-stream';
|
|
73
71
|
import { createStreamSessionInstance } from './session-provider';
|
|
74
|
-
import {
|
|
72
|
+
import type {
|
|
73
|
+
ZLinkActorRouteCommitOptions,
|
|
74
|
+
ZLinkSessionBindingConfirmationOptions,
|
|
75
|
+
ZLinkSessionBindingIdentity
|
|
76
|
+
} from './stream-binding-runtime-ports';
|
|
77
|
+
import {
|
|
78
|
+
decompressStreamPayload,
|
|
79
|
+
resolveStreamCompressionCodec,
|
|
80
|
+
ZLinkStreamFrameMessageFactory
|
|
81
|
+
} from './stream-frame-factory';
|
|
82
|
+
import { simpleMessage } from './stream-message-utils';
|
|
75
83
|
import {
|
|
76
84
|
ZLinkStreamSessionNodeRuntime as ZLinkStreamSessionNodeRuntimeCore,
|
|
77
85
|
ZLinkStreamSessionRuntime as ZLinkStreamSessionRuntimeCore,
|
|
78
86
|
type ZLinkStreamSessionNodeRuntimeOptions as ZLinkStreamSessionNodeRuntimeCoreOptions,
|
|
79
87
|
type ZLinkStreamSessionRuntimeOptions as ZLinkStreamSessionRuntimeCoreOptions
|
|
80
88
|
} from './stream-session-runtime';
|
|
81
|
-
|
|
89
|
+
const DEFAULT_STREAM_SERVICE_SHUTDOWN_TIMEOUT_MS = 1000;
|
|
82
90
|
export { ZLinkPendingSessionRequest } from './session-requests';
|
|
83
91
|
export { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
|
|
84
92
|
export { ZLinkActorSessionBindingRegistry } from './actor-session-binding-registry';
|
|
@@ -98,6 +106,7 @@ export type {
|
|
|
98
106
|
} from './bound-session-service';
|
|
99
107
|
|
|
100
108
|
export interface ZLinkStreamBindingRuntimeOptions {
|
|
109
|
+
readonly dispatchErrors?: ZLinkDispatchErrorReporter;
|
|
101
110
|
readonly transport?: ZLinkBoundSessionTransport;
|
|
102
111
|
readonly messageFactory?: ZLinkStreamMessageFactory;
|
|
103
112
|
readonly streamPayloadCodec?: ZLinkStreamPayloadCodec;
|
|
@@ -120,7 +129,7 @@ export interface ZLinkStreamBindingRuntimeOptions {
|
|
|
120
129
|
actor: ActorRef,
|
|
121
130
|
sessionRid: ActorRef['nodeRid'],
|
|
122
131
|
signal?: AbortSignal,
|
|
123
|
-
options?:
|
|
132
|
+
options?: ZLinkSessionBindingConfirmationOptions
|
|
124
133
|
) => Promise<void>;
|
|
125
134
|
readonly errorSink?: () =>
|
|
126
135
|
| {
|
|
@@ -167,6 +176,7 @@ export interface ZLinkStreamSessionNodeRuntimeOptions extends Omit<
|
|
|
167
176
|
}
|
|
168
177
|
|
|
169
178
|
export interface ZLinkStreamRuntimeManagerOptions {
|
|
179
|
+
readonly listenerRecords?: ZLinkListenerRecords;
|
|
170
180
|
readonly registration: ZLinkFrameworkRegistration;
|
|
171
181
|
readonly backendAdapterFactory: ZLinkBackendAdapterFactory;
|
|
172
182
|
readonly context: ZLinkBackendContext;
|
|
@@ -183,14 +193,16 @@ export interface ZLinkStreamRuntimeManagerOptions {
|
|
|
183
193
|
readonly applicationJobQueue?: ApplicationJobQueue;
|
|
184
194
|
}
|
|
185
195
|
|
|
196
|
+
// A STREAM node's native resources, recorded as each one is created. The
|
|
197
|
+
// manager owns them from creation, so `dispose` releases whatever a failed
|
|
198
|
+
// `start` had already opened; an unreleased socket keeps the context from
|
|
199
|
+
// terminating.
|
|
186
200
|
interface ZLinkStartedStreamNode {
|
|
187
201
|
readonly meshName?: string;
|
|
188
|
-
readonly advertisedEndpoint: string;
|
|
189
|
-
readonly runtime: ZLinkStreamSessionNodeRuntimeCore;
|
|
190
202
|
readonly socket: ZLinkBackendStreamSocket;
|
|
191
|
-
readonly
|
|
192
|
-
|
|
193
|
-
|
|
203
|
+
readonly nativeSessionServices: StreamSessionService[];
|
|
204
|
+
monitor?: ZLinkBackendSocketMonitor;
|
|
205
|
+
runtime?: ZLinkStreamSessionNodeRuntimeCore;
|
|
194
206
|
}
|
|
195
207
|
|
|
196
208
|
export class ZLinkStreamRuntimeManager {
|
|
@@ -215,6 +227,12 @@ export class ZLinkStreamRuntimeManager {
|
|
|
215
227
|
const nativeMeshNode = actorDispatchEnabled ? this.options.nativeMeshNode : undefined;
|
|
216
228
|
const meshCompletions = actorDispatchEnabled ? this.options.meshCompletions : undefined;
|
|
217
229
|
const socket = streamAdapter.createStreamSocket(this.options.context);
|
|
230
|
+
const node: ZLinkStartedStreamNode = {
|
|
231
|
+
meshName: applicationMeshName,
|
|
232
|
+
socket,
|
|
233
|
+
nativeSessionServices: []
|
|
234
|
+
};
|
|
235
|
+
this.nodes.set(nodeName, node);
|
|
218
236
|
// Core uses -1 as the explicit unlimited value. The Framework value 0
|
|
219
237
|
// means that it adds no separate STREAM cap, so preserve that meaning
|
|
220
238
|
// when applying the socket option.
|
|
@@ -240,7 +258,6 @@ export class ZLinkStreamRuntimeManager {
|
|
|
240
258
|
`STREAM node '${nodeName}' advertised host requires a TCP endpoint, received '${boundEndpoint}'.`
|
|
241
259
|
);
|
|
242
260
|
}
|
|
243
|
-
const readablePoller = streamAdapter.createReadablePoller(socket);
|
|
244
261
|
const nativeSessionRoutes = new Map<
|
|
245
262
|
string,
|
|
246
263
|
{
|
|
@@ -262,12 +279,10 @@ export class ZLinkStreamRuntimeManager {
|
|
|
262
279
|
const createService = meshNode?.createStreamSessionService;
|
|
263
280
|
if (typeof createService !== 'function' || completions === undefined) continue;
|
|
264
281
|
const service = createService.call(meshNode, socket.nativeInstance as never);
|
|
282
|
+
node.nativeSessionServices.push(service);
|
|
265
283
|
const bindingOwner = actorSessionBindingRuntimeOwner(this.options.bindingRuntime);
|
|
266
284
|
registerServiceSessionBindingIngressPort(service, {
|
|
267
|
-
actorSlot: (actorId, sessionRid) => bindingOwner.actorSlot(actorId, sessionRid)
|
|
268
|
-
retainOutbound: (claim, delivery) =>
|
|
269
|
-
bindingOwner.admitRelocationOutbound(claim, delivery),
|
|
270
|
-
clearOutbound: (actorId, error) => bindingOwner.clearRelocation(actorId, error)
|
|
285
|
+
actorSlot: (actorId, sessionRid) => bindingOwner.actorSlot(actorId, sessionRid)
|
|
271
286
|
});
|
|
272
287
|
nativeSessionRoutes.set(meshName, {
|
|
273
288
|
service,
|
|
@@ -280,11 +295,15 @@ export class ZLinkStreamRuntimeManager {
|
|
|
280
295
|
? undefined
|
|
281
296
|
: nativeSessionRoutes.get(applicationMeshName)?.service;
|
|
282
297
|
const monitor = monitoringAdapter.openSocketMonitor(socket);
|
|
298
|
+
node.monitor = monitor;
|
|
283
299
|
const sessionType = streamNode.session!;
|
|
284
300
|
const sessionHandlerTypes =
|
|
285
301
|
(streamNode as unknown as Record<symbol, readonly Type[] | undefined>)[
|
|
286
302
|
Symbol.for('@zlink-systems/framework:session-handler-types')
|
|
287
303
|
] ?? [];
|
|
304
|
+
// The runtime disposes the poller, so the poller is created where nothing
|
|
305
|
+
// can fail before the runtime owns it.
|
|
306
|
+
const readablePoller = streamAdapter.createReadablePoller(socket);
|
|
288
307
|
const runtime = new ZLinkStreamSessionNodeRuntimeCore({
|
|
289
308
|
nodeName,
|
|
290
309
|
socket,
|
|
@@ -310,41 +329,31 @@ export class ZLinkStreamRuntimeManager {
|
|
|
310
329
|
sessionHandlerTypes
|
|
311
330
|
)
|
|
312
331
|
});
|
|
332
|
+
node.runtime = runtime;
|
|
313
333
|
runtime.start();
|
|
314
|
-
this.
|
|
315
|
-
meshName: applicationMeshName,
|
|
316
|
-
advertisedEndpoint,
|
|
317
|
-
runtime,
|
|
318
|
-
socket,
|
|
319
|
-
monitor,
|
|
320
|
-
nativeSessionService,
|
|
321
|
-
nativeSessionServices: [...nativeSessionRoutes.values()].map((route) => route.service)
|
|
322
|
-
});
|
|
334
|
+
this.options.listenerRecords?.record('stream', nodeName, advertisedEndpoint);
|
|
323
335
|
}
|
|
324
336
|
}
|
|
325
337
|
|
|
326
338
|
async dispose(): Promise<void> {
|
|
327
339
|
const nodes = [...this.nodes.values()];
|
|
328
|
-
this.nodes.clear();
|
|
329
340
|
for (const node of nodes.reverse()) {
|
|
330
|
-
await node.runtime
|
|
331
|
-
const
|
|
332
|
-
|
|
333
|
-
(node.nativeSessionService === undefined ? [] : [node.nativeSessionService]);
|
|
334
|
-
for (const service of nativeServices) {
|
|
335
|
-
service.shutdown(1000);
|
|
341
|
+
await node.runtime?.dispose();
|
|
342
|
+
for (const service of node.nativeSessionServices) {
|
|
343
|
+
service.shutdown(DEFAULT_STREAM_SERVICE_SHUTDOWN_TIMEOUT_MS);
|
|
336
344
|
service.close();
|
|
337
345
|
}
|
|
338
|
-
await node.monitor
|
|
346
|
+
await node.monitor?.dispose();
|
|
339
347
|
await node.socket.dispose();
|
|
340
348
|
}
|
|
349
|
+
this.nodes.clear();
|
|
341
350
|
}
|
|
342
351
|
|
|
343
352
|
async notifyServerDrain(meshName: string): Promise<void> {
|
|
344
353
|
await Promise.all(
|
|
345
354
|
[...this.nodes.values()]
|
|
346
355
|
.filter((node) => node.meshName === meshName)
|
|
347
|
-
.map((node) => node.runtime
|
|
356
|
+
.map((node) => node.runtime?.drainCloseSessions())
|
|
348
357
|
);
|
|
349
358
|
}
|
|
350
359
|
|
|
@@ -352,7 +361,7 @@ export class ZLinkStreamRuntimeManager {
|
|
|
352
361
|
await Promise.all(
|
|
353
362
|
[...this.nodes.values()]
|
|
354
363
|
.filter((node) => node.meshName === undefined)
|
|
355
|
-
.map((node) => node.runtime
|
|
364
|
+
.map((node) => node.runtime?.drainCloseSessions())
|
|
356
365
|
);
|
|
357
366
|
}
|
|
358
367
|
}
|
|
@@ -369,6 +378,7 @@ export class ZLinkStreamSessionRuntime extends ZLinkStreamSessionRuntimeCore {
|
|
|
369
378
|
const bindingRuntime =
|
|
370
379
|
options.bindingRuntime ??
|
|
371
380
|
new ZLinkStreamBindingRuntime({
|
|
381
|
+
dispatchErrors: options.dispatchErrors,
|
|
372
382
|
flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
|
|
373
383
|
});
|
|
374
384
|
super(
|
|
@@ -392,6 +402,7 @@ export class ZLinkStreamSessionNodeRuntime extends ZLinkStreamSessionNodeRuntime
|
|
|
392
402
|
const bindingRuntime =
|
|
393
403
|
options.bindingRuntime ??
|
|
394
404
|
new ZLinkStreamBindingRuntime({
|
|
405
|
+
dispatchErrors: options.dispatchErrors,
|
|
395
406
|
flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
|
|
396
407
|
});
|
|
397
408
|
super({
|
|
@@ -420,7 +431,12 @@ export class ZLinkStreamBindingRuntime {
|
|
|
420
431
|
this.routes = new ZLinkActorSessionBindingRegistry<
|
|
421
432
|
DefaultZLinkSessionContext,
|
|
422
433
|
DefaultZLinkSessionActor
|
|
423
|
-
>(
|
|
434
|
+
>(
|
|
435
|
+
DEFAULT_TERMINAL_RELOCATION_CAPACITY,
|
|
436
|
+
runtimeOptions.sessionRelocationSealTimeoutMs ??
|
|
437
|
+
zlinkDefaultLocationOptions.sessionRelocationSealTimeoutMs,
|
|
438
|
+
runtimeOptions.errorSink
|
|
439
|
+
);
|
|
424
440
|
this.compressionCodec = resolveStreamCompressionCodec(runtimeOptions.streamCompression);
|
|
425
441
|
this.frameMessages = new ZLinkStreamFrameMessageFactory(runtimeOptions);
|
|
426
442
|
this.boundSessions = new ZLinkBoundSessionService(
|
|
@@ -442,21 +458,11 @@ export class ZLinkStreamBindingRuntime {
|
|
|
442
458
|
actorSessionLifecycle
|
|
443
459
|
);
|
|
444
460
|
registerActorSessionBindingRuntimeOwner(this, {
|
|
445
|
-
actorSlot: async (actorId, sessionRid) =>
|
|
446
|
-
|
|
447
|
-
return route !== undefined && route.sessionIdentity === sessionRid
|
|
448
|
-
? route.actorSlot
|
|
449
|
-
: undefined;
|
|
450
|
-
},
|
|
461
|
+
actorSlot: async (actorId, sessionRid) =>
|
|
462
|
+
(await this.routes.routeForSessionBinding(actorId, sessionRid))?.actorSlot,
|
|
451
463
|
sealRelocation: (claim, expected, signal) =>
|
|
452
464
|
this.routes.sealRelocation(claim, expected, signal),
|
|
453
465
|
relocationSnapshot: (actorId, sealId) => this.routes.relocationSnapshot(actorId, sealId),
|
|
454
|
-
retainRelocationOutbound: (actorId, operation, sealId) =>
|
|
455
|
-
this.routes.retainRelocationOutbound(actorId, operation, sealId),
|
|
456
|
-
admitRelocationOutbound: (claim, operation) =>
|
|
457
|
-
this.routes.admitRelocationOutbound(claim, operation),
|
|
458
|
-
discardRelocationOutbound: (actorId, sealId, error) =>
|
|
459
|
-
this.routes.discardRelocationOutbound(actorId, sealId, error),
|
|
460
466
|
applyRelocation: (...args) => this.routes.applyRelocation(...args),
|
|
461
467
|
observeRelocationTerminal: (...args) => this.routes.observeRelocationTerminal(...args),
|
|
462
468
|
clearRelocation: (actorId, error) => this.routes.clearRelocation(actorId, error),
|
|
@@ -741,6 +747,14 @@ export class ZLinkStreamBindingRuntime {
|
|
|
741
747
|
await this.boundSessions.disconnectBoundSession(actorId, signal);
|
|
742
748
|
}
|
|
743
749
|
|
|
750
|
+
async closeSessionBinding(
|
|
751
|
+
actorId: string,
|
|
752
|
+
expected: ZLinkSessionBindingIdentity,
|
|
753
|
+
signal?: AbortSignal
|
|
754
|
+
): Promise<void> {
|
|
755
|
+
await this.boundSessions.closeSessionBinding(actorId, expected, signal);
|
|
756
|
+
}
|
|
757
|
+
|
|
744
758
|
async relay(
|
|
745
759
|
actor: DefaultZLinkSessionActor,
|
|
746
760
|
payload: ZLinkMessage,
|
|
@@ -10,7 +10,11 @@ import type {
|
|
|
10
10
|
ZLinkMessageSerializer,
|
|
11
11
|
ZLinkStream
|
|
12
12
|
} from '../../contracts';
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
ZLinkSubmitStatus,
|
|
15
|
+
classifySubmitResult,
|
|
16
|
+
type ZLinkSubmitResult
|
|
17
|
+
} from '../messaging/submission-result';
|
|
14
18
|
import type { Message } from '../../contracts/Common/Message';
|
|
15
19
|
import { throwIfAborted } from '../abort';
|
|
16
20
|
import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
|
|
@@ -19,14 +23,16 @@ import type {
|
|
|
19
23
|
ZLinkBackendSendFlags,
|
|
20
24
|
ZLinkBackendStreamSocket
|
|
21
25
|
} from '../backend/contracts';
|
|
22
|
-
import { RequestResult,
|
|
26
|
+
import { RequestResult, isZLinkBackendResultError } from '../backend/runtime-values';
|
|
23
27
|
import { ZLinkBufferMessage as NativeMessage } from '../backend/runtime-message';
|
|
28
|
+
import { diagnosticTextOrAbsent } from '../diagnostics/diagnostic-text';
|
|
24
29
|
import type {
|
|
25
30
|
StreamSessionActorAuthorityFence,
|
|
26
31
|
StreamSessionService
|
|
27
32
|
} from '../foundation/service-runtime-contracts';
|
|
28
33
|
import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
|
|
29
34
|
import type { ServiceActorRef } from '../foundation/service-stateful-registry';
|
|
35
|
+
import type { ServiceStreamSessionBinding } from '../foundation/service-runtime-contracts';
|
|
30
36
|
import {
|
|
31
37
|
closeMeshCompletion,
|
|
32
38
|
type ZLinkMeshCompletion,
|
|
@@ -55,7 +61,8 @@ export interface ZLinkNativeSessionRoute {
|
|
|
55
61
|
|
|
56
62
|
interface ZLinkManagedActorBinding {
|
|
57
63
|
readonly actor: ZLinkBackendActorRef;
|
|
58
|
-
|
|
64
|
+
/** The Session owner's registry snapshot of this binding (Session–Actor binding §5-2). */
|
|
65
|
+
readonly binding?: ServiceStreamSessionBinding;
|
|
59
66
|
readonly route?: ZLinkNativeSessionRoute;
|
|
60
67
|
}
|
|
61
68
|
|
|
@@ -90,7 +97,12 @@ export class ZLinkManagedStream implements ZLinkStream {
|
|
|
90
97
|
}
|
|
91
98
|
|
|
92
99
|
actorBindingGeneration(actorId: string): bigint | undefined {
|
|
93
|
-
return this.nativeActorBindings.get(actorId)?.bindingGeneration;
|
|
100
|
+
return this.nativeActorBindings.get(actorId)?.binding?.bindingGeneration;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/** The Session owner's registry snapshot of the Actor's current native binding. */
|
|
104
|
+
actorBinding(actorId: string): ServiceStreamSessionBinding | undefined {
|
|
105
|
+
return this.nativeActorBindings.get(actorId)?.binding;
|
|
94
106
|
}
|
|
95
107
|
|
|
96
108
|
private isTransportClosed(): boolean {
|
|
@@ -128,7 +140,9 @@ export class ZLinkManagedStream implements ZLinkStream {
|
|
|
128
140
|
await this.socket.submit(this.backendRoutingId(), payload, timeoutMs);
|
|
129
141
|
return { status: ZLinkSubmitStatus.Submitted };
|
|
130
142
|
} catch (error) {
|
|
131
|
-
if (
|
|
143
|
+
if (isZLinkBackendResultError(error) && error.operation === 'submit') {
|
|
144
|
+
return classifySubmitResult(error.result, 'STREAM submit', error.phase);
|
|
145
|
+
}
|
|
132
146
|
throw error;
|
|
133
147
|
}
|
|
134
148
|
}
|
|
@@ -268,7 +282,7 @@ export class ZLinkManagedStream implements ZLinkStream {
|
|
|
268
282
|
}
|
|
269
283
|
this.nativeActorBindings.set(actor.actorId, {
|
|
270
284
|
actor: nativeActor,
|
|
271
|
-
|
|
285
|
+
binding,
|
|
272
286
|
route
|
|
273
287
|
});
|
|
274
288
|
return;
|
|
@@ -309,7 +323,11 @@ export class ZLinkManagedStream implements ZLinkStream {
|
|
|
309
323
|
ZLinkFrameworkInternalErrorKind.ActorRouteNotFound,
|
|
310
324
|
`Actor '${actor.actorId}' native route fence does not match its ActorRef ` +
|
|
311
325
|
`(expected ${String(actor.nodeRid)}/${actor.objectGeneration}, ` +
|
|
312
|
-
`resolved ${
|
|
326
|
+
`resolved ${diagnosticTextOrAbsent(
|
|
327
|
+
resolved === undefined
|
|
328
|
+
? undefined
|
|
329
|
+
: `${String(resolved.nodeRid)}/${resolved.generation}`
|
|
330
|
+
)}, ` +
|
|
313
331
|
`terminal=${completion.terminalResult}, failure=${completion.failureErrno}).`
|
|
314
332
|
);
|
|
315
333
|
}
|
|
@@ -329,7 +347,8 @@ export class ZLinkManagedStream implements ZLinkStream {
|
|
|
329
347
|
const binding = this.nativeActorBindings.get(actorId);
|
|
330
348
|
if (binding?.route !== undefined) {
|
|
331
349
|
const route = binding.route;
|
|
332
|
-
|
|
350
|
+
const bindingGeneration = binding.binding!.bindingGeneration;
|
|
351
|
+
if (!this.hasNativeBinding(route, actorId, bindingGeneration)) {
|
|
333
352
|
this.nativeActorBindings.delete(actorId);
|
|
334
353
|
return;
|
|
335
354
|
}
|
|
@@ -340,7 +359,7 @@ export class ZLinkManagedStream implements ZLinkStream {
|
|
|
340
359
|
route.service.unbindActor(
|
|
341
360
|
this.backendRoutingId(),
|
|
342
361
|
binding.actor as never,
|
|
343
|
-
|
|
362
|
+
bindingGeneration,
|
|
344
363
|
timeoutMs
|
|
345
364
|
),
|
|
346
365
|
signal
|
|
@@ -356,7 +375,7 @@ export class ZLinkManagedStream implements ZLinkStream {
|
|
|
356
375
|
// tombstone. A transport teardown can therefore report an internal
|
|
357
376
|
// completion after the exact binding is already gone. Treat only that
|
|
358
377
|
// exact missing binding as stale cleanup; preserve other failures.
|
|
359
|
-
if (this.hasNativeBinding(route, actorId,
|
|
378
|
+
if (this.hasNativeBinding(route, actorId, bindingGeneration)) {
|
|
360
379
|
throw error;
|
|
361
380
|
}
|
|
362
381
|
}
|
|
@@ -160,9 +160,8 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
|
|
|
160
160
|
): Promise<ZLinkSubmitResult> {
|
|
161
161
|
const localActor = this.options.localActorProvider?.() === true;
|
|
162
162
|
const remoteTarget = this.options.remoteBoundSessionTargetProvider();
|
|
163
|
-
const sealedRemoteTarget = remoteTarget?.relocationSealId !== undefined;
|
|
164
163
|
let nativeAttempted = false;
|
|
165
|
-
if (localActor
|
|
164
|
+
if (localActor) {
|
|
166
165
|
const result = await this.options.runtime.submitLocalBoundSession(
|
|
167
166
|
this.options.actorId,
|
|
168
167
|
this.message,
|
|
@@ -213,7 +212,6 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
|
|
|
213
212
|
actorNodeRidHex: (actorRef?.nodeRid as { toHex?: () => string } | undefined)?.toHex?.(),
|
|
214
213
|
actorGeneration: actorRef?.objectGeneration.toString(),
|
|
215
214
|
actorOwnershipGeneration: ownershipGeneration?.toString(),
|
|
216
|
-
relocationSealId: remoteTarget.relocationSealId,
|
|
217
215
|
message: this.message,
|
|
218
216
|
boundPacketName: packetName,
|
|
219
217
|
metadata: this.selectedMetadata,
|
|
@@ -1,90 +1,52 @@
|
|
|
1
|
-
import type { Message } from '../../contracts/Common/Message';
|
|
2
|
-
import type { ZLinkFlowOrigin } from '../../contracts';
|
|
3
|
-
import { resolveFrameworkPacketName } from '../messaging/packet-name';
|
|
4
1
|
import {
|
|
2
|
+
ZlinkStreamCloseReasonCode as ZLinkStreamCloseReasonCode,
|
|
3
|
+
ZlinkStreamCodec as ZLinkStreamCodec,
|
|
4
|
+
ZlinkStreamHeaderFlags as ZLinkStreamHeaderFlags,
|
|
5
|
+
ZlinkStreamMessageKind as ZLinkStreamMessageKind,
|
|
6
|
+
ZlinkStreamControlPacket,
|
|
5
7
|
decodeStreamWireFrame,
|
|
6
8
|
decodeStreamWireHeader,
|
|
9
|
+
defaultMaxDecompressedPayloadSize,
|
|
10
|
+
encodeStreamWireActorBoundPayload,
|
|
11
|
+
encodeStreamWireActorUnboundPayload,
|
|
7
12
|
encodeStreamWireFrame,
|
|
8
13
|
encodeStreamWireHeader,
|
|
14
|
+
encodeStreamWireSessionClosingPayload,
|
|
9
15
|
lz4PickleUncompressed,
|
|
10
16
|
lz4UnpicklePayload,
|
|
11
17
|
tryDecodeStreamWireFrame,
|
|
12
|
-
|
|
18
|
+
streamCodecContentType as wireCodecContentType,
|
|
19
|
+
streamCodecForContentType as wireCodecForContentType
|
|
13
20
|
} from '@zlink-systems/stream-wire';
|
|
21
|
+
import type { ZLinkFlowOrigin } from '../../contracts';
|
|
22
|
+
import type { Message } from '../../contracts/Common/Message';
|
|
23
|
+
import { resolveFrameworkPacketName } from '../messaging/packet-name';
|
|
14
24
|
import { throwAlreadySubmitted } from '../messaging/submission-result';
|
|
25
|
+
export {
|
|
26
|
+
ZlinkStreamMessageKind as ZLinkStreamMessageKind,
|
|
27
|
+
ZlinkStreamHeaderFlags as ZLinkStreamHeaderFlags,
|
|
28
|
+
ZlinkStreamCloseReasonCode as ZLinkStreamCloseReasonCode
|
|
29
|
+
} from '@zlink-systems/stream-wire';
|
|
15
30
|
|
|
16
31
|
export { utf8Decode, utf8Encode } from '@zlink-systems/stream-wire';
|
|
17
32
|
|
|
18
|
-
const defaultMaxDecompressedPayloadSize = 64 * 1024;
|
|
19
33
|
const actorRequestDeadlineMetadataKey = '$zlink.actor-request-deadline-unix-ms';
|
|
20
34
|
// Shared empty metadata for the dominant no-metadata frame; ReadonlyMap
|
|
21
35
|
// keeps every consumer from mutating it.
|
|
22
36
|
const EMPTY_STREAM_METADATA: ReadonlyMap<string, string> = new Map();
|
|
23
37
|
|
|
24
|
-
export
|
|
25
|
-
Raw = 0,
|
|
26
|
-
Json = 1,
|
|
27
|
-
MessagePack = 2,
|
|
28
|
-
Protobuf = 3
|
|
29
|
-
}
|
|
38
|
+
export { ZlinkStreamCodec as ZLinkStreamCodec } from '@zlink-systems/stream-wire';
|
|
30
39
|
|
|
31
40
|
export function streamCodecContentType(codec: ZLinkStreamCodec): string {
|
|
32
|
-
|
|
33
|
-
case ZLinkStreamCodec.Json:
|
|
34
|
-
return 'application/json';
|
|
35
|
-
case ZLinkStreamCodec.MessagePack:
|
|
36
|
-
return 'application/x-msgpack';
|
|
37
|
-
case ZLinkStreamCodec.Protobuf:
|
|
38
|
-
return 'application/x-protobuf';
|
|
39
|
-
case ZLinkStreamCodec.Raw:
|
|
40
|
-
return 'application/octet-stream';
|
|
41
|
-
}
|
|
42
|
-
throw new TypeError(`Unsupported STREAM codec '${codec}'.`);
|
|
41
|
+
return wireCodecContentType(codec);
|
|
43
42
|
}
|
|
44
43
|
|
|
45
44
|
export function streamCodecForContentType(contentType: string): ZLinkStreamCodec {
|
|
46
|
-
|
|
47
|
-
case 'application/json':
|
|
48
|
-
return ZLinkStreamCodec.Json;
|
|
49
|
-
case 'application/x-msgpack':
|
|
50
|
-
return ZLinkStreamCodec.MessagePack;
|
|
51
|
-
case 'application/x-protobuf':
|
|
52
|
-
return ZLinkStreamCodec.Protobuf;
|
|
53
|
-
case 'application/octet-stream':
|
|
54
|
-
return ZLinkStreamCodec.Raw;
|
|
55
|
-
}
|
|
56
|
-
throw new TypeError(`Unsupported STREAM content type '${contentType}'.`);
|
|
45
|
+
return wireCodecForContentType(contentType);
|
|
57
46
|
}
|
|
58
47
|
|
|
59
|
-
export
|
|
60
|
-
|
|
61
|
-
Request = 2,
|
|
62
|
-
Response = 3,
|
|
63
|
-
Error = 4,
|
|
64
|
-
Control = 5
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export enum ZLinkStreamHeaderFlags {
|
|
68
|
-
None = 0,
|
|
69
|
-
HasRequestSeq = 0x01,
|
|
70
|
-
HasMetadata = 0x02,
|
|
71
|
-
PayloadCompressed = 0x04,
|
|
72
|
-
HasCorrelationId = 0x08,
|
|
73
|
-
HasFlowId = 0x10,
|
|
74
|
-
HasActorSlot = 0x20
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export enum ZLinkStreamCloseReasonCode {
|
|
78
|
-
ClientClose = 1,
|
|
79
|
-
IdleTimeout = 2,
|
|
80
|
-
HeartbeatTimeout = 3,
|
|
81
|
-
ServerDrain = 4,
|
|
82
|
-
ProtocolError = 5,
|
|
83
|
-
TransportError = 6
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export const ZLINK_STREAM_HEARTBEAT_PING = '$zlink.heartbeat.ping';
|
|
87
|
-
export const ZLINK_STREAM_HEARTBEAT_PONG = '$zlink.heartbeat.pong';
|
|
48
|
+
export const ZLINK_STREAM_HEARTBEAT_PING = ZlinkStreamControlPacket.HeartbeatPing;
|
|
49
|
+
export const ZLINK_STREAM_HEARTBEAT_PONG = ZlinkStreamControlPacket.HeartbeatPong;
|
|
88
50
|
|
|
89
51
|
export interface ZLinkStreamFrameHeader {
|
|
90
52
|
readonly kind: ZLinkStreamMessageKind;
|
|
@@ -142,48 +104,32 @@ export function encodeStreamControlFrame(name: string): Uint8Array {
|
|
|
142
104
|
}
|
|
143
105
|
|
|
144
106
|
export function encodeActorBoundFrame(actorSlot: number, actorId: string): Uint8Array {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
const payload = new Uint8Array(4 + actorIdBytes.length);
|
|
150
|
-
payload[0] = 1;
|
|
151
|
-
payload[1] = actorSlot >>> 8;
|
|
152
|
-
payload[2] = actorSlot & 0xff;
|
|
153
|
-
payload[3] = actorIdBytes.length;
|
|
154
|
-
payload.set(actorIdBytes, 4);
|
|
155
|
-
return encodeStreamFrame(controlHeader('$zlink.actor.bound'), payload);
|
|
107
|
+
return encodeStreamFrame(
|
|
108
|
+
controlHeader(ZlinkStreamControlPacket.ActorBound),
|
|
109
|
+
encodeStreamWireActorBoundPayload(actorSlot, actorId)
|
|
110
|
+
);
|
|
156
111
|
}
|
|
157
112
|
|
|
158
113
|
export function encodeActorUnboundFrame(actorSlot: number): Uint8Array {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
return encodeStreamFrame(controlHeader('$zlink.actor.unbound'), payload);
|
|
114
|
+
return encodeStreamFrame(
|
|
115
|
+
controlHeader(ZlinkStreamControlPacket.ActorUnbound),
|
|
116
|
+
encodeStreamWireActorUnboundPayload(actorSlot)
|
|
117
|
+
);
|
|
164
118
|
}
|
|
165
119
|
|
|
166
120
|
export function encodeSessionClosingFrame(
|
|
167
121
|
diagnostic = '',
|
|
168
122
|
reason = ZLinkStreamCloseReasonCode.ServerDrain
|
|
169
123
|
): Uint8Array {
|
|
170
|
-
const diagnosticBytes = utf8Encode(diagnostic);
|
|
171
|
-
if (diagnosticBytes.length > 512) throw new Error('Session-closing diagnostic is too large.');
|
|
172
|
-
const payload = new Uint8Array(4 + diagnosticBytes.length);
|
|
173
|
-
payload[0] = 1;
|
|
174
|
-
payload[1] = reason;
|
|
175
|
-
payload[2] = diagnosticBytes.length >>> 8;
|
|
176
|
-
payload[3] = diagnosticBytes.length & 0xff;
|
|
177
|
-
payload.set(diagnosticBytes, 4);
|
|
178
124
|
return encodeStreamFrame(
|
|
179
125
|
{
|
|
180
126
|
kind: ZLinkStreamMessageKind.Control,
|
|
181
127
|
codec: ZLinkStreamCodec.Raw,
|
|
182
128
|
flags: ZLinkStreamHeaderFlags.None,
|
|
183
|
-
name:
|
|
129
|
+
name: ZlinkStreamControlPacket.SessionClosing,
|
|
184
130
|
metadata: new Map()
|
|
185
131
|
},
|
|
186
|
-
|
|
132
|
+
encodeStreamWireSessionClosingPayload(reason, diagnostic)
|
|
187
133
|
);
|
|
188
134
|
}
|
|
189
135
|
|