@zlink-systems/framework 0.21.0 → 0.22.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/Common/ZLinkMessage.js +5 -5
- package/dist/contracts/Configuration/CodecContentType.js +5 -7
- package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
- package/dist/contracts/Configuration/EndpointNotation.js +4 -8
- package/dist/contracts/Configuration/Registration.js +14 -11
- package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
- package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
- package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
- package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
- package/dist/contracts/Handlers/JsonContract.js +23 -11
- package/dist/contracts/Spots/SpotKind.js +16 -8
- package/dist/location-store-integration.js +16 -16
- package/dist/nest-integration.js +17 -11
- package/dist/runtime/abort.js +9 -5
- package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
- package/dist/runtime/actors/actor-authority-publication.js +18 -17
- package/dist/runtime/actors/actor-client.js +83 -63
- package/dist/runtime/actors/actor-context.js +24 -18
- package/dist/runtime/actors/actor-creation.js +4 -3
- package/dist/runtime/actors/actor-handoff.js +89 -92
- package/dist/runtime/actors/actor-local-native-join.js +18 -19
- package/dist/runtime/actors/actor-mailbox.js +1 -1
- package/dist/runtime/actors/actor-message-follow-context.js +24 -21
- package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
- package/dist/runtime/actors/actor-remote-joiner.js +20 -17
- package/dist/runtime/actors/actor-remote-wire.js +6 -7
- package/dist/runtime/actors/actor-runtime-state.js +87 -81
- package/dist/runtime/actors/actor-transfer-registry.js +3 -5
- package/dist/runtime/actors/bound-session-wire.js +14 -9
- package/dist/runtime/actors/deferred-join-accepted-journal.js +158 -124
- package/dist/runtime/actors/index.js +2 -5
- package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
- package/dist/runtime/actors/post-commit-actor-location.js +1 -1
- package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
- package/dist/runtime/admission.js +2 -6
- package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
- package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
- package/dist/runtime/backend/mesh-completion-table.js +1 -3
- package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
- package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
- package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
- package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +116 -113
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
- package/dist/runtime/backend/runtime-message.js +3 -3
- package/dist/runtime/backend/runtime-values.d.ts +2 -2
- package/dist/runtime/backend/runtime-values.js +4 -5
- package/dist/runtime/channels/channel-clients.js +27 -24
- package/dist/runtime/channels/channel-dispatch-pipeline.js +10 -18
- package/dist/runtime/channels/channel-dispatch-services.js +7 -4
- package/dist/runtime/channels/channel-dispatchers.js +9 -9
- package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
- package/dist/runtime/channels/channel-envelope.js +83 -47
- package/dist/runtime/channels/channel-outbound-operations.js +8 -8
- package/dist/runtime/channels/channel-receive-loops.js +20 -22
- package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
- package/dist/runtime/channels/channel-runtime-manager.js +18 -9
- package/dist/runtime/channels/channel-socket-registry.js +126 -123
- package/dist/runtime/channels/channel-transports.js +43 -33
- package/dist/runtime/channels/client-server-location-runtime.js +32 -40
- package/dist/runtime/channels/client-server-service-wire.js +29 -22
- package/dist/runtime/channels/dispatch-error-reporter.js +9 -7
- package/dist/runtime/channels/fanout-location-runtime.js +34 -47
- package/dist/runtime/channels/fanout-service-wire.js +3 -5
- package/dist/runtime/channels/local-spot-route-transport.js +7 -1
- package/dist/runtime/channels/route-member-snapshot.js +3 -3
- package/dist/runtime/channels/source-spot-router.js +6 -2
- package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
- package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
- package/dist/runtime/diagnostics/index.js +38 -10
- package/dist/runtime/diagnostics/message-flow.js +47 -39
- package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
- package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
- package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
- package/dist/runtime/execution/index.js +7 -6
- package/dist/runtime/execution/serial-execution-queue.js +12 -18
- package/dist/runtime/execution/state-lane.js +2 -2
- package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -23
- package/dist/runtime/foundation/event-loop-resources.js +4 -4
- package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +136 -136
- package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
- package/dist/runtime/foundation/runtime-state-projections.js +22 -11
- package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
- package/dist/runtime/foundation/service-discovery-registry.js +35 -33
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
- package/dist/runtime/foundation/service-liveness-registry.js +16 -12
- package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
- package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
- package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
- package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
- package/dist/runtime/foundation/service-stateful-registry.js +24 -23
- package/dist/runtime/foundation/service-stateful-runtime.js +416 -438
- package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
- package/dist/runtime/foundation/service-topology-registry.js +96 -95
- package/dist/runtime/foundation/service-weighted-selection.js +6 -11
- package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
- package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
- package/dist/runtime/framework-errors-internal.js +7 -10
- package/dist/runtime/handlers/handler-instance-scope.js +4 -5
- package/dist/runtime/handlers/index.js +3 -1
- package/dist/runtime/host/actor-packet-relay.js +74 -70
- package/dist/runtime/host/actor-placement-coordinator.js +29 -31
- package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
- package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
- package/dist/runtime/host/actor-transfer-runtime.js +176 -153
- package/dist/runtime/host/application-job-queue.js +18 -22
- package/dist/runtime/host/bound-session-relay.js +3 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
- package/dist/runtime/host/host-capacity-status.js +8 -4
- package/dist/runtime/host/index.js +244 -227
- package/dist/runtime/host/instance-activation-authority.js +93 -96
- package/dist/runtime/host/location-runtime-owner.js +16 -14
- package/dist/runtime/host/mesh-router-resolver.js +11 -13
- package/dist/runtime/host/relocation-direct-transfer.js +10 -9
- package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
- package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
- package/dist/runtime/host/remote-bound-session-relay.js +97 -73
- package/dist/runtime/host/route-mesh-runtime.js +64 -69
- package/dist/runtime/host/runtime-shutdown.js +1 -2
- package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
- package/dist/runtime/host/spot-address-transport.js +69 -71
- package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
- package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
- package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
- package/dist/runtime/locations/actor-location-claims.js +26 -20
- package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
- package/dist/runtime/locations/authority-key-codec.js +7 -7
- package/dist/runtime/locations/auto-connect-loop.js +3 -3
- package/dist/runtime/locations/auto-connect-planner.js +25 -19
- package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
- package/dist/runtime/locations/in-memory-authority-store.js +128 -118
- package/dist/runtime/locations/in-memory-location-store.js +195 -168
- package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
- package/dist/runtime/locations/key-codec.js +1 -1
- package/dist/runtime/locations/lease-tracker.js +23 -21
- package/dist/runtime/locations/lifecycle.js +4 -5
- package/dist/runtime/locations/location-store-repository.js +368 -324
- package/dist/runtime/locations/opaque-record-key.js +2 -2
- package/dist/runtime/locations/resolvers.js +73 -82
- package/dist/runtime/locations/runtime.js +68 -63
- package/dist/runtime/locations/spot-location-claims.js +39 -35
- package/dist/runtime/messaging/framework-json-v1.js +7 -7
- package/dist/runtime/messaging/packet-name.js +7 -6
- package/dist/runtime/messaging/payload-codec.js +21 -18
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
- package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
- package/dist/runtime/routing-id.js +3 -5
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
- package/dist/runtime/spots/index.js +208 -219
- package/dist/runtime/spots/spot-activation-registry.js +15 -14
- package/dist/runtime/spots/spot-activation-state.js +17 -15
- package/dist/runtime/spots/spot-activation.js +33 -16
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
- package/dist/runtime/spots/spot-actor-membership.js +1 -3
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +23 -20
- package/dist/runtime/spots/spot-actor-packet-drain.js +12 -10
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
- package/dist/runtime/spots/spot-closing.js +3 -7
- package/dist/runtime/spots/spot-context.js +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +13 -14
- package/dist/runtime/spots/spot-handle.js +6 -3
- package/dist/runtime/spots/spot-handler-registry.js +12 -12
- package/dist/runtime/spots/spot-manager-public.js +5 -6
- package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
- package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +74 -85
- package/dist/runtime/spots/spot-outbound.js +10 -14
- package/dist/runtime/spots/spot-remote-codec.js +22 -26
- package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
- package/dist/runtime/spots/spot-route-packet-dispatch.js +16 -14
- package/dist/runtime/spots/spot-route-replies.js +4 -6
- package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
- package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +1 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
- package/dist/runtime/spots/spot-serial-executor.js +5 -8
- package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
- package/dist/runtime/spots/spot-subscription-dispatch.js +5 -5
- package/dist/runtime/spots/spot-timer.js +25 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +98 -107
- package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +18 -16
- package/dist/runtime/streams/bound-session-service.js +8 -9
- package/dist/runtime/streams/index.js +20 -19
- package/dist/runtime/streams/managed-stream.js +32 -30
- package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
- package/dist/runtime/streams/protocol.js +29 -18
- package/dist/runtime/streams/session-actor-coordinator.js +34 -37
- package/dist/runtime/streams/session-context.js +30 -28
- package/dist/runtime/streams/session-provider.js +2 -2
- package/dist/runtime/streams/session-serial-executor.js +1 -2
- package/dist/runtime/streams/stream-frame-factory.js +11 -5
- package/dist/runtime/streams/stream-session-runtime.js +70 -66
- package/dist/runtime/workers/index.js +15 -4
- package/package.json +2 -2
- package/src/contracts/Channels/RouteCalls.ts +6 -1
- package/src/contracts/Common/ZLinkMessage.ts +5 -5
- package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
- package/src/contracts/Configuration/Builders.ts +14 -14
- package/src/contracts/Configuration/CodecContentType.ts +8 -10
- package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
- package/src/contracts/Configuration/EndpointNotation.ts +11 -11
- package/src/contracts/Configuration/ObjectRoles.ts +1 -3
- package/src/contracts/Configuration/Registration.ts +46 -17
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
- package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
- package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
- package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
- package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
- package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
- package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
- package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
- package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -6
- package/src/contracts/Errors/index.ts +1 -4
- package/src/contracts/Handlers/Attributes.ts +15 -9
- package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
- package/src/contracts/Handlers/JsonContract.ts +53 -19
- package/src/contracts/Locations/ActorTransfer.ts +1 -5
- package/src/contracts/Locations/Authority.ts +4 -11
- package/src/contracts/Locations/Keys.ts +6 -1
- package/src/contracts/Locations/Options.ts +3 -2
- package/src/contracts/Locations/RelocationStore.ts +1 -4
- package/src/contracts/Locations/Resolvers.ts +5 -5
- package/src/contracts/Locations/RuntimeQuery.ts +6 -2
- package/src/contracts/Locations/Stores.ts +1 -2
- package/src/contracts/Locations/index.ts +2 -8
- package/src/contracts/RouteMesh/Contracts.ts +1 -7
- package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
- package/src/contracts/Spots/Contracts.ts +2 -8
- package/src/contracts/Spots/SpotKind.ts +16 -8
- package/src/contracts/Spots/ZLinkSpot.ts +8 -11
- package/src/contracts/Streams/IZLinkSession.ts +0 -1
- package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
- package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
- package/src/internal.ts +5 -4
- package/src/location-store-integration.ts +24 -16
- package/src/nest-integration.ts +40 -25
- package/src/runtime/abort.ts +10 -4
- package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
- package/src/runtime/actors/actor-authority-publication.ts +92 -77
- package/src/runtime/actors/actor-client.ts +162 -133
- package/src/runtime/actors/actor-context.ts +138 -130
- package/src/runtime/actors/actor-creation.ts +47 -44
- package/src/runtime/actors/actor-execution-context.ts +6 -4
- package/src/runtime/actors/actor-handoff.ts +269 -293
- package/src/runtime/actors/actor-join-deferred-scope.ts +5 -4
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
- package/src/runtime/actors/actor-local-native-join.ts +131 -159
- package/src/runtime/actors/actor-mailbox.ts +16 -19
- package/src/runtime/actors/actor-message-follow-context.ts +46 -36
- package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
- package/src/runtime/actors/actor-remote-joiner.ts +50 -54
- package/src/runtime/actors/actor-remote-wire.ts +9 -13
- package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
- package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
- package/src/runtime/actors/actor-runtime-state.ts +127 -124
- package/src/runtime/actors/actor-transfer-registry.ts +9 -14
- package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
- package/src/runtime/actors/bound-session-wire.ts +37 -17
- package/src/runtime/actors/deferred-join-accepted-journal.ts +351 -320
- package/src/runtime/actors/index.ts +43 -86
- package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
- package/src/runtime/actors/post-commit-actor-location.ts +30 -23
- package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
- package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
- package/src/runtime/admission.ts +9 -9
- package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
- package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
- package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
- package/src/runtime/backend/contracts/index.ts +73 -52
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
- package/src/runtime/backend/mesh-completion-table.ts +6 -9
- package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
- package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
- package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
- package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
- package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +335 -383
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
- package/src/runtime/backend/runtime-message.ts +5 -3
- package/src/runtime/backend/runtime-values.ts +10 -7
- package/src/runtime/channels/channel-autoconnect.ts +1 -4
- package/src/runtime/channels/channel-clients.ts +93 -73
- package/src/runtime/channels/channel-dispatch-pipeline.ts +40 -42
- package/src/runtime/channels/channel-dispatch-services.ts +51 -49
- package/src/runtime/channels/channel-dispatchers.ts +152 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
- package/src/runtime/channels/channel-envelope.ts +256 -150
- package/src/runtime/channels/channel-multipart.ts +13 -5
- package/src/runtime/channels/channel-outbound-operations.ts +37 -41
- package/src/runtime/channels/channel-receive-loops.ts +102 -98
- package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
- package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
- package/src/runtime/channels/channel-runtime-manager.ts +63 -37
- package/src/runtime/channels/channel-socket-options.ts +3 -10
- package/src/runtime/channels/channel-socket-registry.ts +331 -273
- package/src/runtime/channels/channel-transports.ts +215 -197
- package/src/runtime/channels/client-server-location-runtime.ts +116 -100
- package/src/runtime/channels/client-server-service-wire.ts +37 -36
- package/src/runtime/channels/dispatch-error-reporter.ts +11 -8
- package/src/runtime/channels/fanout-location-runtime.ts +91 -94
- package/src/runtime/channels/fanout-service-wire.ts +5 -12
- package/src/runtime/channels/handler-filter-scope.ts +1 -4
- package/src/runtime/channels/index.ts +1 -4
- package/src/runtime/channels/local-spot-route-transport.ts +20 -5
- package/src/runtime/channels/route-member-snapshot.ts +11 -5
- package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
- package/src/runtime/channels/source-spot-router.ts +26 -22
- package/src/runtime/channels/spot-direct-envelope.ts +10 -8
- package/src/runtime/channels/spot-node-route-transport.ts +13 -16
- package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
- package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
- package/src/runtime/codecs/index.ts +3 -2
- package/src/runtime/diagnostics/flow-context.ts +12 -3
- package/src/runtime/diagnostics/index.ts +96 -61
- package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
- package/src/runtime/diagnostics/message-flow.ts +95 -76
- package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
- package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
- package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
- package/src/runtime/execution/index.ts +18 -26
- package/src/runtime/execution/serial-execution-queue.ts +31 -40
- package/src/runtime/execution/state-lane.ts +2 -2
- package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -51
- package/src/runtime/foundation/event-loop-resources.ts +8 -4
- package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
- package/src/runtime/foundation/operation-identity.ts +1 -2
- package/src/runtime/foundation/operation-registry.ts +8 -2
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +312 -385
- package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
- package/src/runtime/foundation/runtime-state-projections.ts +24 -23
- package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
- package/src/runtime/foundation/service-discovery-registry.ts +67 -59
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
- package/src/runtime/foundation/service-liveness-registry.ts +18 -13
- package/src/runtime/foundation/service-mailbox.ts +14 -14
- package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
- package/src/runtime/foundation/service-metadata-codec.ts +2 -9
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
- package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
- package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
- package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
- package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +1 -4
- package/src/runtime/foundation/service-stateful-registry.ts +69 -59
- package/src/runtime/foundation/service-stateful-runtime.ts +1174 -1112
- package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
- package/src/runtime/foundation/service-topology-registry.ts +157 -159
- package/src/runtime/foundation/service-weighted-selection.ts +9 -15
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
- package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
- package/src/runtime/framework-errors-internal.ts +31 -30
- package/src/runtime/handlers/handler-instance-scope.ts +18 -29
- package/src/runtime/handlers/index.ts +18 -8
- package/src/runtime/host/actor-packet-relay.ts +290 -261
- package/src/runtime/host/actor-placement-coordinator.ts +165 -150
- package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
- package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
- package/src/runtime/host/actor-transfer-runtime.ts +391 -395
- package/src/runtime/host/application-job-queue.ts +32 -48
- package/src/runtime/host/bound-session-relay.ts +7 -9
- package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
- package/src/runtime/host/host-capacity-status.ts +10 -9
- package/src/runtime/host/index.ts +861 -789
- package/src/runtime/host/instance-activation-authority.ts +125 -143
- package/src/runtime/host/location-runtime-owner.ts +38 -26
- package/src/runtime/host/mesh-router-resolver.ts +30 -23
- package/src/runtime/host/relocation-direct-transfer.ts +15 -15
- package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
- package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
- package/src/runtime/host/remote-bound-session-relay.ts +274 -247
- package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
- package/src/runtime/host/route-mesh-runtime.ts +227 -181
- package/src/runtime/host/runtime-shutdown.ts +4 -3
- package/src/runtime/host/service-relocation-control.ts +14 -5
- package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
- package/src/runtime/host/spot-address-transport.ts +284 -237
- package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
- package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
- package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
- package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
- package/src/runtime/locations/actor-location-claims.ts +61 -49
- package/src/runtime/locations/actor-session-route-claims.ts +1 -4
- package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
- package/src/runtime/locations/authority-key-codec.ts +13 -10
- package/src/runtime/locations/auto-connect-loop.ts +14 -11
- package/src/runtime/locations/auto-connect-planner.ts +42 -31
- package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
- package/src/runtime/locations/canonical-codec.ts +3 -1
- package/src/runtime/locations/creation-operation-id.ts +4 -3
- package/src/runtime/locations/domain-store-contract.ts +13 -7
- package/src/runtime/locations/in-memory-authority-store.ts +232 -199
- package/src/runtime/locations/in-memory-location-store.ts +432 -250
- package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
- package/src/runtime/locations/internal-store-contracts.ts +95 -38
- package/src/runtime/locations/key-codec.ts +3 -4
- package/src/runtime/locations/lease-tracker.ts +36 -27
- package/src/runtime/locations/lifecycle-runtime.ts +15 -3
- package/src/runtime/locations/lifecycle.ts +33 -28
- package/src/runtime/locations/location-store-repository.ts +1329 -1185
- package/src/runtime/locations/opaque-record-key.ts +4 -9
- package/src/runtime/locations/resolvers.ts +201 -178
- package/src/runtime/locations/runtime.ts +251 -159
- package/src/runtime/locations/spot-location-claims.ts +110 -112
- package/src/runtime/messaging/creation-payload-codec.ts +4 -1
- package/src/runtime/messaging/framework-json-v1.ts +34 -15
- package/src/runtime/messaging/packet-name.ts +8 -6
- package/src/runtime/messaging/payload-codec.ts +70 -50
- package/src/runtime/messaging/submission-result.ts +6 -9
- package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
- package/src/runtime/routing-id.ts +10 -7
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
- package/src/runtime/spots/index.ts +593 -563
- package/src/runtime/spots/spot-activation-registry.ts +38 -34
- package/src/runtime/spots/spot-activation-state.ts +43 -51
- package/src/runtime/spots/spot-activation.ts +179 -116
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
- package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
- package/src/runtime/spots/spot-actor-membership.ts +25 -27
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +184 -153
- package/src/runtime/spots/spot-actor-packet-drain.ts +54 -42
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
- package/src/runtime/spots/spot-closing.ts +11 -12
- package/src/runtime/spots/spot-context.ts +46 -26
- package/src/runtime/spots/spot-entry-activation.ts +84 -65
- package/src/runtime/spots/spot-handle.ts +17 -15
- package/src/runtime/spots/spot-handler-registry.ts +44 -31
- package/src/runtime/spots/spot-location-claim.ts +5 -4
- package/src/runtime/spots/spot-manager-public.ts +62 -82
- package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
- package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
- package/src/runtime/spots/spot-node-runtime-manager.ts +230 -221
- package/src/runtime/spots/spot-outbound.ts +47 -59
- package/src/runtime/spots/spot-publisher-transport.ts +5 -4
- package/src/runtime/spots/spot-remote-codec.ts +66 -65
- package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
- package/src/runtime/spots/spot-route-packet-dispatch.ts +128 -95
- package/src/runtime/spots/spot-route-replies.ts +23 -24
- package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
- package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
- package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +11 -17
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
- package/src/runtime/spots/spot-routing-internal.ts +1 -4
- package/src/runtime/spots/spot-runtime-ports.ts +5 -5
- package/src/runtime/spots/spot-serial-executor.ts +5 -9
- package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
- package/src/runtime/spots/spot-subscription-dispatch.ts +56 -46
- package/src/runtime/spots/spot-timer.ts +98 -91
- package/src/runtime/streams/actor-session-binding-registry.ts +277 -235
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +7 -4
- package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
- package/src/runtime/streams/bound-actor-relay-sender.ts +53 -51
- package/src/runtime/streams/bound-session-response-target.ts +29 -8
- package/src/runtime/streams/bound-session-service.ts +39 -39
- package/src/runtime/streams/index.ts +176 -100
- package/src/runtime/streams/managed-stream.ts +98 -87
- package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
- package/src/runtime/streams/protocol.ts +73 -43
- package/src/runtime/streams/session-actor-coordinator.ts +97 -89
- package/src/runtime/streams/session-calls.ts +2 -8
- package/src/runtime/streams/session-context.ts +66 -48
- package/src/runtime/streams/session-provider.ts +5 -7
- package/src/runtime/streams/session-serial-executor.ts +7 -6
- package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
- package/src/runtime/streams/stream-frame-factory.ts +55 -38
- package/src/runtime/streams/stream-session-runtime.ts +268 -210
- package/src/runtime/workers/index.ts +68 -29
|
@@ -84,7 +84,7 @@ class ZLinkManagedStream {
|
|
|
84
84
|
}
|
|
85
85
|
async submitBoundActor(actorId, parts, signal) {
|
|
86
86
|
(0, abort_1.throwIfAborted)(signal);
|
|
87
|
-
return await this.sendBoundActor(actorId, parts, ZLINK_SEND_DONT_WAIT)
|
|
87
|
+
return (await this.sendBoundActor(actorId, parts, ZLINK_SEND_DONT_WAIT))
|
|
88
88
|
? { status: submission_result_1.ZLinkSubmitStatus.Submitted }
|
|
89
89
|
: { status: submission_result_1.ZLinkSubmitStatus.Backpressured };
|
|
90
90
|
}
|
|
@@ -137,9 +137,10 @@ class ZLinkManagedStream {
|
|
|
137
137
|
: (_actorId, retiredSession, replacedActor) => {
|
|
138
138
|
onBindingReplaced(replacedActor, retiredSession);
|
|
139
139
|
}, toStreamSessionActorAuthorityFence(authorityFence)), signal), `Actor '${actor.actorId}' native session bind`);
|
|
140
|
-
const binding = route.service
|
|
141
|
-
.
|
|
142
|
-
|
|
140
|
+
const binding = route.service
|
|
141
|
+
.bindings(this.backendRoutingId())
|
|
142
|
+
.find((candidate) => candidate.actor.actorId === nativeActor.actorId &&
|
|
143
|
+
candidate.actor.generation === nativeActor.generation);
|
|
143
144
|
if (binding === undefined) {
|
|
144
145
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, `Actor '${actor.actorId}' native session bind completed without a binding snapshot.`);
|
|
145
146
|
}
|
|
@@ -169,16 +170,16 @@ class ZLinkManagedStream {
|
|
|
169
170
|
const resolved = completion.kindData?.kind === 'actorLookupCompletion'
|
|
170
171
|
? completion.kindData.location.actor
|
|
171
172
|
: undefined;
|
|
172
|
-
if (completion.terminalResult !== 0
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorRouteNotFound, `Actor '${actor.actorId}' native route fence does not match its ActorRef `
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
173
|
+
if (completion.terminalResult !== 0 ||
|
|
174
|
+
completion.failureErrno !== 0 ||
|
|
175
|
+
resolved === undefined ||
|
|
176
|
+
resolved.actorId !== actor.actorId ||
|
|
177
|
+
resolved.generation !== actor.objectGeneration ||
|
|
178
|
+
String(resolved.nodeRid) !== String(actor.nodeRid)) {
|
|
179
|
+
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorRouteNotFound, `Actor '${actor.actorId}' native route fence does not match its ActorRef ` +
|
|
180
|
+
`(expected ${String(actor.nodeRid)}/${actor.objectGeneration}, ` +
|
|
181
|
+
`resolved ${resolved === undefined ? 'none' : `${String(resolved.nodeRid)}/${resolved.generation}`}, ` +
|
|
182
|
+
`terminal=${completion.terminalResult}, failure=${completion.failureErrno}).`);
|
|
182
183
|
}
|
|
183
184
|
}
|
|
184
185
|
finally {
|
|
@@ -231,7 +232,7 @@ class ZLinkManagedStream {
|
|
|
231
232
|
if (binding?.route !== undefined) {
|
|
232
233
|
const nativeParts = parts.map((part) => runtime_message_1.ZLinkBufferMessage.from(part.data()));
|
|
233
234
|
try {
|
|
234
|
-
return await binding.route.service.sendToActor(this.backendRoutingId(), binding.actor, nativeParts, { flags: flags ?? 0 }) === 0;
|
|
235
|
+
return ((await binding.route.service.sendToActor(this.backendRoutingId(), binding.actor, nativeParts, { flags: flags ?? 0 })) === 0);
|
|
235
236
|
}
|
|
236
237
|
finally {
|
|
237
238
|
for (const part of nativeParts) {
|
|
@@ -251,8 +252,9 @@ class ZLinkManagedStream {
|
|
|
251
252
|
}
|
|
252
253
|
hasNativeBinding(route, actorId, bindingGeneration) {
|
|
253
254
|
try {
|
|
254
|
-
return route.service
|
|
255
|
-
|
|
255
|
+
return route.service
|
|
256
|
+
.bindings(this.backendRoutingId())
|
|
257
|
+
.some((candidate) => candidate.actor.actorId === actorId && candidate.bindingGeneration === bindingGeneration);
|
|
256
258
|
}
|
|
257
259
|
catch {
|
|
258
260
|
// A closed native service owns the teardown state. Keep the original
|
|
@@ -266,8 +268,8 @@ class ZLinkManagedStream {
|
|
|
266
268
|
async requireSuccessfulCompletion(completionPromise, operationName, acceptedTerminalResults = NO_ACCEPTED_TERMINAL_RESULTS) {
|
|
267
269
|
const completion = await completionPromise;
|
|
268
270
|
try {
|
|
269
|
-
if (completion.terminalResult !== 0
|
|
270
|
-
|
|
271
|
+
if (completion.terminalResult !== 0 &&
|
|
272
|
+
!acceptedTerminalResults.has(completion.terminalResult)) {
|
|
271
273
|
throw (0, framework_errors_internal_1.wireReplyFailureException)(completion.terminalResult, completion.failureErrno, `${operationName} failed with result ${completion.terminalResult} (errno ${completion.failureErrno}).`);
|
|
272
274
|
}
|
|
273
275
|
}
|
|
@@ -276,13 +278,13 @@ class ZLinkManagedStream {
|
|
|
276
278
|
}
|
|
277
279
|
}
|
|
278
280
|
nativeRoute(meshName) {
|
|
279
|
-
return this.nativeSessionRouteForMesh?.(meshName)
|
|
280
|
-
|
|
281
|
+
return (this.nativeSessionRouteForMesh?.(meshName) ??
|
|
282
|
+
(this.nativeSessionService !== undefined && this.meshCompletions !== undefined
|
|
281
283
|
? {
|
|
282
284
|
service: this.nativeSessionService,
|
|
283
285
|
completions: this.meshCompletions
|
|
284
286
|
}
|
|
285
|
-
: undefined);
|
|
287
|
+
: undefined));
|
|
286
288
|
}
|
|
287
289
|
}
|
|
288
290
|
exports.ZLinkManagedStream = ZLinkManagedStream;
|
|
@@ -290,16 +292,16 @@ function streamSessionIdFromRoutingId(routingId) {
|
|
|
290
292
|
if (typeof routingId === 'string') {
|
|
291
293
|
return routingId;
|
|
292
294
|
}
|
|
293
|
-
if (typeof routingId === 'object'
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
295
|
+
if (typeof routingId === 'object' &&
|
|
296
|
+
routingId !== null &&
|
|
297
|
+
'toHex' in routingId &&
|
|
298
|
+
typeof routingId.toHex === 'function') {
|
|
297
299
|
return routingId.toHex();
|
|
298
300
|
}
|
|
299
|
-
if (typeof routingId === 'object'
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
301
|
+
if (typeof routingId === 'object' &&
|
|
302
|
+
routingId !== null &&
|
|
303
|
+
'toString' in routingId &&
|
|
304
|
+
typeof routingId.toString === 'function') {
|
|
303
305
|
return routingId.toString();
|
|
304
306
|
}
|
|
305
307
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, 'Stream session routing id is invalid.');
|
|
@@ -23,7 +23,9 @@ class ZLinkNativeFallbackBoundSession {
|
|
|
23
23
|
async disconnect(signal) {
|
|
24
24
|
const remoteTarget = this.options.remoteBoundSessionTargetProvider();
|
|
25
25
|
if (remoteTarget !== undefined) {
|
|
26
|
-
const spotKind = 'spotKind' in remoteTarget
|
|
26
|
+
const spotKind = 'spotKind' in remoteTarget
|
|
27
|
+
? remoteTarget.spotKind
|
|
28
|
+
: undefined;
|
|
27
29
|
const payload = (0, actor_packet_relay_wire_1.encodeRemoteActorPacketRelayPayload)({
|
|
28
30
|
actorId: this.options.actorId,
|
|
29
31
|
routerChannelId: remoteTarget.routerChannelId,
|
|
@@ -36,17 +38,23 @@ class ZLinkNativeFallbackBoundSession {
|
|
|
36
38
|
spotId: remoteTarget.spotId,
|
|
37
39
|
spotKind: spotKind ?? contracts_1.ZLinkSpotKind.Entry
|
|
38
40
|
};
|
|
39
|
-
if (await (0, actor_routed_json_request_1.tryRequestRoutedJson)(this.options.routedTransport, target, payload, {
|
|
41
|
+
if (await (0, actor_routed_json_request_1.tryRequestRoutedJson)(this.options.routedTransport, target, payload, {
|
|
42
|
+
timeoutMs: this.options.requestTimeoutMs,
|
|
43
|
+
signal
|
|
44
|
+
})) {
|
|
40
45
|
return;
|
|
41
46
|
}
|
|
42
|
-
await this.options.routedTransport.sendToSpot(target, payload, {
|
|
47
|
+
await this.options.routedTransport.sendToSpot(target, payload, {
|
|
48
|
+
packetName: actors_1.ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET,
|
|
49
|
+
signal
|
|
50
|
+
});
|
|
43
51
|
return;
|
|
44
52
|
}
|
|
45
53
|
const actorRef = this.options.actorRefProvider();
|
|
46
54
|
const node = this.options.nativeActorNodeProvider();
|
|
47
|
-
if (actorRef !== undefined
|
|
48
|
-
|
|
49
|
-
|
|
55
|
+
if (actorRef !== undefined &&
|
|
56
|
+
node !== undefined &&
|
|
57
|
+
currentBindingGeneration(actorRef) !== undefined) {
|
|
50
58
|
await this.options.runtime.disconnectNativeBoundSession(node, actorRef, signal);
|
|
51
59
|
return;
|
|
52
60
|
}
|
|
@@ -106,9 +114,7 @@ class ZLinkNativeFallbackBoundSessionSendCall {
|
|
|
106
114
|
const actorRef = this.options.actorRefProvider();
|
|
107
115
|
const node = this.options.nativeActorNodeProvider();
|
|
108
116
|
const bindingGeneration = currentBindingGeneration(actorRef);
|
|
109
|
-
if (actorRef !== undefined
|
|
110
|
-
&& node !== undefined
|
|
111
|
-
&& bindingGeneration !== undefined) {
|
|
117
|
+
if (actorRef !== undefined && node !== undefined && bindingGeneration !== undefined) {
|
|
112
118
|
nativeAttempted = true;
|
|
113
119
|
const result = await this.options.runtime.sendNativeBoundSession(node, actorRef, this.message, packetName, this.selectedMetadata, signal);
|
|
114
120
|
if (result.status !== submission_result_1.ZLinkSubmitStatus.TargetNotFound) {
|
|
@@ -122,8 +128,7 @@ class ZLinkNativeFallbackBoundSessionSendCall {
|
|
|
122
128
|
}
|
|
123
129
|
if (remoteTarget !== undefined) {
|
|
124
130
|
const actorRef = this.options.actorRefProvider();
|
|
125
|
-
const ownershipGeneration = actorRef
|
|
126
|
-
?.ownershipGeneration;
|
|
131
|
+
const ownershipGeneration = actorRef?.ownershipGeneration;
|
|
127
132
|
const payload = (0, bound_session_wire_1.encodeRemoteBoundSessionSendPayload)({
|
|
128
133
|
actorId: this.options.actorId,
|
|
129
134
|
actorMeshName: actorRef?.meshName,
|
|
@@ -140,8 +145,7 @@ class ZLinkNativeFallbackBoundSessionSendCall {
|
|
|
140
145
|
? (0, flow_context_1.currentOrCreateFlow)('Application')
|
|
141
146
|
: undefined)
|
|
142
147
|
});
|
|
143
|
-
const submit = this.options.routedTransport.submitInfrastructure
|
|
144
|
-
?? this.options.routedTransport.submit;
|
|
148
|
+
const submit = this.options.routedTransport.submitInfrastructure ?? this.options.routedTransport.submit;
|
|
145
149
|
const result = submit === undefined
|
|
146
150
|
? await this.options.routedTransport.sendToSpot({
|
|
147
151
|
routerChannelId: remoteTarget.routerChannelId,
|
|
@@ -161,10 +165,10 @@ class ZLinkNativeFallbackBoundSessionSendCall {
|
|
|
161
165
|
const actorRef = this.options.actorRefProvider();
|
|
162
166
|
const node = this.options.nativeActorNodeProvider();
|
|
163
167
|
const bindingGeneration = currentBindingGeneration(actorRef);
|
|
164
|
-
if (!nativeAttempted
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
+
if (!nativeAttempted &&
|
|
169
|
+
actorRef !== undefined &&
|
|
170
|
+
node !== undefined &&
|
|
171
|
+
bindingGeneration !== undefined) {
|
|
168
172
|
const result = await this.options.runtime.sendNativeBoundSession(node, actorRef, this.message, packetName, this.selectedMetadata, signal);
|
|
169
173
|
this.traceSubmitted(result, packetName);
|
|
170
174
|
return result;
|
|
@@ -38,19 +38,27 @@ var ZLinkStreamCodec;
|
|
|
38
38
|
})(ZLinkStreamCodec || (exports.ZLinkStreamCodec = ZLinkStreamCodec = {}));
|
|
39
39
|
function streamCodecContentType(codec) {
|
|
40
40
|
switch (codec) {
|
|
41
|
-
case ZLinkStreamCodec.Json:
|
|
42
|
-
|
|
43
|
-
case ZLinkStreamCodec.
|
|
44
|
-
|
|
41
|
+
case ZLinkStreamCodec.Json:
|
|
42
|
+
return 'application/json';
|
|
43
|
+
case ZLinkStreamCodec.MessagePack:
|
|
44
|
+
return 'application/x-msgpack';
|
|
45
|
+
case ZLinkStreamCodec.Protobuf:
|
|
46
|
+
return 'application/x-protobuf';
|
|
47
|
+
case ZLinkStreamCodec.Raw:
|
|
48
|
+
return 'application/octet-stream';
|
|
45
49
|
}
|
|
46
50
|
throw new TypeError(`Unsupported STREAM codec '${codec}'.`);
|
|
47
51
|
}
|
|
48
52
|
function streamCodecForContentType(contentType) {
|
|
49
53
|
switch (contentType) {
|
|
50
|
-
case 'application/json':
|
|
51
|
-
|
|
52
|
-
case 'application/x-
|
|
53
|
-
|
|
54
|
+
case 'application/json':
|
|
55
|
+
return ZLinkStreamCodec.Json;
|
|
56
|
+
case 'application/x-msgpack':
|
|
57
|
+
return ZLinkStreamCodec.MessagePack;
|
|
58
|
+
case 'application/x-protobuf':
|
|
59
|
+
return ZLinkStreamCodec.Protobuf;
|
|
60
|
+
case 'application/octet-stream':
|
|
61
|
+
return ZLinkStreamCodec.Raw;
|
|
54
62
|
}
|
|
55
63
|
throw new TypeError(`Unsupported STREAM content type '${contentType}'.`);
|
|
56
64
|
}
|
|
@@ -135,7 +143,8 @@ function encodeStreamHeader(header) {
|
|
|
135
143
|
const hasMetadata = header.metadata.size > 0;
|
|
136
144
|
const hasCorrelation = header.correlationId !== undefined && header.correlationId.length > 0;
|
|
137
145
|
const hasFlow = header.flowId !== undefined || header.flowOrigin !== undefined;
|
|
138
|
-
if (header.kind === ZLinkStreamMessageKind.Control &&
|
|
146
|
+
if (header.kind === ZLinkStreamMessageKind.Control &&
|
|
147
|
+
(hasCorrelation || hasRequestSeq || hasMetadata || hasFlow)) {
|
|
139
148
|
throw new Error('Control packet must not contain a request sequence, metadata, correlation id, or flow id.');
|
|
140
149
|
}
|
|
141
150
|
// Explicit construction: this runs for every outbound frame, so avoid a
|
|
@@ -160,16 +169,16 @@ function decodeStreamHeader(header, flowEnabled = true) {
|
|
|
160
169
|
const hasMetadata = (flags & ZLinkStreamHeaderFlags.HasMetadata) !== 0;
|
|
161
170
|
const hasCorrelation = (flags & ZLinkStreamHeaderFlags.HasCorrelationId) !== 0;
|
|
162
171
|
const hasFlow = (flags & ZLinkStreamHeaderFlags.HasFlowId) !== 0;
|
|
163
|
-
if (kind === ZLinkStreamMessageKind.Control &&
|
|
172
|
+
if (kind === ZLinkStreamMessageKind.Control &&
|
|
173
|
+
(hasCorrelation || hasRequestSeq || hasMetadata || hasFlow)) {
|
|
164
174
|
throw new Error('Control packet must not contain a request sequence, metadata, correlation id, or flow id.');
|
|
165
175
|
}
|
|
166
176
|
const metadata = publicStreamMetadata(decoded.metadata);
|
|
167
177
|
return {
|
|
168
178
|
kind,
|
|
169
179
|
codec: decoded.codec,
|
|
170
|
-
flags: (metadata.size === 0
|
|
171
|
-
?
|
|
172
|
-
: flags) & (flowEnabled ? ~0 : ~ZLinkStreamHeaderFlags.HasFlowId),
|
|
180
|
+
flags: (metadata.size === 0 ? flags & ~ZLinkStreamHeaderFlags.HasMetadata : flags) &
|
|
181
|
+
(flowEnabled ? ~0 : ~ZLinkStreamHeaderFlags.HasFlowId),
|
|
173
182
|
requestSeq: decoded.requestSeq,
|
|
174
183
|
name: decoded.name,
|
|
175
184
|
metadata,
|
|
@@ -212,16 +221,18 @@ function createStreamReplyHeader(requestHeader, kind, codec, flags, metadata, in
|
|
|
212
221
|
// observation-only and is not copied into the reply when tracing is Off
|
|
213
222
|
// (spec 27 §4, §7).
|
|
214
223
|
correlationId: requestHeader.correlationId,
|
|
215
|
-
...(includeFlow
|
|
216
|
-
? { flowId: requestHeader.flowId, flowOrigin: requestHeader.flowOrigin }
|
|
217
|
-
: {})
|
|
224
|
+
...(includeFlow ? { flowId: requestHeader.flowId, flowOrigin: requestHeader.flowOrigin } : {})
|
|
218
225
|
};
|
|
219
226
|
}
|
|
220
227
|
function encodeFlowOrigin(origin) {
|
|
221
|
-
return origin === undefined
|
|
228
|
+
return origin === undefined
|
|
229
|
+
? undefined
|
|
230
|
+
: { Inbound: 1, Timer: 2, Application: 3, Lifecycle: 4 }[origin];
|
|
222
231
|
}
|
|
223
232
|
function decodeFlowOrigin(origin) {
|
|
224
|
-
return origin === undefined
|
|
233
|
+
return origin === undefined
|
|
234
|
+
? undefined
|
|
235
|
+
: { 1: 'Inbound', 2: 'Timer', 3: 'Application', 4: 'Lifecycle' }[origin];
|
|
225
236
|
}
|
|
226
237
|
function messageToBytes(message) {
|
|
227
238
|
const value = message;
|
|
@@ -37,10 +37,10 @@ class ZLinkSessionActorCoordinator {
|
|
|
37
37
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorRouteNotFound, 'Actor session binding requires a stream routing id.');
|
|
38
38
|
}
|
|
39
39
|
const previous = await this.routes.route(actorRef.actorId);
|
|
40
|
-
const sameIncarnation = previous !== undefined
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
const sameIncarnation = previous !== undefined &&
|
|
41
|
+
previous.context === context &&
|
|
42
|
+
previous.actor.ref.actorId === actorRef.actorId &&
|
|
43
|
+
BigInt(previous.actor.ref.objectGeneration) === BigInt(actorRef.objectGeneration);
|
|
44
44
|
const samePhysicalBinding = sameIncarnation && sameActorRef(previous.actor.ref, actorRef);
|
|
45
45
|
const reuseActor = sameIncarnation ? previous.actor : undefined;
|
|
46
46
|
if (reuseActor !== undefined) {
|
|
@@ -57,8 +57,8 @@ class ZLinkSessionActorCoordinator {
|
|
|
57
57
|
const boundActorRef = withBindingGeneration(actorRef, context.stream instanceof managed_stream_1.ZLinkManagedStream
|
|
58
58
|
? context.stream.actorBindingGeneration(actorRef.actorId)
|
|
59
59
|
: undefined, previous?.actor.ref);
|
|
60
|
-
const sessionActor = reuseActor
|
|
61
|
-
|
|
60
|
+
const sessionActor = reuseActor ??
|
|
61
|
+
new session_context_1.DefaultZLinkSessionActor(this.sessionActorRuntime, boundActorRef, bindingToken);
|
|
62
62
|
const sessionIdentity = String(this.actorBindingRoutingId(context));
|
|
63
63
|
sessionActor.updateRef(boundActorRef);
|
|
64
64
|
if (previous === undefined) {
|
|
@@ -73,16 +73,18 @@ class ZLinkSessionActorCoordinator {
|
|
|
73
73
|
else {
|
|
74
74
|
await this.routes.replace(previous, context, sessionActor, bindingToken, authorityFence, sessionIdentity);
|
|
75
75
|
}
|
|
76
|
-
if (confirmRemoteSessionBinding !== false &&
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
if (confirmRemoteSessionBinding !== false &&
|
|
77
|
+
this.options.confirmRemoteActorSessionBinding !== undefined) {
|
|
78
|
+
const waitForAcknowledgement = previous === undefined && confirmRemoteSessionBinding !== 'send';
|
|
79
79
|
const confirmation = this.options.confirmRemoteActorSessionBinding(boundActorRef, this.actorBindingRoutingId(context), undefined, { waitForAcknowledgement });
|
|
80
80
|
const reportFailure = (error) => {
|
|
81
81
|
// A fire-and-forget route update retains the already-current binding;
|
|
82
82
|
// its failure is bounded diagnostics rather than a rollback. The
|
|
83
83
|
// relay retries independently and reports the typed failure through
|
|
84
84
|
// the runtime error sink instead of silently discarding it.
|
|
85
|
-
this.options
|
|
85
|
+
this.options
|
|
86
|
+
.errorSink?.()
|
|
87
|
+
?.reportRuntimeTaskException('remote session binding confirmation', error);
|
|
86
88
|
};
|
|
87
89
|
if (waitForAcknowledgement) {
|
|
88
90
|
try {
|
|
@@ -126,8 +128,7 @@ class ZLinkSessionActorCoordinator {
|
|
|
126
128
|
}
|
|
127
129
|
async resolveAuthorityFence(actorRef, signal) {
|
|
128
130
|
const internal = actorRef;
|
|
129
|
-
if (internal.ownershipGeneration !== undefined
|
|
130
|
-
&& internal.ownerLeaseGeneration !== undefined) {
|
|
131
|
+
if (internal.ownershipGeneration !== undefined && internal.ownerLeaseGeneration !== undefined) {
|
|
131
132
|
const resolved = internal.ownerNodeGeneration === undefined
|
|
132
133
|
? await this.options.actorAuthorityFenceResolver?.(actorRef.actorId, signal)
|
|
133
134
|
: undefined;
|
|
@@ -200,16 +201,16 @@ class ZLinkSessionActorCoordinator {
|
|
|
200
201
|
requireSameIncarnation(route.actor.ref, normalizedActorRef);
|
|
201
202
|
if ((0, routing_id_1.routingIdsEqual)(route.actor.ref.nodeRid, normalizedActorRef.nodeRid)) {
|
|
202
203
|
const authorityFence = await this.resolveAuthorityFence(normalizedActorRef, signal);
|
|
203
|
-
if (options.releaseSeal !== undefined
|
|
204
|
-
|
|
204
|
+
if (options.releaseSeal !== undefined &&
|
|
205
|
+
!(await this.routes.validateSeal(normalizedActorRef.actorId, options.releaseSeal.sealId))) {
|
|
205
206
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor '${normalizedActorRef.actorId}' route switch did not match its relocation seal.`, true);
|
|
206
207
|
}
|
|
207
208
|
route.actor.updateRef(normalizedActorRef);
|
|
208
209
|
if (authorityFence !== undefined) {
|
|
209
210
|
await this.routes.updateAuthorityFence(normalizedActorRef.actorId, authorityFence);
|
|
210
211
|
}
|
|
211
|
-
if (options.releaseSeal !== undefined
|
|
212
|
-
|
|
212
|
+
if (options.releaseSeal !== undefined &&
|
|
213
|
+
!(await this.routes.abortSeal(normalizedActorRef.actorId, options.releaseSeal.sealId))) {
|
|
213
214
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor '${normalizedActorRef.actorId}' route switch lost its relocation seal.`, true);
|
|
214
215
|
}
|
|
215
216
|
return;
|
|
@@ -221,10 +222,10 @@ class ZLinkSessionActorCoordinator {
|
|
|
221
222
|
return await this.lifecycle.run(actorRef.actorId, async () => {
|
|
222
223
|
(0, abort_1.throwIfAborted)(signal);
|
|
223
224
|
const route = await this.routes.route(actorRef.actorId);
|
|
224
|
-
if (route === undefined
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
225
|
+
if (route === undefined ||
|
|
226
|
+
!sameActorRef(route.actor.ref, actorRef) ||
|
|
227
|
+
!(0, routing_id_1.routingIdsEqual)(route.sessionIdentity, sessionRid) ||
|
|
228
|
+
bindingGenerationOf(route.actor.ref) !== bindingGeneration) {
|
|
228
229
|
return false;
|
|
229
230
|
}
|
|
230
231
|
// A late legacy tombstone may remove only the still-current exact route.
|
|
@@ -241,9 +242,7 @@ class ZLinkSessionActorCoordinator {
|
|
|
241
242
|
const route = await this.routes.route(actorId);
|
|
242
243
|
const sessionRid = route?.sessionIdentity;
|
|
243
244
|
const actor = route?.actor.ref;
|
|
244
|
-
if (route === undefined
|
|
245
|
-
|| sessionRid === undefined
|
|
246
|
-
|| actor?.bindingGeneration === undefined) {
|
|
245
|
+
if (route === undefined || sessionRid === undefined || actor?.bindingGeneration === undefined) {
|
|
247
246
|
return undefined;
|
|
248
247
|
}
|
|
249
248
|
return {
|
|
@@ -286,9 +285,7 @@ exports.ZLinkSessionActorCoordinator = ZLinkSessionActorCoordinator;
|
|
|
286
285
|
function withBindingGeneration(actorRef, nativeBindingGeneration, previousRef) {
|
|
287
286
|
const input = actorRef;
|
|
288
287
|
const previous = previousRef;
|
|
289
|
-
const bindingGeneration = nativeBindingGeneration
|
|
290
|
-
?? input.bindingGeneration
|
|
291
|
-
?? previous?.bindingGeneration;
|
|
288
|
+
const bindingGeneration = nativeBindingGeneration ?? input.bindingGeneration ?? previous?.bindingGeneration;
|
|
292
289
|
if (bindingGeneration === undefined) {
|
|
293
290
|
return actorRef;
|
|
294
291
|
}
|
|
@@ -323,10 +320,10 @@ function preserveInternalActorRefField(target, source, field) {
|
|
|
323
320
|
});
|
|
324
321
|
}
|
|
325
322
|
function isActorRefLike(value) {
|
|
326
|
-
return (typeof value === 'object'
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
323
|
+
return (typeof value === 'object' &&
|
|
324
|
+
'nodeRid' in value &&
|
|
325
|
+
'actorId' in value &&
|
|
326
|
+
('objectGeneration' in value || 'generation' in value));
|
|
330
327
|
}
|
|
331
328
|
function normalizeActorRef(value, defaultMeshName) {
|
|
332
329
|
const objectGeneration = value.objectGeneration ?? value.generation;
|
|
@@ -357,15 +354,15 @@ function createBindingToken() {
|
|
|
357
354
|
return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
|
|
358
355
|
}
|
|
359
356
|
function sameActorRef(left, right) {
|
|
360
|
-
return (0, routing_id_1.routingIdsEqual)(left.nodeRid, right.nodeRid)
|
|
361
|
-
|
|
362
|
-
|
|
357
|
+
return ((0, routing_id_1.routingIdsEqual)(left.nodeRid, right.nodeRid) &&
|
|
358
|
+
left.actorId === right.actorId &&
|
|
359
|
+
BigInt(left.objectGeneration) === BigInt(right.objectGeneration));
|
|
363
360
|
}
|
|
364
361
|
function requireSameIncarnation(current, updated) {
|
|
365
|
-
if (current.actorId === updated.actorId
|
|
366
|
-
|
|
362
|
+
if (current.actorId === updated.actorId &&
|
|
363
|
+
BigInt(current.objectGeneration) === BigInt(updated.objectGeneration)) {
|
|
367
364
|
return;
|
|
368
365
|
}
|
|
369
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor '${updated.actorId}' route update cannot replace object generation `
|
|
370
|
-
|
|
366
|
+
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor '${updated.actorId}' route update cannot replace object generation ` +
|
|
367
|
+
`${String(current.objectGeneration)} with ${String(updated.objectGeneration)}.`, true);
|
|
371
368
|
}
|
|
@@ -71,9 +71,9 @@ class DefaultZLinkSessionContext {
|
|
|
71
71
|
}
|
|
72
72
|
beginActorBindingReplacement(actor, retiredSession) {
|
|
73
73
|
const previous = this.retiredActorBindings.get(actor.actorId);
|
|
74
|
-
if (previous !== undefined
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
if (previous !== undefined &&
|
|
75
|
+
previous.actorGeneration === actor.generation &&
|
|
76
|
+
sameRetiredSession(previous.retiredSession, retiredSession)) {
|
|
77
77
|
return false;
|
|
78
78
|
}
|
|
79
79
|
this.closingForActorReplacement = true;
|
|
@@ -85,17 +85,17 @@ class DefaultZLinkSessionContext {
|
|
|
85
85
|
}
|
|
86
86
|
isExactRetiredActorBinding(actor, retiredSession) {
|
|
87
87
|
const expected = this.retiredActorBindings.get(actor.actorId);
|
|
88
|
-
if (expected === undefined
|
|
89
|
-
|
|
90
|
-
|
|
88
|
+
if (expected === undefined ||
|
|
89
|
+
expected.actorGeneration !== actor.generation ||
|
|
90
|
+
!sameRetiredSession(expected.retiredSession, retiredSession)) {
|
|
91
91
|
return false;
|
|
92
92
|
}
|
|
93
93
|
const current = this.findBoundActor(actor.actorId);
|
|
94
94
|
if (current === undefined)
|
|
95
95
|
return true;
|
|
96
96
|
const currentRef = current.ref;
|
|
97
|
-
return BigInt(currentRef.objectGeneration) === actor.generation
|
|
98
|
-
|
|
97
|
+
return (BigInt(currentRef.objectGeneration) === actor.generation &&
|
|
98
|
+
currentRef.bindingGeneration === retiredSession.retiredBindingGeneration);
|
|
99
99
|
}
|
|
100
100
|
createTextMessage(payload) {
|
|
101
101
|
return this.runtime.createTextMessage(payload);
|
|
@@ -194,7 +194,9 @@ class DefaultZLinkSessionHandlerRegistry {
|
|
|
194
194
|
if (typeof handlerType.prototype?.handle !== 'function') {
|
|
195
195
|
throw new TypeError(`Session handler '${handlerType.name}' must implement handle(...).`);
|
|
196
196
|
}
|
|
197
|
-
this.handlersByPacket.set(packetName, {
|
|
197
|
+
this.handlersByPacket.set(packetName, {
|
|
198
|
+
handlerType: handlerType
|
|
199
|
+
});
|
|
198
200
|
return this;
|
|
199
201
|
}
|
|
200
202
|
closeRegistration() {
|
|
@@ -215,14 +217,15 @@ class DefaultZLinkSessionHandlerRegistry {
|
|
|
215
217
|
return await registration.instance;
|
|
216
218
|
}
|
|
217
219
|
async createHandler(handlerType) {
|
|
218
|
-
return this.providerResolver?.get?.(handlerType)
|
|
219
|
-
|
|
220
|
-
|
|
220
|
+
return (this.providerResolver?.get?.(handlerType) ??
|
|
221
|
+
(await this.providerResolver?.create?.(handlerType)) ??
|
|
222
|
+
new handlerType());
|
|
221
223
|
}
|
|
222
224
|
}
|
|
223
225
|
function sessionHandlerPacketName(handlerType) {
|
|
224
226
|
const declared = (0, Attributes_1.readZLinkDecoratorMetadata)(handlerType)
|
|
225
|
-
.find((metadata) => metadata.kind === 'packet')
|
|
227
|
+
.find((metadata) => metadata.kind === 'packet')
|
|
228
|
+
?.packetName?.trim();
|
|
226
229
|
if (declared === undefined || declared.length === 0) {
|
|
227
230
|
throw new configuration_1.ZLinkConfigurationException(`Session handler '${handlerType.name}' must declare a packet name with @ZLinkPacket(...).`);
|
|
228
231
|
}
|
|
@@ -281,16 +284,14 @@ class DefaultZLinkSessionActor {
|
|
|
281
284
|
throw new Error(`Cannot change session actor id from '${this.actorId}' to '${ref.actorId}'.`);
|
|
282
285
|
}
|
|
283
286
|
if (BigInt(ref.objectGeneration) !== BigInt(this.currentRef.objectGeneration)) {
|
|
284
|
-
throw new Error(`Cannot change session actor '${this.actorId}' object generation `
|
|
285
|
-
|
|
286
|
-
|
|
287
|
+
throw new Error(`Cannot change session actor '${this.actorId}' object generation ` +
|
|
288
|
+
`from ${String(this.currentRef.objectGeneration)} ` +
|
|
289
|
+
`to ${String(ref.objectGeneration)}.`);
|
|
287
290
|
}
|
|
288
291
|
this.currentRef = ref;
|
|
289
292
|
}
|
|
290
293
|
async relay(dispatchOrPayload, payloadOrSignal, signal) {
|
|
291
|
-
const dispatch = isSessionDispatchContext(dispatchOrPayload)
|
|
292
|
-
? dispatchOrPayload
|
|
293
|
-
: undefined;
|
|
294
|
+
const dispatch = isSessionDispatchContext(dispatchOrPayload) ? dispatchOrPayload : undefined;
|
|
294
295
|
let payload;
|
|
295
296
|
let relaySignal;
|
|
296
297
|
let header;
|
|
@@ -322,9 +323,10 @@ function createSessionDispatchContext(header) {
|
|
|
322
323
|
return dispatch;
|
|
323
324
|
}
|
|
324
325
|
function isSessionDispatchContext(value) {
|
|
325
|
-
return value !== null &&
|
|
326
|
-
|
|
327
|
-
|
|
326
|
+
return (value !== null &&
|
|
327
|
+
typeof value === 'object' &&
|
|
328
|
+
typeof value.packetName === 'string' &&
|
|
329
|
+
'canReply' in value);
|
|
328
330
|
}
|
|
329
331
|
function sessionDispatchHeader(dispatch) {
|
|
330
332
|
const header = SESSION_DISPATCH_HEADERS.get(dispatch);
|
|
@@ -368,10 +370,10 @@ function decodeStreamErrorPayload(payload) {
|
|
|
368
370
|
}
|
|
369
371
|
}
|
|
370
372
|
function sameRetiredSession(left, right) {
|
|
371
|
-
return left.sessionOwnerNodeRid === right.sessionOwnerNodeRid
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
373
|
+
return (left.sessionOwnerNodeRid === right.sessionOwnerNodeRid &&
|
|
374
|
+
left.sessionOwnerNodeGeneration === right.sessionOwnerNodeGeneration &&
|
|
375
|
+
left.sessionOwnerId === right.sessionOwnerId &&
|
|
376
|
+
left.sessionOwnerLeaseGeneration === right.sessionOwnerLeaseGeneration &&
|
|
377
|
+
left.sessionRid === right.sessionRid &&
|
|
378
|
+
left.retiredBindingGeneration === right.retiredBindingGeneration);
|
|
377
379
|
}
|
|
@@ -25,6 +25,6 @@ async function createProviderInstance(type, resolver, fallbackArg) {
|
|
|
25
25
|
: new type(fallbackArg);
|
|
26
26
|
}
|
|
27
27
|
function isSessionFactory(value) {
|
|
28
|
-
return typeof value.create === 'function'
|
|
29
|
-
|
|
28
|
+
return (typeof value.create === 'function' &&
|
|
29
|
+
value.context === undefined);
|
|
30
30
|
}
|
|
@@ -33,8 +33,7 @@ class ZLinkSessionSerialExecutor {
|
|
|
33
33
|
const submitted = (0, application_job_queue_scope_1.hasApplicationJobPermit)()
|
|
34
34
|
? this.scheduler.submitPreAdmitted(boundWork, serialOptions)
|
|
35
35
|
: this.scheduler.submit(boundWork, serialOptions);
|
|
36
|
-
void submitted
|
|
37
|
-
.catch(error => onRejected?.(error));
|
|
36
|
+
void submitted.catch((error) => onRejected?.(error));
|
|
38
37
|
return true;
|
|
39
38
|
}
|
|
40
39
|
async dispose() {
|
|
@@ -53,7 +53,9 @@ class ZLinkStreamFrameMessageFactory {
|
|
|
53
53
|
if (compressed) {
|
|
54
54
|
body = compressStreamPayload(body, this.compressionCodec);
|
|
55
55
|
}
|
|
56
|
-
const flags = compressed
|
|
56
|
+
const flags = compressed
|
|
57
|
+
? protocol_1.ZLinkStreamHeaderFlags.PayloadCompressed
|
|
58
|
+
: protocol_1.ZLinkStreamHeaderFlags.None;
|
|
57
59
|
const frame = (0, protocol_1.encodeStreamFrame)(createHeader(encoded.codec, flags), body);
|
|
58
60
|
return this.createOwnedFrameMessage(frame);
|
|
59
61
|
}
|
|
@@ -92,10 +94,14 @@ class ZLinkStreamFrameMessageFactory {
|
|
|
92
94
|
exports.ZLinkStreamFrameMessageFactory = ZLinkStreamFrameMessageFactory;
|
|
93
95
|
function streamDirection(kind) {
|
|
94
96
|
switch (kind) {
|
|
95
|
-
case protocol_1.ZLinkStreamMessageKind.Request:
|
|
96
|
-
|
|
97
|
-
case protocol_1.ZLinkStreamMessageKind.
|
|
98
|
-
|
|
97
|
+
case protocol_1.ZLinkStreamMessageKind.Request:
|
|
98
|
+
return 'Request';
|
|
99
|
+
case protocol_1.ZLinkStreamMessageKind.Response:
|
|
100
|
+
return 'Response';
|
|
101
|
+
case protocol_1.ZLinkStreamMessageKind.Error:
|
|
102
|
+
return 'Error';
|
|
103
|
+
default:
|
|
104
|
+
return 'Send';
|
|
99
105
|
}
|
|
100
106
|
}
|
|
101
107
|
exports.zlinkStreamLz4CompressionCodec = {
|