@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
|
@@ -108,7 +108,7 @@ export type ServiceWireRelocationObject = {
|
|
|
108
108
|
/** Shared CRC-32C wire bounds for the direct relocation payload transfer. */
|
|
109
109
|
export declare const RELOCATION_PAYLOAD_TOTAL_LENGTH_MAX = 274877906944n;
|
|
110
110
|
export declare const RELOCATION_PAYLOAD_CHUNK_COUNT_MAX = 4096;
|
|
111
|
-
export
|
|
111
|
+
export { RELOCATION_STATE_CHUNK_DATA_MAX_BYTES } from '../../contracts/Configuration/InternalDefaults';
|
|
112
112
|
interface ServiceWireRelocationBase {
|
|
113
113
|
readonly relocation: ServiceWireOperationId;
|
|
114
114
|
readonly targetAttemptGeneration: bigint;
|
|
@@ -463,6 +463,7 @@ export type ServiceStatefulWireRecord = {
|
|
|
463
463
|
} | {
|
|
464
464
|
readonly kind: 'instanceSpot';
|
|
465
465
|
readonly activation: 'ready';
|
|
466
|
+
readonly instanceIntent: boolean;
|
|
466
467
|
readonly route: ServiceInstanceRouteFence;
|
|
467
468
|
readonly sourceNodeGeneration: bigint;
|
|
468
469
|
readonly sourceNodeRid: string;
|
|
@@ -549,7 +550,7 @@ export declare function decodeSessionRelocationRoute(frame: Uint8Array): Service
|
|
|
549
550
|
export declare function encodeInstanceSpotHeader(route: ServiceInstanceRouteFence, sourceNodeGeneration: bigint, sourceNodeRid: string, sourceSpotId: string | undefined, operationKind: 'send' | 'request', operation: {
|
|
550
551
|
readonly high: bigint;
|
|
551
552
|
readonly low: bigint;
|
|
552
|
-
}, replyRouteId?: bigint, hasMetadata?: boolean): Buffer;
|
|
553
|
+
}, replyRouteId?: bigint, hasMetadata?: boolean, instanceIntent?: boolean): Buffer;
|
|
553
554
|
export declare function encodeInstanceSpotActivationHeader(target: ServiceInstanceActivationTarget, sourceNodeGeneration: bigint, sourceNodeRid: string, sourceSpotId: string | undefined, operationKind: 'send' | 'request', operation: {
|
|
554
555
|
readonly high: bigint;
|
|
555
556
|
readonly low: bigint;
|
|
@@ -599,4 +600,3 @@ export declare function encodeServiceWireFrozenActorApplicationRecord(input: {
|
|
|
599
600
|
readonly replyRouteId?: bigint;
|
|
600
601
|
readonly payload: NonNullable<ServiceMaintenanceReplyRelay['payload']>;
|
|
601
602
|
}): ServiceWireFrozenRecord;
|
|
602
|
-
export {};
|
|
@@ -36,15 +36,21 @@ exports.decodeServiceWireFrozenRecord = decodeServiceWireFrozenRecord;
|
|
|
36
36
|
exports.decodeServiceWireFrozenRecordPrefix = decodeServiceWireFrozenRecordPrefix;
|
|
37
37
|
exports.encodeServiceWireFrozenRecord = encodeServiceWireFrozenRecord;
|
|
38
38
|
exports.encodeServiceWireFrozenActorApplicationRecord = encodeServiceWireFrozenActorApplicationRecord;
|
|
39
|
-
const
|
|
40
|
-
const
|
|
39
|
+
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
40
|
+
const InternalDefaults_1 = require("../../contracts/Configuration/InternalDefaults");
|
|
41
41
|
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
42
|
-
const routing_id_1 = require("../routing-id");
|
|
43
|
-
const service_wire_constants_generated_1 = require("./service-wire-constants.generated");
|
|
44
|
-
const service_wire_binary_primitives_1 = require("./service-wire-binary-primitives");
|
|
45
42
|
const service_wire_codec_generated_1 = require("../protocol/service_wire_codec.generated");
|
|
46
43
|
const service_wire_pilot_codec_generated_1 = require("../protocol/service_wire_pilot_codec.generated");
|
|
47
|
-
const
|
|
44
|
+
const routing_id_1 = require("../routing-id");
|
|
45
|
+
const service_runtime_contracts_1 = require("./service-runtime-contracts");
|
|
46
|
+
const service_wire_binary_primitives_1 = require("./service-wire-binary-primitives");
|
|
47
|
+
const service_wire_constants_generated_1 = require("./service-wire-constants.generated");
|
|
48
|
+
const service_wire_m6a_codec_1 = require("./service-wire-m6a-codec");
|
|
49
|
+
const MESSAGE_FOLLOW_MAX_BODY_BYTES = 16 * 1024 * 1024;
|
|
50
|
+
const MESSAGE_FOLLOW_VERSION = 1;
|
|
51
|
+
const INSTANCE_ROUTE_VERSION = 1;
|
|
52
|
+
const INSTANCE_ACTIVATION_VERSION = 2;
|
|
53
|
+
const PREFIX_SIZE = service_wire_binary_primitives_1.SERVICE_WIRE_PREFIX_SIZE;
|
|
48
54
|
const MAGIC_0 = service_wire_constants_generated_1.SERVICE_WIRE_MAGIC[0];
|
|
49
55
|
const MAGIC_1 = service_wire_constants_generated_1.SERVICE_WIRE_MAGIC[1];
|
|
50
56
|
const MAJOR = service_wire_constants_generated_1.SERVICE_WIRE_MAJOR;
|
|
@@ -52,7 +58,8 @@ exports.M6bServiceWireCommand = service_wire_constants_generated_1.ServiceWireCo
|
|
|
52
58
|
/** Shared CRC-32C wire bounds for the direct relocation payload transfer. */
|
|
53
59
|
exports.RELOCATION_PAYLOAD_TOTAL_LENGTH_MAX = 274877906944n;
|
|
54
60
|
exports.RELOCATION_PAYLOAD_CHUNK_COUNT_MAX = 4096;
|
|
55
|
-
|
|
61
|
+
var InternalDefaults_2 = require("../../contracts/Configuration/InternalDefaults");
|
|
62
|
+
Object.defineProperty(exports, "RELOCATION_STATE_CHUNK_DATA_MAX_BYTES", { enumerable: true, get: function () { return InternalDefaults_2.RELOCATION_STATE_CHUNK_DATA_MAX_BYTES; } });
|
|
56
63
|
exports.M6bServiceWireFlag = service_wire_constants_generated_1.ServiceWireFlag;
|
|
57
64
|
function serviceSessionRelocationIdentityKey(value) {
|
|
58
65
|
const actor = 'targetNodeGeneration' in value.actor ? value.actor.actor : value.actor;
|
|
@@ -498,7 +505,7 @@ const STATEFUL_MESSAGE_CONTEXT = {
|
|
|
498
505
|
};
|
|
499
506
|
const STATEFUL_HEADER_PAYLOAD = {
|
|
500
507
|
packetName: 'wire',
|
|
501
|
-
contentType:
|
|
508
|
+
contentType: stream_wire_1.ZlinkStreamContentType.Json,
|
|
502
509
|
payload: Buffer.from('{}')
|
|
503
510
|
};
|
|
504
511
|
function generatedSpotFence(target) {
|
|
@@ -615,8 +622,21 @@ function encodeSessionRelocationRoute(value) {
|
|
|
615
622
|
function decodeSessionRelocationRoute(frame) {
|
|
616
623
|
return fromGeneratedSessionRelocationRoute((0, service_wire_pilot_codec_generated_1.decodeSessionRelocationRoute44)(frame));
|
|
617
624
|
}
|
|
618
|
-
function encodeInstanceSpotHeader(route, sourceNodeGeneration, sourceNodeRid, sourceSpotId, operationKind, operation, replyRouteId, hasMetadata = false) {
|
|
619
|
-
const
|
|
625
|
+
function encodeInstanceSpotHeader(route, sourceNodeGeneration, sourceNodeRid, sourceSpotId, operationKind, operation, replyRouteId, hasMetadata = false, instanceIntent = false) {
|
|
626
|
+
const encodedRoute = (0, service_wire_codec_generated_1.encodeInstanceRouteV1)({
|
|
627
|
+
routeKind: 'ready',
|
|
628
|
+
targetNodeRid: toGeneratedRoutingId(route.targetNodeRid, 'targetNodeRid'),
|
|
629
|
+
targetNodeGeneration: route.targetNodeGeneration,
|
|
630
|
+
targetSpotId: route.targetSpotId,
|
|
631
|
+
authority: {
|
|
632
|
+
objectGeneration: route.objectGeneration,
|
|
633
|
+
ownerId: route.ownerId,
|
|
634
|
+
authorityOwnerGeneration: route.authorityOwnerGeneration,
|
|
635
|
+
leaseGeneration: route.leaseGeneration,
|
|
636
|
+
storeVersion: route.storeVersion
|
|
637
|
+
},
|
|
638
|
+
instanceIntent: instanceIntent ? 'true' : 'false'
|
|
639
|
+
}, STATEFUL_MESSAGE_CONTEXT);
|
|
620
640
|
if (operationKind === 'send' &&
|
|
621
641
|
(operation.high !== 0n || operation.low !== 0n || replyRouteId !== undefined)) {
|
|
622
642
|
throw new RangeError('Instance Spot send must not carry an operation or reply route.');
|
|
@@ -624,7 +644,7 @@ function encodeInstanceSpotHeader(route, sourceNodeGeneration, sourceNodeRid, so
|
|
|
624
644
|
if (operationKind === 'request' && operation.high === 0n && operation.low === 0n) {
|
|
625
645
|
throw new RangeError('Instance Spot request requires a non-zero operation.');
|
|
626
646
|
}
|
|
627
|
-
return concat(prefix(exports.M6bServiceWireCommand.instanceSpot, hasMetadata ? exports.M6bServiceWireFlag.metadata : 0),
|
|
647
|
+
return concat(prefix(exports.M6bServiceWireCommand.instanceSpot, hasMetadata ? exports.M6bServiceWireFlag.metadata : 0), encodedRoute, u64Any(sourceNodeGeneration), rid(sourceNodeRid, 'sourceNodeRid'), optionalRid(sourceSpotId), Buffer.of(operationKind === 'send' ? 1 : 2), u64Any(operation.high), u64Any(operation.low), ...(operationKind === 'request' ? [u64(requirePositive(replyRouteId, 'replyRouteId'))] : []));
|
|
628
648
|
}
|
|
629
649
|
function encodeInstanceSpotActivationHeader(target, sourceNodeGeneration, sourceNodeRid, sourceSpotId, operationKind, operation, deadlineUnixMs, replyRouteId, hasMetadata = false) {
|
|
630
650
|
if (operation.high === 0n && operation.low === 0n) {
|
|
@@ -637,7 +657,7 @@ function encodeInstanceSpotActivationHeader(target, sourceNodeGeneration, source
|
|
|
637
657
|
throw new RangeError('Instance Spot send must not carry a reply route.');
|
|
638
658
|
}
|
|
639
659
|
const targetBody = concat(rid(target.targetNodeRid, 'targetNodeRid'), u64(target.targetNodeGeneration), rid(target.targetSpotId, 'targetSpotId'), text16(target.stableType, 'stableType'), text16(target.descriptorVersion, 'descriptorVersion'));
|
|
640
|
-
return concat(prefix(exports.M6bServiceWireCommand.instanceSpot, hasMetadata ? exports.M6bServiceWireFlag.metadata : 0), Buffer.of(
|
|
660
|
+
return concat(prefix(exports.M6bServiceWireCommand.instanceSpot, hasMetadata ? exports.M6bServiceWireFlag.metadata : 0), Buffer.of(INSTANCE_ACTIVATION_VERSION), u16(targetBody.byteLength), targetBody, u64Any(sourceNodeGeneration), rid(sourceNodeRid, 'sourceNodeRid'), optionalRid(sourceSpotId), Buffer.of(operationKind === 'send' ? 1 : 2), u64Any(operation.high), u64Any(operation.low), u64(deadlineUnixMs), ...(operationKind === 'request' ? [u64(requirePositive(replyRouteId, 'replyRouteId'))] : []));
|
|
641
661
|
}
|
|
642
662
|
function encodeUserSpotCreateHeader(record) {
|
|
643
663
|
return Buffer.from((0, service_wire_pilot_codec_generated_1.encodeUserSpotCreate47)(toGeneratedUserSpotCreate(record)));
|
|
@@ -651,10 +671,10 @@ function encodeUserSpotCloseHeader(record) {
|
|
|
651
671
|
function encodeMessageFollowHeader(record) {
|
|
652
672
|
validateMessageFollowRecord(record);
|
|
653
673
|
const body = concat(messageFollowRoute(record.source), messageFollowRoute(record.target), Buffer.of(record.hopCount), u32(record.queuedMessages, 'queuedMessages'), u32(record.queuedBytes, 'queuedBytes'), u64Any(record.originalOperation.high), u64Any(record.originalOperation.low), u64Any(record.originalReplyRouteId));
|
|
654
|
-
if (body.byteLength >
|
|
655
|
-
throw new RangeError(
|
|
674
|
+
if (body.byteLength > MESSAGE_FOLLOW_MAX_BODY_BYTES) {
|
|
675
|
+
throw new RangeError(`Message Follow body exceeds ${MESSAGE_FOLLOW_MAX_BODY_BYTES / (1024 * 1024)} MiB.`);
|
|
656
676
|
}
|
|
657
|
-
return concat(prefix(exports.M6bServiceWireCommand.messageFollow), Buffer.of(
|
|
677
|
+
return concat(prefix(exports.M6bServiceWireCommand.messageFollow), Buffer.of(MESSAGE_FOLLOW_VERSION), u32(body.byteLength, 'messageFollow.length'), body);
|
|
658
678
|
}
|
|
659
679
|
function decodeStatefulHeader(frame, payloadFrame, metadataFrame) {
|
|
660
680
|
switch (frame[3]) {
|
|
@@ -860,33 +880,44 @@ function decodeStatefulHeader(frame, payloadFrame, metadataFrame) {
|
|
|
860
880
|
if ((command.flags & ~exports.M6bServiceWireFlag.metadata) !== 0) {
|
|
861
881
|
fail(`Invalid command flags '${command.flags}'.`);
|
|
862
882
|
}
|
|
883
|
+
const routeStart = reader.offset;
|
|
863
884
|
const version = reader.u8('instanceRoute.version');
|
|
864
|
-
if (version !==
|
|
885
|
+
if (version !== INSTANCE_ROUTE_VERSION && version !== INSTANCE_ACTIVATION_VERSION)
|
|
865
886
|
fail('Unsupported Instance route version.');
|
|
866
887
|
const routeLength = reader.u16('instanceRoute.length');
|
|
867
888
|
const routeEnd = reader.offset + routeLength;
|
|
868
|
-
const
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
889
|
+
const generatedReadyRoute = version === INSTANCE_ROUTE_VERSION
|
|
890
|
+
? (0, service_wire_codec_generated_1.decodeInstanceRouteV1)(reader.bytes.subarray(routeStart, routeEnd), STATEFUL_MESSAGE_CONTEXT)
|
|
891
|
+
: undefined;
|
|
892
|
+
if (generatedReadyRoute !== undefined && generatedReadyRoute.routeKind !== 'ready') {
|
|
893
|
+
fail('Invalid Ready Instance route kind.');
|
|
894
|
+
}
|
|
895
|
+
const commonTarget = generatedReadyRoute?.routeKind === 'ready'
|
|
896
|
+
? {
|
|
897
|
+
targetNodeRid: fromGeneratedRoutingId(generatedReadyRoute.targetNodeRid, 'targetNodeRid'),
|
|
898
|
+
targetNodeGeneration: generatedReadyRoute.targetNodeGeneration,
|
|
899
|
+
targetSpotId: generatedReadyRoute.targetSpotId
|
|
900
|
+
}
|
|
901
|
+
: {
|
|
902
|
+
targetNodeRid: reader.rid('targetNodeRid'),
|
|
903
|
+
targetNodeGeneration: reader.nonZeroU64('targetNodeGeneration'),
|
|
904
|
+
targetSpotId: reader.rid('targetSpotId')
|
|
905
|
+
};
|
|
906
|
+
const route = generatedReadyRoute?.routeKind === 'ready'
|
|
874
907
|
? {
|
|
875
908
|
...commonTarget,
|
|
876
|
-
|
|
877
|
-
ownerId: reader.text8('ownerId'),
|
|
878
|
-
authorityOwnerGeneration: reader.nonZeroU64('authorityOwnerGeneration'),
|
|
879
|
-
leaseGeneration: reader.nonZeroU64('leaseGeneration'),
|
|
880
|
-
storeVersion: reader.text16('storeVersion')
|
|
909
|
+
...generatedReadyRoute.authority
|
|
881
910
|
}
|
|
882
911
|
: undefined;
|
|
883
|
-
const target = version ===
|
|
912
|
+
const target = version === INSTANCE_ACTIVATION_VERSION
|
|
884
913
|
? {
|
|
885
914
|
...commonTarget,
|
|
886
915
|
stableType: reader.text16('stableType'),
|
|
887
916
|
descriptorVersion: reader.text16('descriptorVersion')
|
|
888
917
|
}
|
|
889
918
|
: undefined;
|
|
919
|
+
if (generatedReadyRoute !== undefined)
|
|
920
|
+
reader.offset = routeEnd;
|
|
890
921
|
if (reader.offset !== routeEnd)
|
|
891
922
|
fail('Invalid Instance route body length.');
|
|
892
923
|
const sourceNodeGeneration = reader.nonZeroU64('sourceNodeGeneration');
|
|
@@ -900,15 +931,17 @@ function decodeStatefulHeader(frame, payloadFrame, metadataFrame) {
|
|
|
900
931
|
low: reader.u64('operation.low')
|
|
901
932
|
};
|
|
902
933
|
const operationKind = operationValue === 1 ? 'send' : 'request';
|
|
903
|
-
if (version ===
|
|
934
|
+
if (version === INSTANCE_ROUTE_VERSION &&
|
|
904
935
|
((operationKind === 'send' && (operation.high !== 0n || operation.low !== 0n)) ||
|
|
905
936
|
(operationKind === 'request' && operation.high === 0n && operation.low === 0n))) {
|
|
906
937
|
fail('Invalid Instance operation identity.');
|
|
907
938
|
}
|
|
908
|
-
if (version ===
|
|
939
|
+
if (version === INSTANCE_ACTIVATION_VERSION &&
|
|
940
|
+
operation.high === 0n &&
|
|
941
|
+
operation.low === 0n) {
|
|
909
942
|
fail('Instance activation requires a non-zero operation identity.');
|
|
910
943
|
}
|
|
911
|
-
const deadlineUnixMs = version ===
|
|
944
|
+
const deadlineUnixMs = version === INSTANCE_ACTIVATION_VERSION ? reader.nonZeroU64('deadlineUnixMs') : undefined;
|
|
912
945
|
const replyRouteId = operationKind === 'request' ? reader.nonZeroU64('replyRouteId') : undefined;
|
|
913
946
|
reader.end();
|
|
914
947
|
const common = {
|
|
@@ -920,8 +953,13 @@ function decodeStatefulHeader(frame, payloadFrame, metadataFrame) {
|
|
|
920
953
|
operation,
|
|
921
954
|
...(replyRouteId === undefined ? {} : { replyRouteId })
|
|
922
955
|
};
|
|
923
|
-
return version ===
|
|
924
|
-
? {
|
|
956
|
+
return version === INSTANCE_ROUTE_VERSION
|
|
957
|
+
? {
|
|
958
|
+
...common,
|
|
959
|
+
activation: 'ready',
|
|
960
|
+
route: route,
|
|
961
|
+
instanceIntent: generatedReadyRoute.instanceIntent === 'true'
|
|
962
|
+
}
|
|
925
963
|
: {
|
|
926
964
|
...common,
|
|
927
965
|
activation: 'missing',
|
|
@@ -931,12 +969,12 @@ function decodeStatefulHeader(frame, payloadFrame, metadataFrame) {
|
|
|
931
969
|
}
|
|
932
970
|
case exports.M6bServiceWireCommand.messageFollow: {
|
|
933
971
|
requireFlags(command.flags, 0);
|
|
934
|
-
if (reader.u8('messageFollow.version') !==
|
|
972
|
+
if (reader.u8('messageFollow.version') !== MESSAGE_FOLLOW_VERSION) {
|
|
935
973
|
fail('Unsupported Message Follow version.');
|
|
936
974
|
}
|
|
937
975
|
const length = reader.u32('messageFollow.length');
|
|
938
976
|
const end = reader.offset + length;
|
|
939
|
-
if (length >
|
|
977
|
+
if (length > MESSAGE_FOLLOW_MAX_BODY_BYTES || end > reader.bytes.byteLength) {
|
|
940
978
|
fail('Invalid Message Follow body length.');
|
|
941
979
|
}
|
|
942
980
|
const record = {
|
|
@@ -1110,7 +1148,7 @@ function decodeStatefulReply(frame, expectedCorrelation, operationKind, hasPaylo
|
|
|
1110
1148
|
? 0
|
|
1111
1149
|
: (() => {
|
|
1112
1150
|
const value = reader.u32('receiveChunkLimitBytes');
|
|
1113
|
-
if (value >
|
|
1151
|
+
if (value > InternalDefaults_1.RELOCATION_STATE_CHUNK_DATA_MAX_BYTES) {
|
|
1114
1152
|
fail('receiveChunkLimitBytes exceeds the relocation state chunk data bound.');
|
|
1115
1153
|
}
|
|
1116
1154
|
return value;
|
|
@@ -1214,7 +1252,7 @@ function encodeReplyTail(tail) {
|
|
|
1214
1252
|
}
|
|
1215
1253
|
const receiveChunkLimitBytes = tail.receiveChunkLimitBytes ?? 0;
|
|
1216
1254
|
if (receiveChunkLimitBytes < 0 ||
|
|
1217
|
-
receiveChunkLimitBytes >
|
|
1255
|
+
receiveChunkLimitBytes > InternalDefaults_1.RELOCATION_STATE_CHUNK_DATA_MAX_BYTES) {
|
|
1218
1256
|
fail('receiveChunkLimitBytes exceeds the relocation state chunk data bound.');
|
|
1219
1257
|
}
|
|
1220
1258
|
const body = concat(spotRef(tail.spot), u64(tail.membershipEpoch), u32(receiveChunkLimitBytes, 'receiveChunkLimitBytes'));
|
|
@@ -1275,7 +1313,7 @@ function validateRelocationPhase(value) {
|
|
|
1275
1313
|
}
|
|
1276
1314
|
function applicationPayload(value) {
|
|
1277
1315
|
const body = concat(text8(value.packetName, 'packetName'), text8(value.contentType, 'contentType'), u32(value.bytes.byteLength, 'payload.length'), value.bytes);
|
|
1278
|
-
return concat(Buffer.of(
|
|
1316
|
+
return concat(Buffer.of(service_wire_m6a_codec_1.APPLICATION_PAYLOAD_VERSION), u32(body.byteLength, 'applicationPayload.length'), body);
|
|
1279
1317
|
}
|
|
1280
1318
|
function prefix(command, flags = 0) {
|
|
1281
1319
|
return Buffer.from([MAGIC_0, MAGIC_1, MAJOR, command, flags]);
|
|
@@ -1323,7 +1361,7 @@ function validateMessageFollowRecord(value, invalid = (message) => {
|
|
|
1323
1361
|
if (value.originalOperation.high === 0n && value.originalOperation.low === 0n) {
|
|
1324
1362
|
invalid('Message Follow originalOperation must not be zero.');
|
|
1325
1363
|
}
|
|
1326
|
-
if (value.originalReplyRouteId < 0n || value.originalReplyRouteId >
|
|
1364
|
+
if (value.originalReplyRouteId < 0n || value.originalReplyRouteId > stream_wire_1.UINT64_MAX) {
|
|
1327
1365
|
invalid('Message Follow originalReplyRouteId must be a u64.');
|
|
1328
1366
|
}
|
|
1329
1367
|
}
|
|
@@ -1373,7 +1411,7 @@ function u64(value) {
|
|
|
1373
1411
|
return result;
|
|
1374
1412
|
}
|
|
1375
1413
|
function u64Any(value) {
|
|
1376
|
-
if (value < 0n || value >
|
|
1414
|
+
if (value < 0n || value > stream_wire_1.UINT64_MAX) {
|
|
1377
1415
|
throw new RangeError('u64 value is out of range.');
|
|
1378
1416
|
}
|
|
1379
1417
|
const result = Buffer.alloc(8);
|
|
@@ -1381,7 +1419,7 @@ function u64Any(value) {
|
|
|
1381
1419
|
return result;
|
|
1382
1420
|
}
|
|
1383
1421
|
function requirePositive(value, name) {
|
|
1384
|
-
if (value === undefined || value < 1n || value >
|
|
1422
|
+
if (value === undefined || value < 1n || value > stream_wire_1.UINT64_MAX) {
|
|
1385
1423
|
throw new RangeError(`${name} must be a non-zero u64.`);
|
|
1386
1424
|
}
|
|
1387
1425
|
return value;
|
|
@@ -1828,7 +1866,7 @@ class FrozenReader {
|
|
|
1828
1866
|
return new FrozenReader(body);
|
|
1829
1867
|
}
|
|
1830
1868
|
applicationPayload() {
|
|
1831
|
-
if (this.u8('applicationPayload.version') !==
|
|
1869
|
+
if (this.u8('applicationPayload.version') !== service_wire_m6a_codec_1.APPLICATION_PAYLOAD_VERSION) {
|
|
1832
1870
|
fail('Application payload envelope version must be one.');
|
|
1833
1871
|
}
|
|
1834
1872
|
const body = this.body32('application payload');
|
|
@@ -1992,26 +2030,22 @@ class FrozenReader {
|
|
|
1992
2030
|
body.end('send-ready destination');
|
|
1993
2031
|
}
|
|
1994
2032
|
instanceRoute() {
|
|
2033
|
+
const start = this.offset;
|
|
1995
2034
|
const kind = this.u8('instanceRouteKind');
|
|
1996
2035
|
if (kind < 1 || kind > 2)
|
|
1997
2036
|
fail('Invalid Instance route kind.');
|
|
1998
2037
|
const body = this.body16('Instance route');
|
|
2038
|
+
if (kind === INSTANCE_ROUTE_VERSION) {
|
|
2039
|
+
(0, service_wire_codec_generated_1.decodeInstanceRouteV1)(this.bytes.subarray(start, this.offset), STATEFUL_MESSAGE_CONTEXT);
|
|
2040
|
+
return;
|
|
2041
|
+
}
|
|
1999
2042
|
body.rid8('targetNodeRid');
|
|
2000
2043
|
body.nonZeroU64('targetNodeGeneration');
|
|
2001
2044
|
body.text8('targetSpotId');
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
body.nonZeroU64('leaseGeneration');
|
|
2007
|
-
body.text16('storeVersion');
|
|
2008
|
-
}
|
|
2009
|
-
else {
|
|
2010
|
-
body.text8('targetMeshName');
|
|
2011
|
-
body.text8('stableType');
|
|
2012
|
-
body.text8('targetDescriptorVersion');
|
|
2013
|
-
body.nonZeroU64('deadlineUnixMs');
|
|
2014
|
-
}
|
|
2045
|
+
body.text8('targetMeshName');
|
|
2046
|
+
body.text8('stableType');
|
|
2047
|
+
body.text8('targetDescriptorVersion');
|
|
2048
|
+
body.nonZeroU64('deadlineUnixMs');
|
|
2015
2049
|
body.end('Instance route');
|
|
2016
2050
|
}
|
|
2017
2051
|
relocationObject() {
|
|
@@ -51,7 +51,6 @@ export declare class ServiceTopologyRegistry {
|
|
|
51
51
|
private peersCore;
|
|
52
52
|
notRequiredPeers(): readonly ServiceNodeDescriptor[];
|
|
53
53
|
replaceDiscoveredNotRequired(descriptors: readonly ServiceNodeDescriptor[]): void;
|
|
54
|
-
markNotRequired(descriptor: ServiceNodeDescriptor): void;
|
|
55
54
|
forgetNotRequired(nodeRoutingId: string): void;
|
|
56
55
|
knownDescriptor(nodeRoutingId: string): ServiceNodeDescriptor | undefined;
|
|
57
56
|
hasKnownChannelTarget(channelName: string): boolean;
|
|
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ServiceTopologyRegistry = void 0;
|
|
4
4
|
exports.validateDescriptor = validateDescriptor;
|
|
5
5
|
exports.sameServiceNodeDescriptor = sameServiceNodeDescriptor;
|
|
6
|
+
const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
|
|
7
|
+
const RegistrationBuilderPolicy_1 = require("../../contracts/Configuration/RegistrationBuilderPolicy");
|
|
6
8
|
const route_mesh_connection_policy_1 = require("./route-mesh-connection-policy");
|
|
7
9
|
const service_weighted_selection_1 = require("./service-weighted-selection");
|
|
8
10
|
const service_wire_constants_generated_1 = require("./service-wire-constants.generated");
|
|
9
11
|
const REQUIRED_CAPABILITY = service_wire_constants_generated_1.SERVICE_WIRE_REQUIRED_CAPABILITY;
|
|
10
|
-
const MAX_CAPACITY = 0x7fff_ffff;
|
|
11
|
-
const MAX_PUBLIC_WEIGHT = 10_000;
|
|
12
12
|
/** Owns immutable peer snapshots and fences late physical-connection events. */
|
|
13
13
|
class ServiceTopologyRegistry {
|
|
14
14
|
local;
|
|
@@ -134,18 +134,6 @@ class ServiceTopologyRegistry {
|
|
|
134
134
|
}
|
|
135
135
|
this.rebuildSelections();
|
|
136
136
|
}
|
|
137
|
-
markNotRequired(descriptor) {
|
|
138
|
-
validateDescriptor(descriptor);
|
|
139
|
-
if (descriptor.meshName !== this.local.meshName ||
|
|
140
|
-
descriptor.nodeRoutingId === this.local.nodeRoutingId ||
|
|
141
|
-
!(0, route_mesh_connection_policy_1.descriptorConnectionNotRequired)(this.local, descriptor)) {
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
this.peersByRid.delete(descriptor.nodeRoutingId);
|
|
145
|
-
this.remember(descriptor);
|
|
146
|
-
this.notRequiredByRid.set(descriptor.nodeRoutingId, cloneDescriptor(descriptor));
|
|
147
|
-
this.rebuildSelections();
|
|
148
|
-
}
|
|
149
137
|
forgetNotRequired(nodeRoutingId) {
|
|
150
138
|
if (this.notRequiredByRid.delete(nodeRoutingId))
|
|
151
139
|
this.rebuildSelections();
|
|
@@ -157,7 +145,10 @@ class ServiceTopologyRegistry {
|
|
|
157
145
|
}
|
|
158
146
|
hasKnownChannelTarget(channelName) {
|
|
159
147
|
requireText(channelName, 'channelName');
|
|
160
|
-
return [
|
|
148
|
+
return [...this.knownByRid.values()].some((descriptor) => (descriptor.state === 'serving' ||
|
|
149
|
+
descriptor.state === 'retiring' ||
|
|
150
|
+
descriptor.state === 'draining') &&
|
|
151
|
+
findChannel(descriptor, channelName) !== undefined);
|
|
161
152
|
}
|
|
162
153
|
remember(descriptor) {
|
|
163
154
|
const current = this.knownByRid.get(descriptor.nodeRoutingId);
|
|
@@ -170,18 +161,12 @@ class ServiceTopologyRegistry {
|
|
|
170
161
|
}
|
|
171
162
|
selectChannel(channelName, isReady = () => true) {
|
|
172
163
|
requireText(channelName, 'channelName');
|
|
173
|
-
return this.selectWeightedCycle(`channel:${channelName}`, () =>
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
.map((peer) => ({
|
|
180
|
-
peer: clonePeer(peer),
|
|
181
|
-
channel: selectableChannel(peer.descriptor, channelName)
|
|
182
|
-
}))
|
|
183
|
-
.filter((value) => value.channel !== undefined);
|
|
184
|
-
}, (value) => value.channel.weight, (value) => value.peer.descriptor.nodeRoutingId, (left, right) => compareOrdinal(left.peer.descriptor.nodeRoutingId, right.peer.descriptor.nodeRoutingId), (value) => isReady(value.peer))?.peer;
|
|
164
|
+
return this.selectWeightedCycle(`channel:${channelName}`, () => [...this.peersByRid.values()]
|
|
165
|
+
.map((peer) => ({
|
|
166
|
+
peer: clonePeer(peer),
|
|
167
|
+
channel: selectableChannel(peer.descriptor, channelName)
|
|
168
|
+
}))
|
|
169
|
+
.filter((value) => value.channel !== undefined), (value) => value.channel.weight, (value) => value.peer.descriptor.nodeRoutingId, (left, right) => compareOrdinal(left.peer.descriptor.nodeRoutingId, right.peer.descriptor.nodeRoutingId), (value) => isReady(value.peer))?.peer;
|
|
185
170
|
}
|
|
186
171
|
selectPlacement(isReady = () => true) {
|
|
187
172
|
return this.selectWeightedCycle('placement', () => [...this.peersByRid.values()]
|
|
@@ -275,8 +260,8 @@ function validateDescriptor(descriptor) {
|
|
|
275
260
|
}
|
|
276
261
|
if (descriptor.maintenanceWave !== undefined) {
|
|
277
262
|
requireText(descriptor.maintenanceWave, 'maintenanceWave');
|
|
278
|
-
if (Buffer.byteLength(descriptor.maintenanceWave, 'utf8') >
|
|
279
|
-
throw new RangeError(
|
|
263
|
+
if (Buffer.byteLength(descriptor.maintenanceWave, 'utf8') > CoreTypes_1.ZLINK_MAX_IDENTITY_TEXT_BYTES) {
|
|
264
|
+
throw new RangeError(`maintenanceWave must not exceed ${CoreTypes_1.ZLINK_MAX_IDENTITY_TEXT_BYTES} UTF-8 bytes.`);
|
|
280
265
|
}
|
|
281
266
|
}
|
|
282
267
|
validatePublicWeight(descriptor.placementWeight, 'placementWeight');
|
|
@@ -302,13 +287,13 @@ function validateDescriptor(descriptor) {
|
|
|
302
287
|
}
|
|
303
288
|
}
|
|
304
289
|
function validateCapacity(value, allowZero, field) {
|
|
305
|
-
if (!
|
|
290
|
+
if (!(allowZero ? (0, RegistrationBuilderPolicy_1.isValidCapacity)(value) : (0, RegistrationBuilderPolicy_1.isValidPositiveCapacity)(value))) {
|
|
306
291
|
throw new RangeError(`${field} is outside its supported range.`);
|
|
307
292
|
}
|
|
308
293
|
}
|
|
309
294
|
function validatePublicWeight(value, field) {
|
|
310
|
-
if (!
|
|
311
|
-
throw new RangeError(`${field} must be an integer in 0
|
|
295
|
+
if (!(0, RegistrationBuilderPolicy_1.isValidPublicWeight)(value)) {
|
|
296
|
+
throw new RangeError(`${field} must be an integer in 0..${RegistrationBuilderPolicy_1.ZLINK_MAX_PUBLIC_WEIGHT}.`);
|
|
312
297
|
}
|
|
313
298
|
}
|
|
314
299
|
function validateSortedUnique(values, key, field) {
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import type { RoutingId } from '../../contracts';
|
|
2
|
+
export declare const SERVICE_WIRE_MAJOR_OFFSET = 2;
|
|
3
|
+
export declare const SERVICE_WIRE_COMMAND_OFFSET: number;
|
|
4
|
+
export declare const SERVICE_WIRE_FLAGS_OFFSET: number;
|
|
5
|
+
export declare const SERVICE_WIRE_PREFIX_SIZE: number;
|
|
6
|
+
export declare const SERVICE_WIRE_TEXT8_MAX_BYTES = 255;
|
|
2
7
|
export type ServiceWireInvalid = (message: string) => never;
|
|
3
8
|
/** Encodes text without silently replacing an unpaired UTF-16 surrogate. */
|
|
4
9
|
export declare function encodeCanonicalServiceWireText(value: string, field: string, maximumBytes: number, invalid: ServiceWireInvalid): Buffer;
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SERVICE_WIRE_TEXT8_MAX_BYTES = exports.SERVICE_WIRE_PREFIX_SIZE = exports.SERVICE_WIRE_FLAGS_OFFSET = exports.SERVICE_WIRE_COMMAND_OFFSET = exports.SERVICE_WIRE_MAJOR_OFFSET = void 0;
|
|
3
4
|
exports.encodeCanonicalServiceWireText = encodeCanonicalServiceWireText;
|
|
4
5
|
exports.decodeCanonicalServiceWireText = decodeCanonicalServiceWireText;
|
|
5
6
|
exports.encodeServiceWireRoutingId = encodeServiceWireRoutingId;
|
|
6
7
|
exports.decodeServiceWireRoutingId = decodeServiceWireRoutingId;
|
|
7
8
|
const routing_id_1 = require("../routing-id");
|
|
9
|
+
exports.SERVICE_WIRE_MAJOR_OFFSET = 2;
|
|
10
|
+
exports.SERVICE_WIRE_COMMAND_OFFSET = exports.SERVICE_WIRE_MAJOR_OFFSET + 1;
|
|
11
|
+
exports.SERVICE_WIRE_FLAGS_OFFSET = exports.SERVICE_WIRE_COMMAND_OFFSET + 1;
|
|
12
|
+
exports.SERVICE_WIRE_PREFIX_SIZE = exports.SERVICE_WIRE_FLAGS_OFFSET + 1;
|
|
13
|
+
exports.SERVICE_WIRE_TEXT8_MAX_BYTES = 255;
|
|
8
14
|
/** Encodes text without silently replacing an unpaired UTF-16 surrogate. */
|
|
9
15
|
function encodeCanonicalServiceWireText(value, field, maximumBytes, invalid) {
|
|
10
16
|
const bytes = Buffer.from(value, 'utf8');
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ServiceWireDecodeError = void 0;
|
|
4
4
|
exports.createServiceWireCodec = createServiceWireCodec;
|
|
5
|
-
const
|
|
5
|
+
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
6
|
+
const service_wire_binary_primitives_1 = require("./service-wire-binary-primitives");
|
|
7
|
+
const PREFIX_SIZE = service_wire_binary_primitives_1.SERVICE_WIRE_PREFIX_SIZE;
|
|
6
8
|
const LIVENESS_FRAME_SIZE = PREFIX_SIZE + 8;
|
|
7
9
|
class ServiceWireDecodeError extends Error {
|
|
8
10
|
code;
|
|
@@ -21,15 +23,15 @@ function createServiceWireCodec(definition) {
|
|
|
21
23
|
record.command !== definition.commands.livenessAck) {
|
|
22
24
|
throw new RangeError('command must be a liveness command.');
|
|
23
25
|
}
|
|
24
|
-
if (record.probeId <= 0n || record.probeId >
|
|
26
|
+
if (record.probeId <= 0n || record.probeId > stream_wire_1.UINT64_MAX) {
|
|
25
27
|
throw new RangeError('probeId must be a non-zero unsigned 64-bit integer.');
|
|
26
28
|
}
|
|
27
29
|
const frame = Buffer.allocUnsafe(LIVENESS_FRAME_SIZE);
|
|
28
30
|
frame[0] = definition.magic[0];
|
|
29
31
|
frame[1] = definition.magic[1];
|
|
30
|
-
frame[
|
|
31
|
-
frame[
|
|
32
|
-
frame[
|
|
32
|
+
frame[service_wire_binary_primitives_1.SERVICE_WIRE_MAJOR_OFFSET] = definition.major;
|
|
33
|
+
frame[service_wire_binary_primitives_1.SERVICE_WIRE_COMMAND_OFFSET] = record.command;
|
|
34
|
+
frame[service_wire_binary_primitives_1.SERVICE_WIRE_FLAGS_OFFSET] = 0;
|
|
33
35
|
frame.writeBigUInt64BE(record.probeId, PREFIX_SIZE);
|
|
34
36
|
return frame;
|
|
35
37
|
},
|
|
@@ -39,16 +41,16 @@ function createServiceWireCodec(definition) {
|
|
|
39
41
|
if (frame[0] !== definition.magic[0] || frame[1] !== definition.magic[1]) {
|
|
40
42
|
fail('invalid-magic');
|
|
41
43
|
}
|
|
42
|
-
if (frame[
|
|
44
|
+
if (frame[service_wire_binary_primitives_1.SERVICE_WIRE_MAJOR_OFFSET] !== definition.major)
|
|
43
45
|
fail('unsupported-major');
|
|
44
|
-
const command = frame[
|
|
46
|
+
const command = frame[service_wire_binary_primitives_1.SERVICE_WIRE_COMMAND_OFFSET];
|
|
45
47
|
if (!knownCommands.has(command))
|
|
46
48
|
fail('unknown-command');
|
|
47
49
|
if (command !== definition.commands.livenessProbe &&
|
|
48
50
|
command !== definition.commands.livenessAck) {
|
|
49
51
|
fail('unknown-command');
|
|
50
52
|
}
|
|
51
|
-
if (frame[
|
|
53
|
+
if (frame[service_wire_binary_primitives_1.SERVICE_WIRE_FLAGS_OFFSET] !== 0)
|
|
52
54
|
fail('forbidden-flag');
|
|
53
55
|
if (frame.byteLength < LIVENESS_FRAME_SIZE)
|
|
54
56
|
fail('truncated-field');
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const SERVICE_WIRE_MAGIC: readonly [90, 77];
|
|
2
2
|
export declare const SERVICE_WIRE_MAJOR: 1;
|
|
3
|
+
export declare const SERVICE_WIRE_METADATA_BYTES: 1024;
|
|
3
4
|
export declare const SERVICE_WIRE_REQUIRED_CAPABILITY: "framework-service-v13";
|
|
4
5
|
export declare const SERVICE_FRAMEWORK_MULTIPART_PACKET_NAME: "ZLinkFrameworkMultipart";
|
|
5
6
|
export declare const SERVICE_FRAMEWORK_MULTIPART_CONTENT_TYPE: "application/x-zlink-multipart";
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isValidServiceWireTerminalFailure = exports.ServiceWireExactTerminalByFailureCode = exports.ServiceWireBoundaryTerminalResults = exports.ServiceWireFrameworkErrorCode = exports.ServiceWireFlag = exports.ServiceWireCommand = exports.SERVICE_FRAMEWORK_MULTIPART_CONTENT_TYPE = exports.SERVICE_FRAMEWORK_MULTIPART_PACKET_NAME = exports.SERVICE_WIRE_REQUIRED_CAPABILITY = exports.SERVICE_WIRE_MAJOR = exports.SERVICE_WIRE_MAGIC = void 0;
|
|
3
|
+
exports.isValidServiceWireTerminalFailure = exports.ServiceWireExactTerminalByFailureCode = exports.ServiceWireBoundaryTerminalResults = exports.ServiceWireFrameworkErrorCode = exports.ServiceWireFlag = exports.ServiceWireCommand = exports.SERVICE_FRAMEWORK_MULTIPART_CONTENT_TYPE = exports.SERVICE_FRAMEWORK_MULTIPART_PACKET_NAME = exports.SERVICE_WIRE_REQUIRED_CAPABILITY = exports.SERVICE_WIRE_METADATA_BYTES = exports.SERVICE_WIRE_MAJOR = exports.SERVICE_WIRE_MAGIC = void 0;
|
|
4
4
|
// Generated from service-wire-v1.schema.json. Do not edit.
|
|
5
5
|
exports.SERVICE_WIRE_MAGIC = [90, 77];
|
|
6
6
|
exports.SERVICE_WIRE_MAJOR = 1;
|
|
7
|
+
exports.SERVICE_WIRE_METADATA_BYTES = 1024;
|
|
7
8
|
exports.SERVICE_WIRE_REQUIRED_CAPABILITY = "framework-service-v13";
|
|
8
9
|
exports.SERVICE_FRAMEWORK_MULTIPART_PACKET_NAME = "ZLinkFrameworkMultipart";
|
|
9
10
|
exports.SERVICE_FRAMEWORK_MULTIPART_CONTENT_TYPE = "application/x-zlink-multipart";
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { type ServiceNodeDescriptor } from './service-topology-registry';
|
|
2
|
+
export declare const APPLICATION_PAYLOAD_VERSION = 1;
|
|
3
|
+
export declare const APPLICATION_PAYLOAD_MINIMUM_FIELD_BYTES: number;
|
|
2
4
|
export declare const M6A_SERVICE_WIRE_MAGIC: readonly [90, 77];
|
|
3
5
|
export declare const M6A_SERVICE_WIRE_MAJOR: 1;
|
|
4
6
|
export declare const M6A_SERVICE_WIRE_REQUIRED_CAPABILITY: "framework-service-v13";
|