@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
|
@@ -1,40 +1,24 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
ServiceSessionBinding,
|
|
4
|
-
ServiceSpotRef
|
|
5
|
-
} from './service-stateful-registry';
|
|
6
|
-
import { operationRequiresReply } from './service-runtime-contracts';
|
|
7
|
-
import { ServiceWireProtocolError } from './service-wire-m6a-codec';
|
|
1
|
+
import { UINT64_MAX, ZlinkStreamContentType } from '@zlink-systems/stream-wire';
|
|
2
|
+
import { RELOCATION_STATE_CHUNK_DATA_MAX_BYTES } from '../../contracts/Configuration/InternalDefaults';
|
|
8
3
|
import { isCanonicalWireReplyTerminal } from '../framework-errors-internal';
|
|
9
|
-
import { routingIdsEqual } from '../routing-id';
|
|
10
|
-
import {
|
|
11
|
-
SERVICE_WIRE_MAGIC,
|
|
12
|
-
SERVICE_WIRE_MAJOR,
|
|
13
|
-
ServiceWireCommand,
|
|
14
|
-
ServiceWireFlag
|
|
15
|
-
} from './service-wire-constants.generated';
|
|
16
|
-
import {
|
|
17
|
-
decodeCanonicalServiceWireText,
|
|
18
|
-
decodeServiceWireRoutingId,
|
|
19
|
-
encodeCanonicalServiceWireText,
|
|
20
|
-
encodeServiceWireRoutingId
|
|
21
|
-
} from './service-wire-binary-primitives';
|
|
22
4
|
import {
|
|
23
5
|
decodeActorRequestCommand,
|
|
24
6
|
decodeActorSendCommand,
|
|
25
7
|
decodeMetadataFrame,
|
|
8
|
+
decodeInstanceRouteV1,
|
|
26
9
|
decodeSpotRequestCommand,
|
|
27
10
|
decodeSpotSendCommand,
|
|
28
11
|
encodeActorRequestCommand,
|
|
29
12
|
encodeActorSendCommand,
|
|
30
13
|
encodeApplicationPayloadEnvelopeV1,
|
|
14
|
+
encodeInstanceRouteV1,
|
|
31
15
|
encodeSpotRequestCommand,
|
|
32
16
|
encodeSpotSendCommand,
|
|
33
17
|
type ServiceWireDecoderContext
|
|
34
18
|
} from '../protocol/service_wire_codec.generated';
|
|
35
19
|
import {
|
|
36
|
-
decodeActorCreate49 as decodeGeneratedActorCreate49,
|
|
37
20
|
decodeActorJoin28,
|
|
21
|
+
decodeActorCreate49 as decodeGeneratedActorCreate49,
|
|
38
22
|
decodeRelocationCutover34 as decodeGeneratedRelocationCutover34,
|
|
39
23
|
decodeRelocationData31 as decodeGeneratedRelocationData31,
|
|
40
24
|
decodeRelocationFailed53 as decodeGeneratedRelocationFailed53,
|
|
@@ -63,20 +47,45 @@ import {
|
|
|
63
47
|
encodeUserSpotClose48 as encodeGeneratedUserSpotClose48,
|
|
64
48
|
encodeUserSpotCreate47 as encodeGeneratedUserSpotCreate47,
|
|
65
49
|
type ActorCreate49 as GeneratedActorCreate49,
|
|
50
|
+
type ServiceWireCoordinatorFence as GeneratedCoordinatorFence,
|
|
66
51
|
type RelocationObjectIdentity as GeneratedRelocationObjectIdentity,
|
|
67
52
|
type ReplyRelay33 as GeneratedReplyRelay33,
|
|
68
|
-
type ServiceWireCoordinatorFence as GeneratedCoordinatorFence,
|
|
69
53
|
type ServiceWireRequestSourceFence as GeneratedRequestSourceFence,
|
|
70
54
|
type ServiceWireRouteFence as GeneratedRouteFence,
|
|
71
|
-
type ServiceWireTargetFence as GeneratedTargetFence,
|
|
72
55
|
type SessionRelocationRoute44 as GeneratedSessionRelocationRoute44,
|
|
73
56
|
type SessionRelocationSeal42 as GeneratedSessionRelocationSeal42,
|
|
74
57
|
type SessionRelocationSealed43 as GeneratedSessionRelocationSealed43,
|
|
58
|
+
type ServiceWireTargetFence as GeneratedTargetFence,
|
|
75
59
|
type UserSpotClose48 as GeneratedUserSpotClose48,
|
|
76
60
|
type UserSpotCreate47 as GeneratedUserSpotCreate47
|
|
77
61
|
} from '../protocol/service_wire_pilot_codec.generated';
|
|
62
|
+
import { routingIdsEqual } from '../routing-id';
|
|
63
|
+
import { operationRequiresReply } from './service-runtime-contracts';
|
|
64
|
+
import type {
|
|
65
|
+
ServiceActorRef,
|
|
66
|
+
ServiceSessionBinding,
|
|
67
|
+
ServiceSpotRef
|
|
68
|
+
} from './service-stateful-registry';
|
|
69
|
+
import {
|
|
70
|
+
decodeCanonicalServiceWireText,
|
|
71
|
+
decodeServiceWireRoutingId,
|
|
72
|
+
encodeCanonicalServiceWireText,
|
|
73
|
+
encodeServiceWireRoutingId,
|
|
74
|
+
SERVICE_WIRE_PREFIX_SIZE
|
|
75
|
+
} from './service-wire-binary-primitives';
|
|
76
|
+
import {
|
|
77
|
+
SERVICE_WIRE_MAGIC,
|
|
78
|
+
SERVICE_WIRE_MAJOR,
|
|
79
|
+
ServiceWireCommand,
|
|
80
|
+
ServiceWireFlag
|
|
81
|
+
} from './service-wire-constants.generated';
|
|
82
|
+
import { APPLICATION_PAYLOAD_VERSION, ServiceWireProtocolError } from './service-wire-m6a-codec';
|
|
83
|
+
const MESSAGE_FOLLOW_MAX_BODY_BYTES = 16 * 1024 * 1024;
|
|
84
|
+
const MESSAGE_FOLLOW_VERSION = 1;
|
|
85
|
+
const INSTANCE_ROUTE_VERSION = 1;
|
|
86
|
+
const INSTANCE_ACTIVATION_VERSION = 2;
|
|
78
87
|
|
|
79
|
-
const PREFIX_SIZE =
|
|
88
|
+
const PREFIX_SIZE = SERVICE_WIRE_PREFIX_SIZE;
|
|
80
89
|
const MAGIC_0 = SERVICE_WIRE_MAGIC[0];
|
|
81
90
|
const MAGIC_1 = SERVICE_WIRE_MAGIC[1];
|
|
82
91
|
const MAJOR = SERVICE_WIRE_MAJOR;
|
|
@@ -161,7 +170,7 @@ export type ServiceWireRelocationObject =
|
|
|
161
170
|
/** Shared CRC-32C wire bounds for the direct relocation payload transfer. */
|
|
162
171
|
export const RELOCATION_PAYLOAD_TOTAL_LENGTH_MAX = 274_877_906_944n;
|
|
163
172
|
export const RELOCATION_PAYLOAD_CHUNK_COUNT_MAX = 4096;
|
|
164
|
-
export
|
|
173
|
+
export { RELOCATION_STATE_CHUNK_DATA_MAX_BYTES } from '../../contracts/Configuration/InternalDefaults';
|
|
165
174
|
|
|
166
175
|
interface ServiceWireRelocationBase {
|
|
167
176
|
readonly relocation: ServiceWireOperationId;
|
|
@@ -1086,6 +1095,7 @@ export type ServiceStatefulWireRecord =
|
|
|
1086
1095
|
| {
|
|
1087
1096
|
readonly kind: 'instanceSpot';
|
|
1088
1097
|
readonly activation: 'ready';
|
|
1098
|
+
readonly instanceIntent: boolean;
|
|
1089
1099
|
readonly route: ServiceInstanceRouteFence;
|
|
1090
1100
|
readonly sourceNodeGeneration: bigint;
|
|
1091
1101
|
readonly sourceNodeRid: string;
|
|
@@ -1161,7 +1171,7 @@ const STATEFUL_MESSAGE_CONTEXT: ServiceWireDecoderContext = {
|
|
|
1161
1171
|
};
|
|
1162
1172
|
const STATEFUL_HEADER_PAYLOAD = {
|
|
1163
1173
|
packetName: 'wire',
|
|
1164
|
-
contentType:
|
|
1174
|
+
contentType: ZlinkStreamContentType.Json,
|
|
1165
1175
|
payload: Buffer.from('{}')
|
|
1166
1176
|
};
|
|
1167
1177
|
|
|
@@ -1384,17 +1394,25 @@ export function encodeInstanceSpotHeader(
|
|
|
1384
1394
|
operationKind: 'send' | 'request',
|
|
1385
1395
|
operation: { readonly high: bigint; readonly low: bigint },
|
|
1386
1396
|
replyRouteId?: bigint,
|
|
1387
|
-
hasMetadata = false
|
|
1397
|
+
hasMetadata = false,
|
|
1398
|
+
instanceIntent = false
|
|
1388
1399
|
): Buffer {
|
|
1389
|
-
const
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1400
|
+
const encodedRoute = encodeInstanceRouteV1(
|
|
1401
|
+
{
|
|
1402
|
+
routeKind: 'ready',
|
|
1403
|
+
targetNodeRid: toGeneratedRoutingId(route.targetNodeRid, 'targetNodeRid'),
|
|
1404
|
+
targetNodeGeneration: route.targetNodeGeneration,
|
|
1405
|
+
targetSpotId: route.targetSpotId,
|
|
1406
|
+
authority: {
|
|
1407
|
+
objectGeneration: route.objectGeneration,
|
|
1408
|
+
ownerId: route.ownerId,
|
|
1409
|
+
authorityOwnerGeneration: route.authorityOwnerGeneration,
|
|
1410
|
+
leaseGeneration: route.leaseGeneration,
|
|
1411
|
+
storeVersion: route.storeVersion
|
|
1412
|
+
},
|
|
1413
|
+
instanceIntent: instanceIntent ? 'true' : 'false'
|
|
1414
|
+
},
|
|
1415
|
+
STATEFUL_MESSAGE_CONTEXT
|
|
1398
1416
|
);
|
|
1399
1417
|
if (
|
|
1400
1418
|
operationKind === 'send' &&
|
|
@@ -1407,9 +1425,7 @@ export function encodeInstanceSpotHeader(
|
|
|
1407
1425
|
}
|
|
1408
1426
|
return concat(
|
|
1409
1427
|
prefix(M6bServiceWireCommand.instanceSpot, hasMetadata ? M6bServiceWireFlag.metadata : 0),
|
|
1410
|
-
|
|
1411
|
-
u16(routeBody.byteLength),
|
|
1412
|
-
routeBody,
|
|
1428
|
+
encodedRoute,
|
|
1413
1429
|
u64Any(sourceNodeGeneration),
|
|
1414
1430
|
rid(sourceNodeRid, 'sourceNodeRid'),
|
|
1415
1431
|
optionalRid(sourceSpotId),
|
|
@@ -1449,7 +1465,7 @@ export function encodeInstanceSpotActivationHeader(
|
|
|
1449
1465
|
);
|
|
1450
1466
|
return concat(
|
|
1451
1467
|
prefix(M6bServiceWireCommand.instanceSpot, hasMetadata ? M6bServiceWireFlag.metadata : 0),
|
|
1452
|
-
Buffer.of(
|
|
1468
|
+
Buffer.of(INSTANCE_ACTIVATION_VERSION),
|
|
1453
1469
|
u16(targetBody.byteLength),
|
|
1454
1470
|
targetBody,
|
|
1455
1471
|
u64Any(sourceNodeGeneration),
|
|
@@ -1493,12 +1509,14 @@ export function encodeMessageFollowHeader(
|
|
|
1493
1509
|
u64Any(record.originalOperation.low),
|
|
1494
1510
|
u64Any(record.originalReplyRouteId)
|
|
1495
1511
|
);
|
|
1496
|
-
if (body.byteLength >
|
|
1497
|
-
throw new RangeError(
|
|
1512
|
+
if (body.byteLength > MESSAGE_FOLLOW_MAX_BODY_BYTES) {
|
|
1513
|
+
throw new RangeError(
|
|
1514
|
+
`Message Follow body exceeds ${MESSAGE_FOLLOW_MAX_BODY_BYTES / (1024 * 1024)} MiB.`
|
|
1515
|
+
);
|
|
1498
1516
|
}
|
|
1499
1517
|
return concat(
|
|
1500
1518
|
prefix(M6bServiceWireCommand.messageFollow),
|
|
1501
|
-
Buffer.of(
|
|
1519
|
+
Buffer.of(MESSAGE_FOLLOW_VERSION),
|
|
1502
1520
|
u32(body.byteLength, 'messageFollow.length'),
|
|
1503
1521
|
body
|
|
1504
1522
|
);
|
|
@@ -1724,34 +1742,53 @@ export function decodeStatefulHeader(
|
|
|
1724
1742
|
if ((command.flags & ~M6bServiceWireFlag.metadata) !== 0) {
|
|
1725
1743
|
fail(`Invalid command flags '${command.flags}'.`);
|
|
1726
1744
|
}
|
|
1745
|
+
const routeStart = reader.offset;
|
|
1727
1746
|
const version = reader.u8('instanceRoute.version');
|
|
1728
|
-
if (version !==
|
|
1747
|
+
if (version !== INSTANCE_ROUTE_VERSION && version !== INSTANCE_ACTIVATION_VERSION)
|
|
1748
|
+
fail('Unsupported Instance route version.');
|
|
1729
1749
|
const routeLength = reader.u16('instanceRoute.length');
|
|
1730
1750
|
const routeEnd = reader.offset + routeLength;
|
|
1731
|
-
const
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1751
|
+
const generatedReadyRoute =
|
|
1752
|
+
version === INSTANCE_ROUTE_VERSION
|
|
1753
|
+
? decodeInstanceRouteV1(
|
|
1754
|
+
reader.bytes.subarray(routeStart, routeEnd),
|
|
1755
|
+
STATEFUL_MESSAGE_CONTEXT
|
|
1756
|
+
)
|
|
1757
|
+
: undefined;
|
|
1758
|
+
if (generatedReadyRoute !== undefined && generatedReadyRoute.routeKind !== 'ready') {
|
|
1759
|
+
fail('Invalid Ready Instance route kind.');
|
|
1760
|
+
}
|
|
1761
|
+
const commonTarget =
|
|
1762
|
+
generatedReadyRoute?.routeKind === 'ready'
|
|
1763
|
+
? {
|
|
1764
|
+
targetNodeRid: fromGeneratedRoutingId(
|
|
1765
|
+
generatedReadyRoute.targetNodeRid,
|
|
1766
|
+
'targetNodeRid'
|
|
1767
|
+
),
|
|
1768
|
+
targetNodeGeneration: generatedReadyRoute.targetNodeGeneration,
|
|
1769
|
+
targetSpotId: generatedReadyRoute.targetSpotId
|
|
1770
|
+
}
|
|
1771
|
+
: {
|
|
1772
|
+
targetNodeRid: reader.rid('targetNodeRid'),
|
|
1773
|
+
targetNodeGeneration: reader.nonZeroU64('targetNodeGeneration'),
|
|
1774
|
+
targetSpotId: reader.rid('targetSpotId')
|
|
1775
|
+
};
|
|
1736
1776
|
const route: ServiceInstanceRouteFence | undefined =
|
|
1737
|
-
|
|
1777
|
+
generatedReadyRoute?.routeKind === 'ready'
|
|
1738
1778
|
? {
|
|
1739
1779
|
...commonTarget,
|
|
1740
|
-
|
|
1741
|
-
ownerId: reader.text8('ownerId'),
|
|
1742
|
-
authorityOwnerGeneration: reader.nonZeroU64('authorityOwnerGeneration'),
|
|
1743
|
-
leaseGeneration: reader.nonZeroU64('leaseGeneration'),
|
|
1744
|
-
storeVersion: reader.text16('storeVersion')
|
|
1780
|
+
...generatedReadyRoute.authority
|
|
1745
1781
|
}
|
|
1746
1782
|
: undefined;
|
|
1747
1783
|
const target: ServiceInstanceActivationTarget | undefined =
|
|
1748
|
-
version ===
|
|
1784
|
+
version === INSTANCE_ACTIVATION_VERSION
|
|
1749
1785
|
? {
|
|
1750
1786
|
...commonTarget,
|
|
1751
1787
|
stableType: reader.text16('stableType'),
|
|
1752
1788
|
descriptorVersion: reader.text16('descriptorVersion')
|
|
1753
1789
|
}
|
|
1754
1790
|
: undefined;
|
|
1791
|
+
if (generatedReadyRoute !== undefined) reader.offset = routeEnd;
|
|
1755
1792
|
if (reader.offset !== routeEnd) fail('Invalid Instance route body length.');
|
|
1756
1793
|
const sourceNodeGeneration = reader.nonZeroU64('sourceNodeGeneration');
|
|
1757
1794
|
const sourceNodeRid = reader.rid('sourceNodeRid');
|
|
@@ -1764,16 +1801,21 @@ export function decodeStatefulHeader(
|
|
|
1764
1801
|
};
|
|
1765
1802
|
const operationKind = operationValue === 1 ? ('send' as const) : ('request' as const);
|
|
1766
1803
|
if (
|
|
1767
|
-
version ===
|
|
1804
|
+
version === INSTANCE_ROUTE_VERSION &&
|
|
1768
1805
|
((operationKind === 'send' && (operation.high !== 0n || operation.low !== 0n)) ||
|
|
1769
1806
|
(operationKind === 'request' && operation.high === 0n && operation.low === 0n))
|
|
1770
1807
|
) {
|
|
1771
1808
|
fail('Invalid Instance operation identity.');
|
|
1772
1809
|
}
|
|
1773
|
-
if (
|
|
1810
|
+
if (
|
|
1811
|
+
version === INSTANCE_ACTIVATION_VERSION &&
|
|
1812
|
+
operation.high === 0n &&
|
|
1813
|
+
operation.low === 0n
|
|
1814
|
+
) {
|
|
1774
1815
|
fail('Instance activation requires a non-zero operation identity.');
|
|
1775
1816
|
}
|
|
1776
|
-
const deadlineUnixMs =
|
|
1817
|
+
const deadlineUnixMs =
|
|
1818
|
+
version === INSTANCE_ACTIVATION_VERSION ? reader.nonZeroU64('deadlineUnixMs') : undefined;
|
|
1777
1819
|
const replyRouteId =
|
|
1778
1820
|
operationKind === 'request' ? reader.nonZeroU64('replyRouteId') : undefined;
|
|
1779
1821
|
reader.end();
|
|
@@ -1786,8 +1828,13 @@ export function decodeStatefulHeader(
|
|
|
1786
1828
|
operation,
|
|
1787
1829
|
...(replyRouteId === undefined ? {} : { replyRouteId })
|
|
1788
1830
|
};
|
|
1789
|
-
return version ===
|
|
1790
|
-
? {
|
|
1831
|
+
return version === INSTANCE_ROUTE_VERSION
|
|
1832
|
+
? {
|
|
1833
|
+
...common,
|
|
1834
|
+
activation: 'ready',
|
|
1835
|
+
route: route!,
|
|
1836
|
+
instanceIntent: generatedReadyRoute!.instanceIntent === 'true'
|
|
1837
|
+
}
|
|
1791
1838
|
: {
|
|
1792
1839
|
...common,
|
|
1793
1840
|
activation: 'missing',
|
|
@@ -1797,12 +1844,12 @@ export function decodeStatefulHeader(
|
|
|
1797
1844
|
}
|
|
1798
1845
|
case M6bServiceWireCommand.messageFollow: {
|
|
1799
1846
|
requireFlags(command.flags, 0);
|
|
1800
|
-
if (reader.u8('messageFollow.version') !==
|
|
1847
|
+
if (reader.u8('messageFollow.version') !== MESSAGE_FOLLOW_VERSION) {
|
|
1801
1848
|
fail('Unsupported Message Follow version.');
|
|
1802
1849
|
}
|
|
1803
1850
|
const length = reader.u32('messageFollow.length');
|
|
1804
1851
|
const end = reader.offset + length;
|
|
1805
|
-
if (length >
|
|
1852
|
+
if (length > MESSAGE_FOLLOW_MAX_BODY_BYTES || end > reader.bytes.byteLength) {
|
|
1806
1853
|
fail('Invalid Message Follow body length.');
|
|
1807
1854
|
}
|
|
1808
1855
|
const record: ServiceMessageFollowRecord = {
|
|
@@ -2231,7 +2278,11 @@ function applicationPayload(value: NonNullable<ServiceMaintenanceReplyRelay['pay
|
|
|
2231
2278
|
u32(value.bytes.byteLength, 'payload.length'),
|
|
2232
2279
|
value.bytes
|
|
2233
2280
|
);
|
|
2234
|
-
return concat(
|
|
2281
|
+
return concat(
|
|
2282
|
+
Buffer.of(APPLICATION_PAYLOAD_VERSION),
|
|
2283
|
+
u32(body.byteLength, 'applicationPayload.length'),
|
|
2284
|
+
body
|
|
2285
|
+
);
|
|
2235
2286
|
}
|
|
2236
2287
|
|
|
2237
2288
|
function prefix(command: number, flags = 0): Buffer {
|
|
@@ -2316,7 +2367,7 @@ function validateMessageFollowRecord(
|
|
|
2316
2367
|
if (value.originalOperation.high === 0n && value.originalOperation.low === 0n) {
|
|
2317
2368
|
invalid('Message Follow originalOperation must not be zero.');
|
|
2318
2369
|
}
|
|
2319
|
-
if (value.originalReplyRouteId < 0n || value.originalReplyRouteId >
|
|
2370
|
+
if (value.originalReplyRouteId < 0n || value.originalReplyRouteId > UINT64_MAX) {
|
|
2320
2371
|
invalid('Message Follow originalReplyRouteId must be a u64.');
|
|
2321
2372
|
}
|
|
2322
2373
|
}
|
|
@@ -2376,7 +2427,7 @@ function u64(value: bigint): Buffer {
|
|
|
2376
2427
|
}
|
|
2377
2428
|
|
|
2378
2429
|
function u64Any(value: bigint): Buffer {
|
|
2379
|
-
if (value < 0n || value >
|
|
2430
|
+
if (value < 0n || value > UINT64_MAX) {
|
|
2380
2431
|
throw new RangeError('u64 value is out of range.');
|
|
2381
2432
|
}
|
|
2382
2433
|
const result = Buffer.alloc(8);
|
|
@@ -2385,7 +2436,7 @@ function u64Any(value: bigint): Buffer {
|
|
|
2385
2436
|
}
|
|
2386
2437
|
|
|
2387
2438
|
function requirePositive(value: bigint | undefined, name: string): bigint {
|
|
2388
|
-
if (value === undefined || value < 1n || value >
|
|
2439
|
+
if (value === undefined || value < 1n || value > UINT64_MAX) {
|
|
2389
2440
|
throw new RangeError(`${name} must be a non-zero u64.`);
|
|
2390
2441
|
}
|
|
2391
2442
|
return value;
|
|
@@ -2909,7 +2960,7 @@ class FrozenReader {
|
|
|
2909
2960
|
}
|
|
2910
2961
|
|
|
2911
2962
|
applicationPayload(): NonNullable<ServiceMaintenanceReplyRelay['payload']> {
|
|
2912
|
-
if (this.u8('applicationPayload.version') !==
|
|
2963
|
+
if (this.u8('applicationPayload.version') !== APPLICATION_PAYLOAD_VERSION) {
|
|
2913
2964
|
fail('Application payload envelope version must be one.');
|
|
2914
2965
|
}
|
|
2915
2966
|
const body = this.body32('application payload');
|
|
@@ -3066,24 +3117,21 @@ class FrozenReader {
|
|
|
3066
3117
|
}
|
|
3067
3118
|
|
|
3068
3119
|
private instanceRoute(): void {
|
|
3120
|
+
const start = this.offset;
|
|
3069
3121
|
const kind = this.u8('instanceRouteKind');
|
|
3070
3122
|
if (kind < 1 || kind > 2) fail('Invalid Instance route kind.');
|
|
3071
3123
|
const body = this.body16('Instance route');
|
|
3124
|
+
if (kind === INSTANCE_ROUTE_VERSION) {
|
|
3125
|
+
decodeInstanceRouteV1(this.bytes.subarray(start, this.offset), STATEFUL_MESSAGE_CONTEXT);
|
|
3126
|
+
return;
|
|
3127
|
+
}
|
|
3072
3128
|
body.rid8('targetNodeRid');
|
|
3073
3129
|
body.nonZeroU64('targetNodeGeneration');
|
|
3074
3130
|
body.text8('targetSpotId');
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
body.nonZeroU64('leaseGeneration');
|
|
3080
|
-
body.text16('storeVersion');
|
|
3081
|
-
} else {
|
|
3082
|
-
body.text8('targetMeshName');
|
|
3083
|
-
body.text8('stableType');
|
|
3084
|
-
body.text8('targetDescriptorVersion');
|
|
3085
|
-
body.nonZeroU64('deadlineUnixMs');
|
|
3086
|
-
}
|
|
3131
|
+
body.text8('targetMeshName');
|
|
3132
|
+
body.text8('stableType');
|
|
3133
|
+
body.text8('targetDescriptorVersion');
|
|
3134
|
+
body.nonZeroU64('deadlineUnixMs');
|
|
3087
3135
|
body.end('Instance route');
|
|
3088
3136
|
}
|
|
3089
3137
|
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import { ZLINK_MAX_IDENTITY_TEXT_BYTES } from '../../contracts/Common/CoreTypes';
|
|
2
|
+
import {
|
|
3
|
+
ZLINK_MAX_PUBLIC_WEIGHT,
|
|
4
|
+
isValidCapacity,
|
|
5
|
+
isValidPositiveCapacity,
|
|
6
|
+
isValidPublicWeight
|
|
7
|
+
} from '../../contracts/Configuration/RegistrationBuilderPolicy';
|
|
1
8
|
import { descriptorConnectionNotRequired } from './route-mesh-connection-policy';
|
|
2
9
|
import { SmoothWeightedSelection } from './service-weighted-selection';
|
|
3
10
|
import { SERVICE_WIRE_REQUIRED_CAPABILITY } from './service-wire-constants.generated';
|
|
@@ -51,8 +58,6 @@ export type PeerAdmissionResult =
|
|
|
51
58
|
export type ServiceObjectPlacementStatus = 'available' | 'unsupported' | 'capacity' | 'unavailable';
|
|
52
59
|
|
|
53
60
|
const REQUIRED_CAPABILITY = SERVICE_WIRE_REQUIRED_CAPABILITY;
|
|
54
|
-
const MAX_CAPACITY = 0x7fff_ffff;
|
|
55
|
-
const MAX_PUBLIC_WEIGHT = 10_000;
|
|
56
61
|
|
|
57
62
|
interface ServiceSelectionCacheEntry {
|
|
58
63
|
readonly selection: SmoothWeightedSelection<unknown>;
|
|
@@ -207,21 +212,6 @@ export class ServiceTopologyRegistry {
|
|
|
207
212
|
this.rebuildSelections();
|
|
208
213
|
}
|
|
209
214
|
|
|
210
|
-
markNotRequired(descriptor: ServiceNodeDescriptor): void {
|
|
211
|
-
validateDescriptor(descriptor);
|
|
212
|
-
if (
|
|
213
|
-
descriptor.meshName !== this.local.meshName ||
|
|
214
|
-
descriptor.nodeRoutingId === this.local.nodeRoutingId ||
|
|
215
|
-
!descriptorConnectionNotRequired(this.local, descriptor)
|
|
216
|
-
) {
|
|
217
|
-
return;
|
|
218
|
-
}
|
|
219
|
-
this.peersByRid.delete(descriptor.nodeRoutingId);
|
|
220
|
-
this.remember(descriptor);
|
|
221
|
-
this.notRequiredByRid.set(descriptor.nodeRoutingId, cloneDescriptor(descriptor));
|
|
222
|
-
this.rebuildSelections();
|
|
223
|
-
}
|
|
224
|
-
|
|
225
215
|
forgetNotRequired(nodeRoutingId: string): void {
|
|
226
216
|
if (this.notRequiredByRid.delete(nodeRoutingId)) this.rebuildSelections();
|
|
227
217
|
}
|
|
@@ -235,8 +225,12 @@ export class ServiceTopologyRegistry {
|
|
|
235
225
|
|
|
236
226
|
hasKnownChannelTarget(channelName: string): boolean {
|
|
237
227
|
requireText(channelName, 'channelName');
|
|
238
|
-
return [
|
|
239
|
-
(descriptor) =>
|
|
228
|
+
return [...this.knownByRid.values()].some(
|
|
229
|
+
(descriptor) =>
|
|
230
|
+
(descriptor.state === 'serving' ||
|
|
231
|
+
descriptor.state === 'retiring' ||
|
|
232
|
+
descriptor.state === 'draining') &&
|
|
233
|
+
findChannel(descriptor, channelName) !== undefined
|
|
240
234
|
);
|
|
241
235
|
}
|
|
242
236
|
|
|
@@ -259,12 +253,8 @@ export class ServiceTopologyRegistry {
|
|
|
259
253
|
requireText(channelName, 'channelName');
|
|
260
254
|
return this.selectWeightedCycle(
|
|
261
255
|
`channel:${channelName}`,
|
|
262
|
-
() =>
|
|
263
|
-
|
|
264
|
-
descriptor: cloneDescriptor(this.local),
|
|
265
|
-
connectionId: 'local'
|
|
266
|
-
};
|
|
267
|
-
return [local, ...this.peersByRid.values()]
|
|
256
|
+
() =>
|
|
257
|
+
[...this.peersByRid.values()]
|
|
268
258
|
.map((peer) => ({
|
|
269
259
|
peer: clonePeer(peer),
|
|
270
260
|
channel: selectableChannel(peer.descriptor, channelName)
|
|
@@ -276,8 +266,7 @@ export class ServiceTopologyRegistry {
|
|
|
276
266
|
peer: AdmittedServicePeer;
|
|
277
267
|
channel: ServiceChannelDescriptor;
|
|
278
268
|
} => value.channel !== undefined
|
|
279
|
-
)
|
|
280
|
-
},
|
|
269
|
+
),
|
|
281
270
|
(value) => value.channel.weight,
|
|
282
271
|
(value) => value.peer.descriptor.nodeRoutingId,
|
|
283
272
|
(left, right) =>
|
|
@@ -427,8 +416,10 @@ export function validateDescriptor(descriptor: ServiceNodeDescriptor): void {
|
|
|
427
416
|
}
|
|
428
417
|
if (descriptor.maintenanceWave !== undefined) {
|
|
429
418
|
requireText(descriptor.maintenanceWave, 'maintenanceWave');
|
|
430
|
-
if (Buffer.byteLength(descriptor.maintenanceWave, 'utf8') >
|
|
431
|
-
throw new RangeError(
|
|
419
|
+
if (Buffer.byteLength(descriptor.maintenanceWave, 'utf8') > ZLINK_MAX_IDENTITY_TEXT_BYTES) {
|
|
420
|
+
throw new RangeError(
|
|
421
|
+
`maintenanceWave must not exceed ${ZLINK_MAX_IDENTITY_TEXT_BYTES} UTF-8 bytes.`
|
|
422
|
+
);
|
|
432
423
|
}
|
|
433
424
|
}
|
|
434
425
|
validatePublicWeight(descriptor.placementWeight, 'placementWeight');
|
|
@@ -465,14 +456,14 @@ export function validateDescriptor(descriptor: ServiceNodeDescriptor): void {
|
|
|
465
456
|
}
|
|
466
457
|
|
|
467
458
|
function validateCapacity(value: number, allowZero: boolean, field: string): void {
|
|
468
|
-
if (!
|
|
459
|
+
if (!(allowZero ? isValidCapacity(value) : isValidPositiveCapacity(value))) {
|
|
469
460
|
throw new RangeError(`${field} is outside its supported range.`);
|
|
470
461
|
}
|
|
471
462
|
}
|
|
472
463
|
|
|
473
464
|
function validatePublicWeight(value: number, field: string): void {
|
|
474
|
-
if (!
|
|
475
|
-
throw new RangeError(`${field} must be an integer in 0
|
|
465
|
+
if (!isValidPublicWeight(value)) {
|
|
466
|
+
throw new RangeError(`${field} must be an integer in 0..${ZLINK_MAX_PUBLIC_WEIGHT}.`);
|
|
476
467
|
}
|
|
477
468
|
}
|
|
478
469
|
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import type { RoutingId } from '../../contracts';
|
|
2
2
|
import { decodeRoutingId, encodeRoutingIdStorageHex } from '../routing-id';
|
|
3
|
+
export const SERVICE_WIRE_MAJOR_OFFSET = 2;
|
|
4
|
+
export const SERVICE_WIRE_COMMAND_OFFSET = SERVICE_WIRE_MAJOR_OFFSET + 1;
|
|
5
|
+
export const SERVICE_WIRE_FLAGS_OFFSET = SERVICE_WIRE_COMMAND_OFFSET + 1;
|
|
6
|
+
export const SERVICE_WIRE_PREFIX_SIZE = SERVICE_WIRE_FLAGS_OFFSET + 1;
|
|
7
|
+
|
|
8
|
+
export const SERVICE_WIRE_TEXT8_MAX_BYTES = 255;
|
|
3
9
|
|
|
4
10
|
export type ServiceWireInvalid = (message: string) => never;
|
|
5
11
|
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import { UINT64_MAX } from '@zlink-systems/stream-wire';
|
|
2
|
+
import {
|
|
3
|
+
SERVICE_WIRE_COMMAND_OFFSET,
|
|
4
|
+
SERVICE_WIRE_FLAGS_OFFSET,
|
|
5
|
+
SERVICE_WIRE_MAJOR_OFFSET,
|
|
6
|
+
SERVICE_WIRE_PREFIX_SIZE
|
|
7
|
+
} from './service-wire-binary-primitives';
|
|
8
|
+
const PREFIX_SIZE = SERVICE_WIRE_PREFIX_SIZE;
|
|
2
9
|
const LIVENESS_FRAME_SIZE = PREFIX_SIZE + 8;
|
|
3
10
|
|
|
4
11
|
export interface ServiceWireDefinition {
|
|
@@ -46,16 +53,16 @@ export function createServiceWireCodec(definition: ServiceWireDefinition): Servi
|
|
|
46
53
|
) {
|
|
47
54
|
throw new RangeError('command must be a liveness command.');
|
|
48
55
|
}
|
|
49
|
-
if (record.probeId <= 0n || record.probeId >
|
|
56
|
+
if (record.probeId <= 0n || record.probeId > UINT64_MAX) {
|
|
50
57
|
throw new RangeError('probeId must be a non-zero unsigned 64-bit integer.');
|
|
51
58
|
}
|
|
52
59
|
|
|
53
60
|
const frame = Buffer.allocUnsafe(LIVENESS_FRAME_SIZE);
|
|
54
61
|
frame[0] = definition.magic[0];
|
|
55
62
|
frame[1] = definition.magic[1];
|
|
56
|
-
frame[
|
|
57
|
-
frame[
|
|
58
|
-
frame[
|
|
63
|
+
frame[SERVICE_WIRE_MAJOR_OFFSET] = definition.major;
|
|
64
|
+
frame[SERVICE_WIRE_COMMAND_OFFSET] = record.command;
|
|
65
|
+
frame[SERVICE_WIRE_FLAGS_OFFSET] = 0;
|
|
59
66
|
frame.writeBigUInt64BE(record.probeId, PREFIX_SIZE);
|
|
60
67
|
return frame;
|
|
61
68
|
},
|
|
@@ -64,9 +71,9 @@ export function createServiceWireCodec(definition: ServiceWireDefinition): Servi
|
|
|
64
71
|
if (frame[0] !== definition.magic[0] || frame[1] !== definition.magic[1]) {
|
|
65
72
|
fail('invalid-magic');
|
|
66
73
|
}
|
|
67
|
-
if (frame[
|
|
74
|
+
if (frame[SERVICE_WIRE_MAJOR_OFFSET] !== definition.major) fail('unsupported-major');
|
|
68
75
|
|
|
69
|
-
const command = frame[
|
|
76
|
+
const command = frame[SERVICE_WIRE_COMMAND_OFFSET];
|
|
70
77
|
if (!knownCommands.has(command)) fail('unknown-command');
|
|
71
78
|
if (
|
|
72
79
|
command !== definition.commands.livenessProbe &&
|
|
@@ -74,7 +81,7 @@ export function createServiceWireCodec(definition: ServiceWireDefinition): Servi
|
|
|
74
81
|
) {
|
|
75
82
|
fail('unknown-command');
|
|
76
83
|
}
|
|
77
|
-
if (frame[
|
|
84
|
+
if (frame[SERVICE_WIRE_FLAGS_OFFSET] !== 0) fail('forbidden-flag');
|
|
78
85
|
if (frame.byteLength < LIVENESS_FRAME_SIZE) fail('truncated-field');
|
|
79
86
|
if (frame.byteLength > LIVENESS_FRAME_SIZE) fail('trailing-byte');
|
|
80
87
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Generated from service-wire-v1.schema.json. Do not edit.
|
|
2
2
|
export const SERVICE_WIRE_MAGIC = [90, 77] as const;
|
|
3
3
|
export const SERVICE_WIRE_MAJOR = 1 as const;
|
|
4
|
+
export const SERVICE_WIRE_METADATA_BYTES = 1024 as const;
|
|
4
5
|
export const SERVICE_WIRE_REQUIRED_CAPABILITY = "framework-service-v13" as const;
|
|
5
6
|
export const SERVICE_FRAMEWORK_MULTIPART_PACKET_NAME = "ZLinkFrameworkMultipart" as const;
|
|
6
7
|
export const SERVICE_FRAMEWORK_MULTIPART_CONTENT_TYPE = "application/x-zlink-multipart" as const;
|