@zlink-systems/framework 0.26.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/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/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +4 -0
- package/dist/internal.js +15 -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 +1 -2
- package/dist/runtime/activation-admission.js +2 -6
- 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 +13 -11
- package/dist/runtime/actors/actor-handoff.d.ts +4 -4
- package/dist/runtime/actors/actor-handoff.js +8 -8
- 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 +83 -105
- 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 +1 -1
- package/dist/runtime/actors/actor-remote-joiner.js +5 -9
- 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-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
- package/dist/runtime/actors/deferred-join-completion.js +1 -0
- package/dist/runtime/actors/index.d.ts +9 -7
- package/dist/runtime/actors/index.js +87 -69
- 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 +2 -0
- package/dist/runtime/admission.js +7 -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 +6 -23
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
- 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-support.d.ts +1 -1
- package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
- package/dist/runtime/backend/raw-binding-port.d.ts +1 -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 -8
- package/dist/runtime/channels/channel-clients.js +68 -52
- 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 -10
- 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.js +5 -2
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
- package/dist/runtime/channels/channel-socket-registry.js +248 -174
- package/dist/runtime/channels/channel-transports.d.ts +11 -17
- 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 +130 -72
- 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 +12 -9
- package/dist/runtime/execution/index.js +58 -14
- package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
- package/dist/runtime/execution/serial-execution-queue.js +54 -15
- 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/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 +8 -5
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
- 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.js +22 -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 +0 -6
- 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-object-owner.js +3 -2
- 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 -12
- 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 +26 -25
- package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
- package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
- package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
- package/dist/runtime/foundation/service-topology-registry.js +17 -32
- 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 +16 -18
- package/dist/runtime/host/actor-transfer-runtime.js +143 -176
- 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 +14 -13
- package/dist/runtime/host/index.js +190 -157
- 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 +7 -20
- package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
- package/dist/runtime/host/route-mesh-runtime.js +171 -252
- 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 +21 -30
- package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
- 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 -10
- package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
- package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
- 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 +72 -22
- 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 +4 -9
- package/dist/runtime/locations/lifecycle.js +2 -31
- 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 +37 -28
- 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 +6 -0
- package/dist/runtime/locations/spot-location-claims.js +42 -1
- 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 +1 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
- package/dist/runtime/spots/index.d.ts +14 -20
- package/dist/runtime/spots/index.js +302 -176
- package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
- package/dist/runtime/spots/spot-activation-registry.js +14 -50
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +2 -2
- package/dist/runtime/spots/spot-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-activation.js +49 -32
- 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 +4 -52
- package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
- package/dist/runtime/spots/spot-actor-membership.js +22 -45
- 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 +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +9 -20
- 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 +5 -4
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +9 -8
- 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 -3
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
- 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 +2 -16
- package/dist/runtime/spots/spot-serial-executor.js +2 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
- package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
- 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 +11 -1
- package/dist/runtime/streams/index.d.ts +14 -15
- package/dist/runtime/streams/index.js +20 -21
- 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/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/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/Spots/Contracts.ts +1 -1
- package/src/internal.ts +14 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +2 -8
- 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 +39 -33
- package/src/runtime/actors/actor-handoff.ts +24 -22
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +172 -174
- 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 +9 -11
- 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-state.ts +85 -247
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +10 -6
- package/src/runtime/actors/index.ts +100 -79
- 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 +8 -1
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +13 -29
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
- package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
- package/src/runtime/backend/raw-binding-port.ts +1 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -85
- 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 -23
- 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 +6 -2
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +301 -192
- package/src/runtime/channels/channel-transports.ts +161 -112
- 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 +172 -91
- 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 +60 -20
- package/src/runtime/execution/serial-execution-queue.ts +131 -18
- 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/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +31 -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 +0 -10
- 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-object-owner.ts +5 -2
- 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 -17
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
- package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
- package/src/runtime/foundation/service-topology-registry.ts +23 -32
- 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 +180 -260
- 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 +327 -296
- 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 +8 -41
- package/src/runtime/host/route-mesh-runtime.ts +228 -271
- 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 +699 -561
- 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 +73 -22
- package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
- 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 +100 -25
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +13 -43
- 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 +75 -49
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +58 -1
- 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 +18 -8
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
- package/src/runtime/spots/index.ts +433 -229
- package/src/runtime/spots/spot-activation-registry.ts +30 -69
- package/src/runtime/spots/spot-activation-state.ts +2 -2
- package/src/runtime/spots/spot-activation.ts +67 -37
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
- package/src/runtime/spots/spot-actor-membership.ts +40 -72
- 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 -30
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +21 -17
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
- package/src/runtime/spots/spot-outbound.ts +45 -23
- 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 -26
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +5 -27
- package/src/runtime/spots/spot-serial-executor.ts +2 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +21 -1
- package/src/runtime/streams/index.ts +76 -64
- 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/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/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/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -169,7 +169,59 @@ export class ZLinkSpotLocationClaims {
|
|
|
169
169
|
tracked.storeVersion = result.storeVersion.value;
|
|
170
170
|
onCommitted();
|
|
171
171
|
return {
|
|
172
|
-
release:
|
|
172
|
+
release: () => this.release(meshName, spotId),
|
|
173
|
+
reincarnate: async (initialize) => {
|
|
174
|
+
const reincarnated = await store.compareExchangeAuthority(key, result.storeVersion, {
|
|
175
|
+
kind: 'put',
|
|
176
|
+
generationTransition: 'reincarnate',
|
|
177
|
+
payload: replaceServiceRelocationAuthorityApplicationPayload(
|
|
178
|
+
result.payload,
|
|
179
|
+
encodeServiceInstanceAuthorityPayload({ ...decoded, state: 'coldActivating' })
|
|
180
|
+
)
|
|
181
|
+
});
|
|
182
|
+
if (reincarnated.kind !== 'stored') {
|
|
183
|
+
throw createInternalFrameworkException(
|
|
184
|
+
reincarnated.kind === 'generationExhausted'
|
|
185
|
+
? ZLinkFrameworkInternalErrorKind.InvalidOperation
|
|
186
|
+
: ZLinkFrameworkInternalErrorKind.SpotMoving,
|
|
187
|
+
`Instance Spot '${String(spotId)}' Closing authority changed before reincarnation.`
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
this.trackInstanceAuthority({
|
|
191
|
+
...tracked,
|
|
192
|
+
objectGeneration: reincarnated.objectGeneration,
|
|
193
|
+
authorityOwnerGeneration: reincarnated.authorityOwnerGeneration,
|
|
194
|
+
storeVersion: reincarnated.storeVersion.value
|
|
195
|
+
});
|
|
196
|
+
this.invalidateSpotRoute?.(spotId);
|
|
197
|
+
try {
|
|
198
|
+
await initialize({ ...reincarnated, kind: 'snapshot', stableType: tracked.stableType });
|
|
199
|
+
const ready = await store.compareExchangeAuthority(key, reincarnated.storeVersion, {
|
|
200
|
+
kind: 'put',
|
|
201
|
+
generationTransition: 'preserve',
|
|
202
|
+
payload: replaceServiceRelocationAuthorityApplicationPayload(
|
|
203
|
+
reincarnated.payload,
|
|
204
|
+
encodeServiceInstanceAuthorityPayload({ ...decoded, state: 'ready' })
|
|
205
|
+
)
|
|
206
|
+
});
|
|
207
|
+
if (ready.kind !== 'stored') {
|
|
208
|
+
throw createInternalFrameworkException(
|
|
209
|
+
ready.kind === 'generationExhausted'
|
|
210
|
+
? ZLinkFrameworkInternalErrorKind.InvalidOperation
|
|
211
|
+
: ZLinkFrameworkInternalErrorKind.SpotMoving,
|
|
212
|
+
`Instance Spot '${String(spotId)}' reincarnation authority changed before initialization completed.`
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
const latest = this.spots.get(canonical);
|
|
216
|
+
if (latest?.kind === 'authority' && latest.objectGeneration === ready.objectGeneration) {
|
|
217
|
+
latest.storeVersion = ready.storeVersion.value;
|
|
218
|
+
}
|
|
219
|
+
return { ...ready, kind: 'snapshot', stableType: tracked.stableType };
|
|
220
|
+
} catch (error) {
|
|
221
|
+
await this.release(meshName, spotId, reincarnated.objectGeneration);
|
|
222
|
+
throw error;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
173
225
|
};
|
|
174
226
|
}
|
|
175
227
|
|
|
@@ -354,6 +406,11 @@ export interface ZLinkTrackedInstanceAuthority {
|
|
|
354
406
|
|
|
355
407
|
export interface ZLinkInstanceClosingAuthority {
|
|
356
408
|
release(): Promise<void>;
|
|
409
|
+
reincarnate?(
|
|
410
|
+
initialize: (
|
|
411
|
+
authority: ZLinkAuthoritySnapshot & { readonly stableType: string }
|
|
412
|
+
) => Promise<void>
|
|
413
|
+
): Promise<ZLinkAuthoritySnapshot & { readonly stableType: string }>;
|
|
357
414
|
}
|
|
358
415
|
|
|
359
416
|
interface TrackedLegacySpot {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
|
|
1
2
|
import {
|
|
2
3
|
ZLinkFrameworkInternalErrorKind,
|
|
3
4
|
createInternalFrameworkException
|
|
@@ -31,6 +32,8 @@ import {
|
|
|
31
32
|
matchEveryDeclaredMessageType
|
|
32
33
|
} from '../../contracts/Configuration/CodecSerializerSelection';
|
|
33
34
|
|
|
35
|
+
const MAX_DECLARED_TYPE_SELECTIONS = 1024;
|
|
36
|
+
|
|
34
37
|
export interface ZLinkSerializerRegistryLike {
|
|
35
38
|
readonly serializers: ReadonlyMap<string, ZLinkMessageSerializer>;
|
|
36
39
|
}
|
|
@@ -49,7 +52,12 @@ interface ZLinkSerializerSelectionPlan {
|
|
|
49
52
|
}
|
|
50
53
|
|
|
51
54
|
const noSerializer = Symbol('noSerializer');
|
|
52
|
-
const JSON_CONTENT_TYPE =
|
|
55
|
+
const JSON_CONTENT_TYPE = ZlinkStreamContentType.Json;
|
|
56
|
+
const frameworkJsonReceiveCodec = Symbol('frameworkJsonReceiveCodec');
|
|
57
|
+
const defaultReceiveCodecs: ReadonlyMap<string, typeof frameworkJsonReceiveCodec> = new Map<
|
|
58
|
+
string,
|
|
59
|
+
typeof frameworkJsonReceiveCodec
|
|
60
|
+
>([[JSON_CONTENT_TYPE, frameworkJsonReceiveCodec]]);
|
|
53
61
|
|
|
54
62
|
// Registration maps are created during host configuration and are immutable
|
|
55
63
|
// for the runtime lifetime. Compile the candidate list and reverse content
|
|
@@ -84,9 +92,9 @@ export function encodeFrameworkPayload(
|
|
|
84
92
|
return {
|
|
85
93
|
message: rememberContentType(
|
|
86
94
|
toRuntimeMessage(payload.toEncodedPayload()),
|
|
87
|
-
|
|
95
|
+
ZlinkStreamContentType.Raw
|
|
88
96
|
),
|
|
89
|
-
contentType:
|
|
97
|
+
contentType: ZlinkStreamContentType.Raw
|
|
90
98
|
};
|
|
91
99
|
}
|
|
92
100
|
declaredType = readZLinkMessageDeclaredType(payload);
|
|
@@ -141,7 +149,7 @@ export function decodeFrameworkPayloadMessage<T>(
|
|
|
141
149
|
message: Message,
|
|
142
150
|
registry?: ZLinkSerializerRegistryLike | ReadonlyMap<string, ZLinkMessageSerializer>,
|
|
143
151
|
type?: Type<T>,
|
|
144
|
-
contentType = JSON_CONTENT_TYPE,
|
|
152
|
+
contentType: string = JSON_CONTENT_TYPE,
|
|
145
153
|
packetName?: string,
|
|
146
154
|
contractPart: 'payload' | 'reply' = 'payload'
|
|
147
155
|
): T {
|
|
@@ -152,7 +160,7 @@ export function decodeFrameworkTypedPayloadMessage<T>(
|
|
|
152
160
|
message: Message,
|
|
153
161
|
registry?: ZLinkSerializerRegistryLike | ReadonlyMap<string, ZLinkMessageSerializer>,
|
|
154
162
|
type?: Type<T>,
|
|
155
|
-
contentType = JSON_CONTENT_TYPE,
|
|
163
|
+
contentType: string = JSON_CONTENT_TYPE,
|
|
156
164
|
packetName?: string,
|
|
157
165
|
contractPart: 'payload' | 'reply' = 'payload'
|
|
158
166
|
): T {
|
|
@@ -167,17 +175,10 @@ function decodeFrameworkPayload<T>(
|
|
|
167
175
|
packetName: string | undefined,
|
|
168
176
|
contractPart: 'payload' | 'reply'
|
|
169
177
|
): T {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
}
|
|
173
|
-
if (contentType !== JSON_CONTENT_TYPE) {
|
|
174
|
-
const serializer = serializerMapOf(registry)?.get(contentType);
|
|
175
|
-
if (serializer === undefined) throw unsupportedContentType(contentType);
|
|
178
|
+
const codec = receiveCodecFor(contentType, registry);
|
|
179
|
+
if (codec !== frameworkJsonReceiveCodec) {
|
|
176
180
|
if (message.isEmpty()) return undefined as T;
|
|
177
|
-
return
|
|
178
|
-
encodedPayloadFromOwned(message.data()),
|
|
179
|
-
(type ?? Object) as Type<T>
|
|
180
|
-
);
|
|
181
|
+
return codec.deserialize(encodedPayloadFromOwned(message.data()), (type ?? Object) as Type<T>);
|
|
181
182
|
}
|
|
182
183
|
|
|
183
184
|
if (message.isEmpty()) return undefined as T;
|
|
@@ -197,7 +198,7 @@ function decodeFrameworkPayload<T>(
|
|
|
197
198
|
export function wrapFrameworkPayloadMessage(
|
|
198
199
|
message: Message,
|
|
199
200
|
registry?: ZLinkSerializerRegistryLike | ReadonlyMap<string, ZLinkMessageSerializer>,
|
|
200
|
-
contentType = JSON_CONTENT_TYPE,
|
|
201
|
+
contentType: string = JSON_CONTENT_TYPE,
|
|
201
202
|
packetName?: string,
|
|
202
203
|
contractPart: 'payload' | 'reply' = 'payload'
|
|
203
204
|
): ZLinkMessage {
|
|
@@ -215,14 +216,10 @@ function decodeFrameworkEncodedPayload<T>(
|
|
|
215
216
|
packetName: string | undefined,
|
|
216
217
|
contractPart: 'payload' | 'reply'
|
|
217
218
|
): T {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
}
|
|
221
|
-
if (contentType !== JSON_CONTENT_TYPE) {
|
|
222
|
-
const serializer = serializerMapOf(registry)?.get(contentType);
|
|
223
|
-
if (serializer === undefined) throw unsupportedContentType(contentType);
|
|
219
|
+
const codec = receiveCodecFor(contentType, registry);
|
|
220
|
+
if (codec !== frameworkJsonReceiveCodec) {
|
|
224
221
|
if (payload.isEmpty()) return undefined as T;
|
|
225
|
-
return
|
|
222
|
+
return codec.deserialize(payload, (type ?? Object) as Type<T>);
|
|
226
223
|
}
|
|
227
224
|
if (payload.isEmpty()) return undefined as T;
|
|
228
225
|
const text = payload.getString('utf8');
|
|
@@ -241,6 +238,20 @@ function decodeFrameworkEncodedPayload<T>(
|
|
|
241
238
|
}
|
|
242
239
|
}
|
|
243
240
|
|
|
241
|
+
function receiveCodecFor(
|
|
242
|
+
contentType: string,
|
|
243
|
+
registry: ZLinkSerializerRegistryLike | ReadonlyMap<string, ZLinkMessageSerializer> | undefined
|
|
244
|
+
): ZLinkMessageSerializer | typeof frameworkJsonReceiveCodec {
|
|
245
|
+
if (!isCanonicalCodecContentType(contentType)) {
|
|
246
|
+
throw unsupportedContentType(contentType);
|
|
247
|
+
}
|
|
248
|
+
const registeredCodec = serializerMapOf(registry)?.get(contentType);
|
|
249
|
+
if (registeredCodec !== undefined) return registeredCodec;
|
|
250
|
+
const defaultCodec = defaultReceiveCodecs.get(contentType);
|
|
251
|
+
if (defaultCodec !== undefined) return defaultCodec;
|
|
252
|
+
throw unsupportedContentType(contentType);
|
|
253
|
+
}
|
|
254
|
+
|
|
244
255
|
function schemaForDecode(
|
|
245
256
|
type: Type<unknown> | undefined,
|
|
246
257
|
packetName: string | undefined,
|
|
@@ -316,7 +327,7 @@ function serializerSelectionPlanOf(
|
|
|
316
327
|
return cached === noSerializer ? undefined : cached;
|
|
317
328
|
}
|
|
318
329
|
const selected = selectSerializerFromEntries(frozenEntries, declaredType);
|
|
319
|
-
if (cachedBusinessTypeCount <
|
|
330
|
+
if (cachedBusinessTypeCount < MAX_DECLARED_TYPE_SELECTIONS) {
|
|
320
331
|
outboundByBusinessType.set(declaredType, selected ?? noSerializer);
|
|
321
332
|
cachedBusinessTypeCount += 1;
|
|
322
333
|
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ZLinkFrameworkInternalErrorKind,
|
|
3
|
-
createInternalFrameworkException
|
|
3
|
+
createInternalFrameworkException,
|
|
4
|
+
requestResultToPublicErrorKind
|
|
4
5
|
} from '../framework-errors-internal';
|
|
6
|
+
import { ZLinkFrameworkException } from '../../contracts';
|
|
7
|
+
import { RequestResult, SubmitResult } from '../backend/runtime-values';
|
|
5
8
|
export enum ZLinkSubmitStatus {
|
|
6
9
|
Submitted = 'submitted',
|
|
7
10
|
Backpressured = 'backpressured',
|
|
@@ -15,6 +18,59 @@ export interface ZLinkSubmitResult {
|
|
|
15
18
|
readonly status: ZLinkSubmitStatus;
|
|
16
19
|
}
|
|
17
20
|
|
|
21
|
+
/** Projects the Core submit result once; phase only determines capacity refusal meaning. */
|
|
22
|
+
export function submitToRequestResult(result: number, phase: 'submit' | 'completion'): number {
|
|
23
|
+
switch (result) {
|
|
24
|
+
case SubmitResult.Ok:
|
|
25
|
+
return RequestResult.Ok;
|
|
26
|
+
case SubmitResult.Backpressured:
|
|
27
|
+
return phase === 'submit' ? RequestResult.NotConnected : RequestResult.TimedOut;
|
|
28
|
+
case SubmitResult.NotConnected:
|
|
29
|
+
return RequestResult.NotConnected;
|
|
30
|
+
case SubmitResult.NotFound:
|
|
31
|
+
return RequestResult.NotFound;
|
|
32
|
+
case SubmitResult.NotAdmitted:
|
|
33
|
+
return RequestResult.Rejected;
|
|
34
|
+
case SubmitResult.InvalidHandle:
|
|
35
|
+
case SubmitResult.InvalidArgument:
|
|
36
|
+
case SubmitResult.ThreadViolation:
|
|
37
|
+
return RequestResult.InvalidArgument;
|
|
38
|
+
case SubmitResult.InvalidState:
|
|
39
|
+
return RequestResult.InvalidState;
|
|
40
|
+
case SubmitResult.NotSupported:
|
|
41
|
+
return RequestResult.NotSupported;
|
|
42
|
+
case SubmitResult.Terminated:
|
|
43
|
+
return RequestResult.Terminated;
|
|
44
|
+
default:
|
|
45
|
+
return RequestResult.InternalError;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function classifySubmitResult(
|
|
50
|
+
result: number,
|
|
51
|
+
operation: string,
|
|
52
|
+
phase: 'submit' | 'completion' = 'completion'
|
|
53
|
+
): ZLinkSubmitResult {
|
|
54
|
+
const terminal = submitToRequestResult(result, phase);
|
|
55
|
+
switch (terminal) {
|
|
56
|
+
case RequestResult.Ok:
|
|
57
|
+
return { status: ZLinkSubmitStatus.Submitted };
|
|
58
|
+
case RequestResult.TimedOut:
|
|
59
|
+
return { status: ZLinkSubmitStatus.TimedOut };
|
|
60
|
+
case RequestResult.NotFound:
|
|
61
|
+
return { status: ZLinkSubmitStatus.TargetNotFound };
|
|
62
|
+
case RequestResult.NotConnected:
|
|
63
|
+
return { status: ZLinkSubmitStatus.RouteNotConnected };
|
|
64
|
+
case RequestResult.Terminated:
|
|
65
|
+
return { status: ZLinkSubmitStatus.Shutdown };
|
|
66
|
+
default:
|
|
67
|
+
throw new ZLinkFrameworkException(
|
|
68
|
+
requestResultToPublicErrorKind(terminal),
|
|
69
|
+
`${operation} failed with submit result ${result}.`
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
18
74
|
export function requireOneWayCompletion(
|
|
19
75
|
result: ZLinkSubmitResult,
|
|
20
76
|
operation: string,
|
|
@@ -4257,7 +4257,7 @@ function readChannelEntry(reader: Reader, context: ServiceWireDecoderContext, en
|
|
|
4257
4257
|
|
|
4258
4258
|
|
|
4259
4259
|
value["weight"] = readU32(reader, context, value, flags);
|
|
4260
|
-
if (numeric(value["weight"]) < 0n || numeric(value["weight"]) >
|
|
4260
|
+
if (numeric(value["weight"]) < 0n || numeric(value["weight"]) > 10000n) fail("weight constraint");
|
|
4261
4261
|
|
|
4262
4262
|
|
|
4263
4263
|
|
|
@@ -4273,7 +4273,7 @@ function writeChannelEntry(input: ChannelEntry, writer: Writer, context: Service
|
|
|
4273
4273
|
|
|
4274
4274
|
writeText8(value["channelName"], writer, context, value, flags);
|
|
4275
4275
|
if (value["weight"] === undefined) fail("weight required");
|
|
4276
|
-
if (numeric(value["weight"]) < 0n || numeric(value["weight"]) >
|
|
4276
|
+
if (numeric(value["weight"]) < 0n || numeric(value["weight"]) > 10000n) fail("weight constraint");
|
|
4277
4277
|
|
|
4278
4278
|
writeU32(value["weight"], writer, context, value, flags);
|
|
4279
4279
|
}
|
|
@@ -4451,7 +4451,7 @@ function readDescriptorExtension(reader: Reader, context: ServiceWireDecoderCont
|
|
|
4451
4451
|
item.done("objectRole"); break;
|
|
4452
4452
|
case 8:
|
|
4453
4453
|
if (value["placementWeight"] !== undefined) fail("descriptor-extension duplicate"); value["placementWeight"] = readU32(item, context, value, flags);
|
|
4454
|
-
if (numeric(value["placementWeight"]) < 0n || numeric(value["placementWeight"]) >
|
|
4454
|
+
if (numeric(value["placementWeight"]) < 0n || numeric(value["placementWeight"]) > 10000n) fail("placementWeight constraint");
|
|
4455
4455
|
|
|
4456
4456
|
item.done("placementWeight"); break;
|
|
4457
4457
|
case 9:
|
|
@@ -4526,7 +4526,7 @@ function writeDescriptorExtension(input: DescriptorExtension, writer: Writer, co
|
|
|
4526
4526
|
const item = new Writer(); writeObjectRole(value["objectRole"], item, context, value, flags); const itemBytes = item.result(); writeU8(7, body, context, value, flags); writeU32(itemBytes.length, body, context, value, flags); body.put(itemBytes);
|
|
4527
4527
|
}
|
|
4528
4528
|
if (value["placementWeight"] !== undefined) {
|
|
4529
|
-
if (numeric(value["placementWeight"]) < 0n || numeric(value["placementWeight"]) >
|
|
4529
|
+
if (numeric(value["placementWeight"]) < 0n || numeric(value["placementWeight"]) > 10000n) fail("placementWeight constraint");
|
|
4530
4530
|
|
|
4531
4531
|
const item = new Writer(); writeU32(value["placementWeight"], item, context, value, flags); const itemBytes = item.result(); writeU8(8, body, context, value, flags); writeU32(itemBytes.length, body, context, value, flags); body.put(itemBytes);
|
|
4532
4532
|
}
|
|
@@ -4660,7 +4660,7 @@ function readClientServerAdmission(reader: Reader, context: ServiceWireDecoderCo
|
|
|
4660
4660
|
|
|
4661
4661
|
|
|
4662
4662
|
value["weight"] = readU32(body, context, value, flags);
|
|
4663
|
-
if (numeric(value["weight"]) < 0n || numeric(value["weight"]) >
|
|
4663
|
+
if (numeric(value["weight"]) < 0n || numeric(value["weight"]) > 10000n) fail("weight constraint");
|
|
4664
4664
|
|
|
4665
4665
|
value["runtimeState"] = readRuntimeState(body, context, value, flags);
|
|
4666
4666
|
|
|
@@ -4726,7 +4726,7 @@ function writeClientServerAdmission(input: ClientServerAdmission, writer: Writer
|
|
|
4726
4726
|
|
|
4727
4727
|
writeNonzeroU64(numeric(value["descriptorRevision"]), body, context, value, flags);
|
|
4728
4728
|
if (value["weight"] === undefined) fail("weight required");
|
|
4729
|
-
if (numeric(value["weight"]) < 0n || numeric(value["weight"]) >
|
|
4729
|
+
if (numeric(value["weight"]) < 0n || numeric(value["weight"]) > 10000n) fail("weight constraint");
|
|
4730
4730
|
|
|
4731
4731
|
writeU32(value["weight"], body, context, value, flags);
|
|
4732
4732
|
if (value["runtimeState"] === undefined) fail("runtimeState required");
|
|
@@ -6376,7 +6376,7 @@ function writeFrozenRecord(input: FrozenRecord, writer: Writer, context: Service
|
|
|
6376
6376
|
export function decodeFrozenRecord(bytes: Uint8Array, context: ServiceWireDecoderContext): FrozenRecord { const reader = new Reader(bytes); const value = readFrozenRecord(reader, context, {}, 0); reader.done("frozen-record"); return value; }
|
|
6377
6377
|
export function encodeFrozenRecord(value: FrozenRecord, context: ServiceWireDecoderContext): Uint8Array { const writer = new Writer(); writeFrozenRecord(value, writer, context, {}, 0); return writer.result(); }
|
|
6378
6378
|
|
|
6379
|
-
export type InstanceRouteV1 = { readonly routeKind: "ready"; readonly targetNodeRid: Rid; readonly targetNodeGeneration: NonzeroU64; readonly targetSpotId: Text8; readonly authority: AuthorityGenerationFence } | { readonly routeKind: "coldActivation"; readonly targetNodeRid: Rid; readonly targetNodeGeneration: NonzeroU64; readonly targetSpotId: Text8; readonly targetMeshName: Text8; readonly stableType: Text8; readonly targetDescriptorVersion: Text8; readonly deadlineUnixMs: NonzeroU64 };
|
|
6379
|
+
export type InstanceRouteV1 = { readonly routeKind: "ready"; readonly targetNodeRid: Rid; readonly targetNodeGeneration: NonzeroU64; readonly targetSpotId: Text8; readonly authority: AuthorityGenerationFence; readonly instanceIntent: Bool8 } | { readonly routeKind: "coldActivation"; readonly targetNodeRid: Rid; readonly targetNodeGeneration: NonzeroU64; readonly targetSpotId: Text8; readonly targetMeshName: Text8; readonly stableType: Text8; readonly targetDescriptorVersion: Text8; readonly deadlineUnixMs: NonzeroU64 };
|
|
6380
6380
|
|
|
6381
6381
|
function readInstanceRouteV1(reader: Reader, context: ServiceWireDecoderContext, enclosing: any, flags: number): InstanceRouteV1 {
|
|
6382
6382
|
void context; void enclosing; void flags;
|
|
@@ -6396,6 +6396,9 @@ function readInstanceRouteV1(reader: Reader, context: ServiceWireDecoderContext,
|
|
|
6396
6396
|
value["authority"] = readAuthorityGenerationFence(body, context, value, flags);
|
|
6397
6397
|
|
|
6398
6398
|
|
|
6399
|
+
value["instanceIntent"] = readBool8(body, context, value, flags);
|
|
6400
|
+
|
|
6401
|
+
|
|
6399
6402
|
} else if (same(value["routeKind"], "coldActivation")) {
|
|
6400
6403
|
value["targetNodeRid"] = readRid(body, context, value, flags);
|
|
6401
6404
|
|
|
@@ -6441,6 +6444,9 @@ function* readIncrementalInstanceRouteV1(reader: IncrementalInput, context: Serv
|
|
|
6441
6444
|
value["authority"] = yield* readIncrementalAuthorityGenerationFence(body, context, value, flags);
|
|
6442
6445
|
|
|
6443
6446
|
|
|
6447
|
+
value["instanceIntent"] = yield* readIncrementalBool8(body, context, value, flags);
|
|
6448
|
+
|
|
6449
|
+
|
|
6444
6450
|
} else if (same(value["routeKind"], "coldActivation")) {
|
|
6445
6451
|
value["targetNodeRid"] = yield* readIncrementalRid(body, context, value, flags);
|
|
6446
6452
|
|
|
@@ -6491,8 +6497,12 @@ function writeInstanceRouteV1(input: InstanceRouteV1, writer: Writer, context: S
|
|
|
6491
6497
|
|
|
6492
6498
|
|
|
6493
6499
|
writeAuthorityGenerationFence(value["authority"], body, context, value, flags);
|
|
6500
|
+
if (value["instanceIntent"] === undefined) fail("instanceIntent required");
|
|
6501
|
+
|
|
6502
|
+
|
|
6503
|
+
writeBool8(value["instanceIntent"], body, context, value, flags);
|
|
6494
6504
|
} else if (same(value["routeKind"], "coldActivation")) {
|
|
6495
|
-
if (value["authority"] !== undefined) fail("instance-route-v1 discriminator agreement");
|
|
6505
|
+
if (value["authority"] !== undefined || value["instanceIntent"] !== undefined) fail("instance-route-v1 discriminator agreement");
|
|
6496
6506
|
if (value["targetNodeRid"] === undefined) fail("targetNodeRid required");
|
|
6497
6507
|
|
|
6498
6508
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// <auto-generated> DO NOT EDIT. schema-sha256:
|
|
1
|
+
// <auto-generated> DO NOT EDIT. schema-sha256: 77748ba8f585cb70ad337fa3203b5f9b9aa7a89e7f95f7fdc20159c30987be0f
|
|
2
2
|
export interface ServiceWireRouteFence { readonly id: string; readonly generation: bigint; readonly targetNodeRid: Uint8Array; readonly targetNodeGeneration: bigint; readonly expectedAuthorityOwnerGeneration: bigint; readonly expectedOwnerLeaseGeneration: bigint; }
|
|
3
3
|
export interface ApplicationPayloadEnvelopeV1 { readonly packetName: string; readonly contentType: string; readonly payload: Uint8Array; }
|
|
4
4
|
export interface ActorJoin28 { readonly correlation: bigint; readonly actor: ServiceWireRouteFence; readonly entry: boolean; readonly targetSpot: ServiceWireRouteFence; readonly payload?: ApplicationPayloadEnvelopeV1; }
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RoutingId, ZLinkActor } from '../../contracts';
|
|
2
|
-
import type { ZLinkDeferredJoinCompletion } from '../actors';
|
|
2
|
+
import type { ZLinkDeferredJoinCompletion, ZLinkRemoteBoundSessionTarget } from '../actors';
|
|
3
3
|
import type { ZLinkActorHandoffPacket } from '../actors/actor-handoff';
|
|
4
4
|
import { ZLinkStateLane } from '../execution/state-lane';
|
|
5
5
|
|
|
@@ -9,6 +9,8 @@ export interface ZLinkFormalRemoteActorTransfer {
|
|
|
9
9
|
readonly transferId: string;
|
|
10
10
|
readonly handoffBacklog: readonly ZLinkActorHandoffPacket[];
|
|
11
11
|
readonly deferredJoinCompletion?: ZLinkDeferredJoinCompletion;
|
|
12
|
+
/** The Session seal this relocation carries until it publishes command 44. */
|
|
13
|
+
readonly sealedSession?: ZLinkRemoteBoundSessionTarget;
|
|
12
14
|
readonly targetLifecycleCompleted: Promise<void>;
|
|
13
15
|
readonly sourceLeaveSubmitted: Promise<boolean>;
|
|
14
16
|
}
|
|
@@ -44,6 +46,7 @@ export class ZLinkFormalRemoteActorTransferRegistry {
|
|
|
44
46
|
readonly transferId: string;
|
|
45
47
|
readonly handoffBacklog: readonly ZLinkActorHandoffPacket[];
|
|
46
48
|
readonly deferredJoinCompletion?: ZLinkDeferredJoinCompletion;
|
|
49
|
+
readonly sealedSession?: ZLinkRemoteBoundSessionTarget;
|
|
47
50
|
}): ZLinkFormalRemoteActorTransfer {
|
|
48
51
|
const existingByActor = this.transfers.get(input.actor.context.actorId)?.transfer;
|
|
49
52
|
if (existingByActor !== undefined) {
|