@zlink-systems/framework 0.25.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +5 -0
- package/dist/internal.js +16 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +28 -0
- package/dist/runtime/activation-admission.js +57 -0
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +42 -143
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +19 -17
- package/dist/runtime/actors/actor-handoff.d.ts +13 -7
- package/dist/runtime/actors/actor-handoff.js +36 -25
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +85 -123
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
- package/dist/runtime/actors/actor-remote-joiner.js +11 -17
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
- package/dist/runtime/actors/actor-request-deadline.js +31 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
- package/dist/runtime/actors/deferred-join-completion.js +21 -0
- package/dist/runtime/actors/index.d.ts +10 -8
- package/dist/runtime/actors/index.js +101 -73
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +7 -1
- package/dist/runtime/admission.js +11 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +8 -33
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
- package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -9
- package/dist/runtime/channels/channel-clients.js +68 -60
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.js +47 -29
- package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
- package/dist/runtime/channels/channel-outbound-operations.js +9 -18
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
- package/dist/runtime/channels/channel-runtime-manager.js +4 -12
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
- package/dist/runtime/channels/channel-socket-registry.js +296 -235
- package/dist/runtime/channels/channel-transports.d.ts +11 -20
- package/dist/runtime/channels/channel-transports.js +68 -47
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +133 -81
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.js +3 -2
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +22 -9
- package/dist/runtime/execution/index.js +107 -37
- package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
- package/dist/runtime/execution/serial-execution-queue.js +99 -26
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/listener-records.d.ts +11 -0
- package/dist/runtime/foundation/listener-records.js +20 -0
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
- package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
- package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
- package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
- package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
- package/dist/runtime/foundation/service-topology-registry.js +22 -61
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
- package/dist/runtime/host/actor-packet-relay.js +48 -91
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
- package/dist/runtime/host/actor-transfer-runtime.js +210 -256
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +19 -14
- package/dist/runtime/host/index.js +234 -175
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +11 -23
- package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
- package/dist/runtime/host/route-mesh-runtime.js +178 -257
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
- package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
- package/dist/runtime/host/spot-address-transport.d.ts +2 -3
- package/dist/runtime/host/spot-address-transport.js +34 -136
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
- package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
- package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
- package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +5 -10
- package/dist/runtime/locations/lifecycle.js +4 -33
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +303 -332
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +44 -30
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
- package/dist/runtime/locations/spot-location-claims.js +40 -23
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/submission-result.d.ts +3 -0
- package/dist/runtime/messaging/submission-result.js +48 -0
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
- package/dist/runtime/spots/index.d.ts +29 -29
- package/dist/runtime/spots/index.js +441 -313
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
- package/dist/runtime/spots/spot-activation-registry.js +27 -60
- package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
- package/dist/runtime/spots/spot-activation-state.js +4 -17
- package/dist/runtime/spots/spot-activation.d.ts +10 -9
- package/dist/runtime/spots/spot-activation.js +103 -81
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
- package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
- package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
- package/dist/runtime/spots/spot-actor-membership.js +44 -53
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-entry-activation.js +9 -21
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +6 -5
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
- package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +10 -37
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
- package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
- package/dist/runtime/spots/spot-serial-executor.js +9 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
- package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
- package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -19
- package/dist/runtime/streams/index.d.ts +15 -14
- package/dist/runtime/streams/index.js +38 -39
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +17 -8
- package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +1 -1
- package/dist/runtime/streams/session-calls.js +5 -4
- package/dist/runtime/streams/session-context.d.ts +6 -6
- package/dist/runtime/streams/session-context.js +22 -4
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/session-serial-executor.js +2 -2
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- package/src/internal.ts +15 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +72 -0
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +77 -204
- package/src/runtime/actors/actor-context.ts +45 -39
- package/src/runtime/actors/actor-handoff.ts +55 -45
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +174 -215
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +15 -36
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/actor-source-transfer.ts +5 -18
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +44 -0
- package/src/runtime/actors/index.ts +122 -88
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +13 -2
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +15 -42
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
- package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
- package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
- package/src/runtime/backend/raw-binding-port.ts +14 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +58 -29
- package/src/runtime/channels/channel-outbound-operations.ts +10 -31
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +8 -15
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +369 -262
- package/src/runtime/channels/channel-transports.ts +161 -115
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +175 -106
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +5 -2
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +116 -38
- package/src/runtime/execution/serial-execution-queue.ts +179 -34
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/listener-records.ts +21 -0
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
- package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
- package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
- package/src/runtime/foundation/service-topology-registry.ts +30 -79
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +57 -147
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +266 -418
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +408 -312
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +12 -44
- package/src/runtime/host/route-mesh-runtime.ts +236 -275
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
- package/src/runtime/host/spot-address-transport.ts +73 -195
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
- package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
- package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +16 -45
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +450 -478
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +90 -58
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +54 -26
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/submission-result.ts +57 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
- package/src/runtime/spots/index.ts +687 -437
- package/src/runtime/spots/spot-activation-registry.ts +42 -71
- package/src/runtime/spots/spot-activation-state.ts +4 -16
- package/src/runtime/spots/spot-activation.ts +167 -115
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
- package/src/runtime/spots/spot-actor-membership.ts +107 -75
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -33
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +29 -21
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
- package/src/runtime/spots/spot-outbound.ts +47 -68
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +10 -43
- package/src/runtime/spots/spot-serial-executor.ts +10 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +23 -37
- package/src/runtime/streams/index.ts +102 -88
- package/src/runtime/streams/managed-stream.ts +29 -10
- package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +6 -5
- package/src/runtime/streams/session-context.ts +54 -10
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/session-serial-executor.ts +2 -2
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
- package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -1,27 +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
4
|
import {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
5
|
+
decodeActorRequestCommand,
|
|
6
|
+
decodeActorSendCommand,
|
|
7
|
+
decodeMetadataFrame,
|
|
8
|
+
decodeInstanceRouteV1,
|
|
9
|
+
decodeSpotRequestCommand,
|
|
10
|
+
decodeSpotSendCommand,
|
|
11
|
+
encodeActorRequestCommand,
|
|
12
|
+
encodeActorSendCommand,
|
|
13
|
+
encodeApplicationPayloadEnvelopeV1,
|
|
14
|
+
encodeInstanceRouteV1,
|
|
15
|
+
encodeSpotRequestCommand,
|
|
16
|
+
encodeSpotSendCommand,
|
|
17
|
+
type ServiceWireDecoderContext
|
|
18
|
+
} from '../protocol/service_wire_codec.generated';
|
|
22
19
|
import {
|
|
23
|
-
decodeActorCreate49 as decodeGeneratedActorCreate49,
|
|
24
20
|
decodeActorJoin28,
|
|
21
|
+
decodeActorCreate49 as decodeGeneratedActorCreate49,
|
|
25
22
|
decodeRelocationCutover34 as decodeGeneratedRelocationCutover34,
|
|
26
23
|
decodeRelocationData31 as decodeGeneratedRelocationData31,
|
|
27
24
|
decodeRelocationFailed53 as decodeGeneratedRelocationFailed53,
|
|
@@ -50,20 +47,45 @@ import {
|
|
|
50
47
|
encodeUserSpotClose48 as encodeGeneratedUserSpotClose48,
|
|
51
48
|
encodeUserSpotCreate47 as encodeGeneratedUserSpotCreate47,
|
|
52
49
|
type ActorCreate49 as GeneratedActorCreate49,
|
|
50
|
+
type ServiceWireCoordinatorFence as GeneratedCoordinatorFence,
|
|
53
51
|
type RelocationObjectIdentity as GeneratedRelocationObjectIdentity,
|
|
54
52
|
type ReplyRelay33 as GeneratedReplyRelay33,
|
|
55
|
-
type ServiceWireCoordinatorFence as GeneratedCoordinatorFence,
|
|
56
53
|
type ServiceWireRequestSourceFence as GeneratedRequestSourceFence,
|
|
57
54
|
type ServiceWireRouteFence as GeneratedRouteFence,
|
|
58
|
-
type ServiceWireTargetFence as GeneratedTargetFence,
|
|
59
55
|
type SessionRelocationRoute44 as GeneratedSessionRelocationRoute44,
|
|
60
56
|
type SessionRelocationSeal42 as GeneratedSessionRelocationSeal42,
|
|
61
57
|
type SessionRelocationSealed43 as GeneratedSessionRelocationSealed43,
|
|
58
|
+
type ServiceWireTargetFence as GeneratedTargetFence,
|
|
62
59
|
type UserSpotClose48 as GeneratedUserSpotClose48,
|
|
63
60
|
type UserSpotCreate47 as GeneratedUserSpotCreate47
|
|
64
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;
|
|
65
87
|
|
|
66
|
-
const PREFIX_SIZE =
|
|
88
|
+
const PREFIX_SIZE = SERVICE_WIRE_PREFIX_SIZE;
|
|
67
89
|
const MAGIC_0 = SERVICE_WIRE_MAGIC[0];
|
|
68
90
|
const MAGIC_1 = SERVICE_WIRE_MAGIC[1];
|
|
69
91
|
const MAJOR = SERVICE_WIRE_MAJOR;
|
|
@@ -148,7 +170,7 @@ export type ServiceWireRelocationObject =
|
|
|
148
170
|
/** Shared CRC-32C wire bounds for the direct relocation payload transfer. */
|
|
149
171
|
export const RELOCATION_PAYLOAD_TOTAL_LENGTH_MAX = 274_877_906_944n;
|
|
150
172
|
export const RELOCATION_PAYLOAD_CHUNK_COUNT_MAX = 4096;
|
|
151
|
-
export
|
|
173
|
+
export { RELOCATION_STATE_CHUNK_DATA_MAX_BYTES } from '../../contracts/Configuration/InternalDefaults';
|
|
152
174
|
|
|
153
175
|
interface ServiceWireRelocationBase {
|
|
154
176
|
readonly relocation: ServiceWireOperationId;
|
|
@@ -337,6 +359,7 @@ export type ServiceSessionRelocationRoute =
|
|
|
337
359
|
readonly targetAuthorityOwnerGeneration: bigint;
|
|
338
360
|
readonly targetNodeRid: string;
|
|
339
361
|
readonly targetNodeGeneration: bigint;
|
|
362
|
+
readonly targetOwnerLeaseGeneration: bigint;
|
|
340
363
|
};
|
|
341
364
|
}
|
|
342
365
|
| {
|
|
@@ -1015,8 +1038,10 @@ export type ServiceStatefulWireRecord =
|
|
|
1015
1038
|
| {
|
|
1016
1039
|
readonly kind: 'spotSend' | 'spotRequest';
|
|
1017
1040
|
readonly correlation?: bigint;
|
|
1041
|
+
readonly operation: ServiceWireOperationId;
|
|
1042
|
+
readonly messageFollowHopCount: number;
|
|
1018
1043
|
readonly sourceSpotId: string;
|
|
1019
|
-
readonly target:
|
|
1044
|
+
readonly target: ServiceSpotRouteFence;
|
|
1020
1045
|
}
|
|
1021
1046
|
| {
|
|
1022
1047
|
readonly kind: 'logicalMulticast';
|
|
@@ -1027,6 +1052,8 @@ export type ServiceStatefulWireRecord =
|
|
|
1027
1052
|
| {
|
|
1028
1053
|
readonly kind: 'actorSend' | 'actorRequest';
|
|
1029
1054
|
readonly correlation?: bigint;
|
|
1055
|
+
readonly operation: ServiceWireOperationId;
|
|
1056
|
+
readonly messageFollowHopCount: number;
|
|
1030
1057
|
readonly sourceActor?: ServiceActorRef;
|
|
1031
1058
|
readonly target: ServiceActorRouteFence;
|
|
1032
1059
|
readonly boundSession?: ServiceBoundSessionSource;
|
|
@@ -1068,6 +1095,7 @@ export type ServiceStatefulWireRecord =
|
|
|
1068
1095
|
| {
|
|
1069
1096
|
readonly kind: 'instanceSpot';
|
|
1070
1097
|
readonly activation: 'ready';
|
|
1098
|
+
readonly instanceIntent: boolean;
|
|
1071
1099
|
readonly route: ServiceInstanceRouteFence;
|
|
1072
1100
|
readonly sourceNodeGeneration: bigint;
|
|
1073
1101
|
readonly sourceNodeRid: string;
|
|
@@ -1137,20 +1165,68 @@ export interface ServiceStatefulReply {
|
|
|
1137
1165
|
readonly tail?: ServiceStatefulReplyTail;
|
|
1138
1166
|
}
|
|
1139
1167
|
|
|
1168
|
+
const STATEFUL_MESSAGE_CONTEXT: ServiceWireDecoderContext = {
|
|
1169
|
+
effectiveCompleteMessageBytesMinusActualEnvelopeOverhead: 0xffff_fdf6,
|
|
1170
|
+
effectiveCompleteMessageBytes: 0xffff_ffff
|
|
1171
|
+
};
|
|
1172
|
+
const STATEFUL_HEADER_PAYLOAD = {
|
|
1173
|
+
packetName: 'wire',
|
|
1174
|
+
contentType: ZlinkStreamContentType.Json,
|
|
1175
|
+
payload: Buffer.from('{}')
|
|
1176
|
+
};
|
|
1177
|
+
|
|
1178
|
+
function generatedSpotFence(target: ServiceSpotRouteFence) {
|
|
1179
|
+
return {
|
|
1180
|
+
spot: { spotId: target.spot.spotId, objectGeneration: target.spot.generation },
|
|
1181
|
+
targetNodeRid: toGeneratedRoutingId(target.targetNodeRid, 'targetNodeRid'),
|
|
1182
|
+
targetNodeGeneration: target.targetNodeGeneration,
|
|
1183
|
+
expectedAuthorityOwnerGeneration: target.authorityOwnerGeneration,
|
|
1184
|
+
expectedOwnerLeaseGeneration: target.ownerLeaseGeneration
|
|
1185
|
+
};
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
function generatedActorFence(target: ServiceActorRouteFence) {
|
|
1189
|
+
return {
|
|
1190
|
+
actor: { actorId: target.actor.actorId, objectGeneration: target.actor.generation },
|
|
1191
|
+
targetNodeRid: toGeneratedRoutingId(target.actor.nodeRid, 'targetNodeRid'),
|
|
1192
|
+
targetNodeGeneration: target.targetNodeGeneration,
|
|
1193
|
+
expectedAuthorityOwnerGeneration: target.authorityOwnerGeneration,
|
|
1194
|
+
expectedOwnerLeaseGeneration: target.ownerLeaseGeneration
|
|
1195
|
+
};
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1140
1198
|
export function encodeSpotHeader(
|
|
1141
1199
|
kind: 'spotSend' | 'spotRequest',
|
|
1142
1200
|
sourceSpotId: string,
|
|
1143
1201
|
target: ServiceDirectSpotRouteFence,
|
|
1144
|
-
correlation?: bigint
|
|
1202
|
+
correlation?: bigint,
|
|
1203
|
+
operation: ServiceWireOperationId = { high: 0n, low: 1n },
|
|
1204
|
+
messageFollowHopCount = 0,
|
|
1205
|
+
metadataFrame?: Uint8Array
|
|
1145
1206
|
): Buffer {
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1207
|
+
const common = {
|
|
1208
|
+
flags: metadataFrame === undefined ? 0 : M6bServiceWireFlag.metadata,
|
|
1209
|
+
operation,
|
|
1210
|
+
messageFollowHopCount,
|
|
1211
|
+
sourceSpotId,
|
|
1212
|
+
targetSpot: generatedSpotFence(target),
|
|
1213
|
+
payload: STATEFUL_HEADER_PAYLOAD,
|
|
1214
|
+
...(metadataFrame === undefined
|
|
1215
|
+
? {}
|
|
1216
|
+
: { metadata: decodeMetadataFrame(metadataFrame, STATEFUL_MESSAGE_CONTEXT) })
|
|
1217
|
+
};
|
|
1218
|
+
const frames =
|
|
1219
|
+
kind === 'spotSend'
|
|
1220
|
+
? encodeSpotSendCommand({ command: kind, ...common }, STATEFUL_MESSAGE_CONTEXT)
|
|
1221
|
+
: encodeSpotRequestCommand(
|
|
1222
|
+
{
|
|
1223
|
+
command: kind,
|
|
1224
|
+
...common,
|
|
1225
|
+
correlation: requirePositive(correlation, 'correlation')
|
|
1226
|
+
},
|
|
1227
|
+
STATEFUL_MESSAGE_CONTEXT
|
|
1228
|
+
);
|
|
1229
|
+
return Buffer.from(frames[0]!);
|
|
1154
1230
|
}
|
|
1155
1231
|
|
|
1156
1232
|
export function encodeActorHeader(
|
|
@@ -1158,28 +1234,46 @@ export function encodeActorHeader(
|
|
|
1158
1234
|
target: ServiceActorRouteFence,
|
|
1159
1235
|
correlation?: bigint,
|
|
1160
1236
|
sourceActor?: ServiceActorRef,
|
|
1161
|
-
boundSession?: ServiceBoundSessionSource
|
|
1237
|
+
boundSession?: ServiceBoundSessionSource,
|
|
1238
|
+
operation: ServiceWireOperationId = { high: 0n, low: 1n },
|
|
1239
|
+
messageFollowHopCount = 0
|
|
1162
1240
|
): Buffer {
|
|
1163
1241
|
const flags =
|
|
1164
1242
|
boundSession === undefined
|
|
1165
1243
|
? 0
|
|
1166
1244
|
: M6bServiceWireFlag.boundSession | M6bServiceWireFlag.sourceSpotId;
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1245
|
+
const common = {
|
|
1246
|
+
flags,
|
|
1247
|
+
operation,
|
|
1248
|
+
messageFollowHopCount,
|
|
1249
|
+
sourceActor:
|
|
1250
|
+
sourceActor === undefined
|
|
1251
|
+
? { actorId: null }
|
|
1252
|
+
: { actorId: sourceActor.actorId, generation: sourceActor.generation },
|
|
1253
|
+
targetActor: generatedActorFence(target),
|
|
1175
1254
|
...(boundSession === undefined
|
|
1176
|
-
?
|
|
1177
|
-
:
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1255
|
+
? {}
|
|
1256
|
+
: {
|
|
1257
|
+
boundSessionTail: {
|
|
1258
|
+
sourceSessionRid: toGeneratedRoutingId(boundSession.sessionRid, 'sourceSessionRid'),
|
|
1259
|
+
sourceBindingGeneration: boundSession.bindingGeneration,
|
|
1260
|
+
sourceSessionSequence: boundSession.sequence
|
|
1261
|
+
}
|
|
1262
|
+
}),
|
|
1263
|
+
payload: STATEFUL_HEADER_PAYLOAD
|
|
1264
|
+
};
|
|
1265
|
+
const frames =
|
|
1266
|
+
kind === 'actorSend'
|
|
1267
|
+
? encodeActorSendCommand({ command: kind, ...common }, STATEFUL_MESSAGE_CONTEXT)
|
|
1268
|
+
: encodeActorRequestCommand(
|
|
1269
|
+
{
|
|
1270
|
+
command: kind,
|
|
1271
|
+
...common,
|
|
1272
|
+
correlation: requirePositive(correlation, 'correlation')
|
|
1273
|
+
},
|
|
1274
|
+
STATEFUL_MESSAGE_CONTEXT
|
|
1275
|
+
);
|
|
1276
|
+
return Buffer.from(frames[0]!);
|
|
1183
1277
|
}
|
|
1184
1278
|
|
|
1185
1279
|
export function encodeLogicalMulticastHeader(
|
|
@@ -1300,17 +1394,25 @@ export function encodeInstanceSpotHeader(
|
|
|
1300
1394
|
operationKind: 'send' | 'request',
|
|
1301
1395
|
operation: { readonly high: bigint; readonly low: bigint },
|
|
1302
1396
|
replyRouteId?: bigint,
|
|
1303
|
-
hasMetadata = false
|
|
1397
|
+
hasMetadata = false,
|
|
1398
|
+
instanceIntent = false
|
|
1304
1399
|
): Buffer {
|
|
1305
|
-
const
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
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
|
|
1314
1416
|
);
|
|
1315
1417
|
if (
|
|
1316
1418
|
operationKind === 'send' &&
|
|
@@ -1323,9 +1425,7 @@ export function encodeInstanceSpotHeader(
|
|
|
1323
1425
|
}
|
|
1324
1426
|
return concat(
|
|
1325
1427
|
prefix(M6bServiceWireCommand.instanceSpot, hasMetadata ? M6bServiceWireFlag.metadata : 0),
|
|
1326
|
-
|
|
1327
|
-
u16(routeBody.byteLength),
|
|
1328
|
-
routeBody,
|
|
1428
|
+
encodedRoute,
|
|
1329
1429
|
u64Any(sourceNodeGeneration),
|
|
1330
1430
|
rid(sourceNodeRid, 'sourceNodeRid'),
|
|
1331
1431
|
optionalRid(sourceSpotId),
|
|
@@ -1365,7 +1465,7 @@ export function encodeInstanceSpotActivationHeader(
|
|
|
1365
1465
|
);
|
|
1366
1466
|
return concat(
|
|
1367
1467
|
prefix(M6bServiceWireCommand.instanceSpot, hasMetadata ? M6bServiceWireFlag.metadata : 0),
|
|
1368
|
-
Buffer.of(
|
|
1468
|
+
Buffer.of(INSTANCE_ACTIVATION_VERSION),
|
|
1369
1469
|
u16(targetBody.byteLength),
|
|
1370
1470
|
targetBody,
|
|
1371
1471
|
u64Any(sourceNodeGeneration),
|
|
@@ -1409,18 +1509,24 @@ export function encodeMessageFollowHeader(
|
|
|
1409
1509
|
u64Any(record.originalOperation.low),
|
|
1410
1510
|
u64Any(record.originalReplyRouteId)
|
|
1411
1511
|
);
|
|
1412
|
-
if (body.byteLength >
|
|
1413
|
-
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
|
+
);
|
|
1414
1516
|
}
|
|
1415
1517
|
return concat(
|
|
1416
1518
|
prefix(M6bServiceWireCommand.messageFollow),
|
|
1417
|
-
Buffer.of(
|
|
1519
|
+
Buffer.of(MESSAGE_FOLLOW_VERSION),
|
|
1418
1520
|
u32(body.byteLength, 'messageFollow.length'),
|
|
1419
1521
|
body
|
|
1420
1522
|
);
|
|
1421
1523
|
}
|
|
1422
1524
|
|
|
1423
|
-
export function decodeStatefulHeader(
|
|
1525
|
+
export function decodeStatefulHeader(
|
|
1526
|
+
frame: Uint8Array,
|
|
1527
|
+
payloadFrame?: Uint8Array,
|
|
1528
|
+
metadataFrame?: Uint8Array
|
|
1529
|
+
): ServiceStatefulWireRecord {
|
|
1424
1530
|
switch (frame[3]) {
|
|
1425
1531
|
case M6bServiceWireCommand.userSpotCreate:
|
|
1426
1532
|
return fromGeneratedUserSpotCreate(decodeGeneratedUserSpotCreate47(frame));
|
|
@@ -1428,52 +1534,98 @@ export function decodeStatefulHeader(frame: Uint8Array): ServiceStatefulWireReco
|
|
|
1428
1534
|
return fromGeneratedUserSpotClose(decodeGeneratedUserSpotClose48(frame));
|
|
1429
1535
|
case M6bServiceWireCommand.actorCreate:
|
|
1430
1536
|
return fromGeneratedActorCreate(decodeGeneratedActorCreate49(frame));
|
|
1431
|
-
}
|
|
1432
|
-
const reader = new Reader(frame);
|
|
1433
|
-
const command = reader.prefix();
|
|
1434
|
-
switch (command.command) {
|
|
1435
1537
|
case M6bServiceWireCommand.spotSend:
|
|
1436
|
-
case M6bServiceWireCommand.spotRequest:
|
|
1437
|
-
requireFlags(command.flags, 0);
|
|
1438
|
-
const request = command.command === M6bServiceWireCommand.spotRequest;
|
|
1439
|
-
const correlation = request ? reader.nonZeroU64('correlation') : undefined;
|
|
1440
|
-
const sourceSpotId = reader.rid('sourceSpotId');
|
|
1441
|
-
const target = reader.directSpotFence();
|
|
1442
|
-
reader.end();
|
|
1443
|
-
return {
|
|
1444
|
-
kind: request ? 'spotRequest' : 'spotSend',
|
|
1445
|
-
...(correlation === undefined ? {} : { correlation }),
|
|
1446
|
-
sourceSpotId,
|
|
1447
|
-
target
|
|
1448
|
-
};
|
|
1449
|
-
}
|
|
1538
|
+
case M6bServiceWireCommand.spotRequest:
|
|
1450
1539
|
case M6bServiceWireCommand.actorSend:
|
|
1451
1540
|
case M6bServiceWireCommand.actorRequest: {
|
|
1452
|
-
const
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1541
|
+
const frames = [
|
|
1542
|
+
frame,
|
|
1543
|
+
...(metadataFrame === undefined ? [] : [metadataFrame]),
|
|
1544
|
+
payloadFrame ??
|
|
1545
|
+
encodeApplicationPayloadEnvelopeV1(STATEFUL_HEADER_PAYLOAD, STATEFUL_MESSAGE_CONTEXT)
|
|
1546
|
+
];
|
|
1547
|
+
try {
|
|
1548
|
+
if (
|
|
1549
|
+
frame[3] === M6bServiceWireCommand.spotSend ||
|
|
1550
|
+
frame[3] === M6bServiceWireCommand.spotRequest
|
|
1551
|
+
) {
|
|
1552
|
+
const decoded =
|
|
1553
|
+
frame[3] === M6bServiceWireCommand.spotSend
|
|
1554
|
+
? decodeSpotSendCommand(frames, STATEFUL_MESSAGE_CONTEXT)
|
|
1555
|
+
: decodeSpotRequestCommand(frames, STATEFUL_MESSAGE_CONTEXT);
|
|
1556
|
+
return {
|
|
1557
|
+
kind: decoded.command,
|
|
1558
|
+
...(decoded.command === 'spotRequest' ? { correlation: decoded.correlation } : {}),
|
|
1559
|
+
operation: decoded.operation,
|
|
1560
|
+
messageFollowHopCount: decoded.messageFollowHopCount,
|
|
1561
|
+
sourceSpotId: decoded.sourceSpotId,
|
|
1562
|
+
target: {
|
|
1563
|
+
spot: {
|
|
1564
|
+
spotId: decoded.targetSpot.spot.spotId,
|
|
1565
|
+
generation: decoded.targetSpot.spot.objectGeneration
|
|
1566
|
+
},
|
|
1567
|
+
targetNodeRid: fromGeneratedRoutingId(
|
|
1568
|
+
decoded.targetSpot.targetNodeRid,
|
|
1569
|
+
'targetNodeRid'
|
|
1570
|
+
),
|
|
1571
|
+
targetNodeGeneration: decoded.targetSpot.targetNodeGeneration,
|
|
1572
|
+
authorityOwnerGeneration: decoded.targetSpot.expectedAuthorityOwnerGeneration,
|
|
1573
|
+
ownerLeaseGeneration: decoded.targetSpot.expectedOwnerLeaseGeneration
|
|
1574
|
+
}
|
|
1575
|
+
};
|
|
1576
|
+
}
|
|
1577
|
+
const decoded =
|
|
1578
|
+
frame[3] === M6bServiceWireCommand.actorSend
|
|
1579
|
+
? decodeActorSendCommand(frames, STATEFUL_MESSAGE_CONTEXT)
|
|
1580
|
+
: decodeActorRequestCommand(frames, STATEFUL_MESSAGE_CONTEXT);
|
|
1581
|
+
const source = decoded.sourceActor;
|
|
1582
|
+
return {
|
|
1583
|
+
kind: decoded.command,
|
|
1584
|
+
...(decoded.command === 'actorRequest' ? { correlation: decoded.correlation } : {}),
|
|
1585
|
+
operation: decoded.operation,
|
|
1586
|
+
messageFollowHopCount: decoded.messageFollowHopCount,
|
|
1587
|
+
...(source.actorId === null
|
|
1588
|
+
? {}
|
|
1589
|
+
: {
|
|
1590
|
+
sourceActor: {
|
|
1591
|
+
nodeRid: '',
|
|
1592
|
+
actorId: source.actorId,
|
|
1593
|
+
generation: source.generation!
|
|
1594
|
+
}
|
|
1595
|
+
}),
|
|
1596
|
+
target: {
|
|
1597
|
+
actor: {
|
|
1598
|
+
nodeRid: fromGeneratedRoutingId(decoded.targetActor.targetNodeRid, 'targetNodeRid'),
|
|
1599
|
+
actorId: decoded.targetActor.actor.actorId,
|
|
1600
|
+
generation: decoded.targetActor.actor.objectGeneration
|
|
1601
|
+
},
|
|
1602
|
+
targetNodeGeneration: decoded.targetActor.targetNodeGeneration,
|
|
1603
|
+
authorityOwnerGeneration: decoded.targetActor.expectedAuthorityOwnerGeneration,
|
|
1604
|
+
ownerLeaseGeneration: decoded.targetActor.expectedOwnerLeaseGeneration
|
|
1605
|
+
},
|
|
1606
|
+
...(decoded.boundSessionTail === undefined
|
|
1607
|
+
? {}
|
|
1608
|
+
: {
|
|
1609
|
+
boundSession: {
|
|
1610
|
+
sessionRid: fromGeneratedRoutingId(
|
|
1611
|
+
decoded.boundSessionTail.sourceSessionRid,
|
|
1612
|
+
'sourceSessionRid'
|
|
1613
|
+
),
|
|
1614
|
+
bindingGeneration: decoded.boundSessionTail.sourceBindingGeneration,
|
|
1615
|
+
sequence: decoded.boundSessionTail.sourceSessionSequence
|
|
1616
|
+
}
|
|
1617
|
+
})
|
|
1618
|
+
};
|
|
1619
|
+
} catch (error) {
|
|
1620
|
+
throw new ServiceWireProtocolError(
|
|
1621
|
+
error instanceof Error ? error.message : 'Invalid stateful message.'
|
|
1622
|
+
);
|
|
1623
|
+
}
|
|
1476
1624
|
}
|
|
1625
|
+
}
|
|
1626
|
+
const reader = new Reader(frame);
|
|
1627
|
+
const command = reader.prefix();
|
|
1628
|
+
switch (command.command) {
|
|
1477
1629
|
case M6bServiceWireCommand.logicalMulticast: {
|
|
1478
1630
|
requireFlags(command.flags, 0);
|
|
1479
1631
|
const result = {
|
|
@@ -1590,34 +1742,53 @@ export function decodeStatefulHeader(frame: Uint8Array): ServiceStatefulWireReco
|
|
|
1590
1742
|
if ((command.flags & ~M6bServiceWireFlag.metadata) !== 0) {
|
|
1591
1743
|
fail(`Invalid command flags '${command.flags}'.`);
|
|
1592
1744
|
}
|
|
1745
|
+
const routeStart = reader.offset;
|
|
1593
1746
|
const version = reader.u8('instanceRoute.version');
|
|
1594
|
-
if (version !==
|
|
1747
|
+
if (version !== INSTANCE_ROUTE_VERSION && version !== INSTANCE_ACTIVATION_VERSION)
|
|
1748
|
+
fail('Unsupported Instance route version.');
|
|
1595
1749
|
const routeLength = reader.u16('instanceRoute.length');
|
|
1596
1750
|
const routeEnd = reader.offset + routeLength;
|
|
1597
|
-
const
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
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
|
+
};
|
|
1602
1776
|
const route: ServiceInstanceRouteFence | undefined =
|
|
1603
|
-
|
|
1777
|
+
generatedReadyRoute?.routeKind === 'ready'
|
|
1604
1778
|
? {
|
|
1605
1779
|
...commonTarget,
|
|
1606
|
-
|
|
1607
|
-
ownerId: reader.text8('ownerId'),
|
|
1608
|
-
authorityOwnerGeneration: reader.nonZeroU64('authorityOwnerGeneration'),
|
|
1609
|
-
leaseGeneration: reader.nonZeroU64('leaseGeneration'),
|
|
1610
|
-
storeVersion: reader.text16('storeVersion')
|
|
1780
|
+
...generatedReadyRoute.authority
|
|
1611
1781
|
}
|
|
1612
1782
|
: undefined;
|
|
1613
1783
|
const target: ServiceInstanceActivationTarget | undefined =
|
|
1614
|
-
version ===
|
|
1784
|
+
version === INSTANCE_ACTIVATION_VERSION
|
|
1615
1785
|
? {
|
|
1616
1786
|
...commonTarget,
|
|
1617
1787
|
stableType: reader.text16('stableType'),
|
|
1618
1788
|
descriptorVersion: reader.text16('descriptorVersion')
|
|
1619
1789
|
}
|
|
1620
1790
|
: undefined;
|
|
1791
|
+
if (generatedReadyRoute !== undefined) reader.offset = routeEnd;
|
|
1621
1792
|
if (reader.offset !== routeEnd) fail('Invalid Instance route body length.');
|
|
1622
1793
|
const sourceNodeGeneration = reader.nonZeroU64('sourceNodeGeneration');
|
|
1623
1794
|
const sourceNodeRid = reader.rid('sourceNodeRid');
|
|
@@ -1630,16 +1801,21 @@ export function decodeStatefulHeader(frame: Uint8Array): ServiceStatefulWireReco
|
|
|
1630
1801
|
};
|
|
1631
1802
|
const operationKind = operationValue === 1 ? ('send' as const) : ('request' as const);
|
|
1632
1803
|
if (
|
|
1633
|
-
version ===
|
|
1804
|
+
version === INSTANCE_ROUTE_VERSION &&
|
|
1634
1805
|
((operationKind === 'send' && (operation.high !== 0n || operation.low !== 0n)) ||
|
|
1635
1806
|
(operationKind === 'request' && operation.high === 0n && operation.low === 0n))
|
|
1636
1807
|
) {
|
|
1637
1808
|
fail('Invalid Instance operation identity.');
|
|
1638
1809
|
}
|
|
1639
|
-
if (
|
|
1810
|
+
if (
|
|
1811
|
+
version === INSTANCE_ACTIVATION_VERSION &&
|
|
1812
|
+
operation.high === 0n &&
|
|
1813
|
+
operation.low === 0n
|
|
1814
|
+
) {
|
|
1640
1815
|
fail('Instance activation requires a non-zero operation identity.');
|
|
1641
1816
|
}
|
|
1642
|
-
const deadlineUnixMs =
|
|
1817
|
+
const deadlineUnixMs =
|
|
1818
|
+
version === INSTANCE_ACTIVATION_VERSION ? reader.nonZeroU64('deadlineUnixMs') : undefined;
|
|
1643
1819
|
const replyRouteId =
|
|
1644
1820
|
operationKind === 'request' ? reader.nonZeroU64('replyRouteId') : undefined;
|
|
1645
1821
|
reader.end();
|
|
@@ -1652,8 +1828,13 @@ export function decodeStatefulHeader(frame: Uint8Array): ServiceStatefulWireReco
|
|
|
1652
1828
|
operation,
|
|
1653
1829
|
...(replyRouteId === undefined ? {} : { replyRouteId })
|
|
1654
1830
|
};
|
|
1655
|
-
return version ===
|
|
1656
|
-
? {
|
|
1831
|
+
return version === INSTANCE_ROUTE_VERSION
|
|
1832
|
+
? {
|
|
1833
|
+
...common,
|
|
1834
|
+
activation: 'ready',
|
|
1835
|
+
route: route!,
|
|
1836
|
+
instanceIntent: generatedReadyRoute!.instanceIntent === 'true'
|
|
1837
|
+
}
|
|
1657
1838
|
: {
|
|
1658
1839
|
...common,
|
|
1659
1840
|
activation: 'missing',
|
|
@@ -1663,12 +1844,12 @@ export function decodeStatefulHeader(frame: Uint8Array): ServiceStatefulWireReco
|
|
|
1663
1844
|
}
|
|
1664
1845
|
case M6bServiceWireCommand.messageFollow: {
|
|
1665
1846
|
requireFlags(command.flags, 0);
|
|
1666
|
-
if (reader.u8('messageFollow.version') !==
|
|
1847
|
+
if (reader.u8('messageFollow.version') !== MESSAGE_FOLLOW_VERSION) {
|
|
1667
1848
|
fail('Unsupported Message Follow version.');
|
|
1668
1849
|
}
|
|
1669
1850
|
const length = reader.u32('messageFollow.length');
|
|
1670
1851
|
const end = reader.offset + length;
|
|
1671
|
-
if (length >
|
|
1852
|
+
if (length > MESSAGE_FOLLOW_MAX_BODY_BYTES || end > reader.bytes.byteLength) {
|
|
1672
1853
|
fail('Invalid Message Follow body length.');
|
|
1673
1854
|
}
|
|
1674
1855
|
const record: ServiceMessageFollowRecord = {
|
|
@@ -2097,7 +2278,11 @@ function applicationPayload(value: NonNullable<ServiceMaintenanceReplyRelay['pay
|
|
|
2097
2278
|
u32(value.bytes.byteLength, 'payload.length'),
|
|
2098
2279
|
value.bytes
|
|
2099
2280
|
);
|
|
2100
|
-
return concat(
|
|
2281
|
+
return concat(
|
|
2282
|
+
Buffer.of(APPLICATION_PAYLOAD_VERSION),
|
|
2283
|
+
u32(body.byteLength, 'applicationPayload.length'),
|
|
2284
|
+
body
|
|
2285
|
+
);
|
|
2101
2286
|
}
|
|
2102
2287
|
|
|
2103
2288
|
function prefix(command: number, flags = 0): Buffer {
|
|
@@ -2124,20 +2309,6 @@ function actorAuthorityFence(value: ServiceBoundSessionActorAuthority): Buffer {
|
|
|
2124
2309
|
);
|
|
2125
2310
|
}
|
|
2126
2311
|
|
|
2127
|
-
function spotFence(value: ServiceSpotRouteFence): Buffer {
|
|
2128
|
-
return concat(
|
|
2129
|
-
spotRef(value.spot),
|
|
2130
|
-
rid(value.targetNodeRid, 'targetNodeRid'),
|
|
2131
|
-
u64(value.targetNodeGeneration),
|
|
2132
|
-
u64(value.authorityOwnerGeneration),
|
|
2133
|
-
u64(value.ownerLeaseGeneration)
|
|
2134
|
-
);
|
|
2135
|
-
}
|
|
2136
|
-
|
|
2137
|
-
function directSpotFence(value: ServiceDirectSpotRouteFence): Buffer {
|
|
2138
|
-
return concat(spotFence(value), text16(value.storeVersion, 'storeVersion'));
|
|
2139
|
-
}
|
|
2140
|
-
|
|
2141
2312
|
function messageFollowRoute(value: ServiceMessageFollowRoute): Buffer {
|
|
2142
2313
|
const body =
|
|
2143
2314
|
value.kind === 'actor'
|
|
@@ -2196,7 +2367,7 @@ function validateMessageFollowRecord(
|
|
|
2196
2367
|
if (value.originalOperation.high === 0n && value.originalOperation.low === 0n) {
|
|
2197
2368
|
invalid('Message Follow originalOperation must not be zero.');
|
|
2198
2369
|
}
|
|
2199
|
-
if (value.originalReplyRouteId < 0n || value.originalReplyRouteId >
|
|
2370
|
+
if (value.originalReplyRouteId < 0n || value.originalReplyRouteId > UINT64_MAX) {
|
|
2200
2371
|
invalid('Message Follow originalReplyRouteId must be a u64.');
|
|
2201
2372
|
}
|
|
2202
2373
|
}
|
|
@@ -2205,12 +2376,6 @@ function actorRef(value: ServiceActorRef): Buffer {
|
|
|
2205
2376
|
return concat(text8(value.actorId, 'actorId'), u64(value.generation));
|
|
2206
2377
|
}
|
|
2207
2378
|
|
|
2208
|
-
function optionalActor(value: ServiceActorRef | undefined): Buffer {
|
|
2209
|
-
return value === undefined
|
|
2210
|
-
? Buffer.of(0)
|
|
2211
|
-
: concat(text8(value.actorId, 'sourceActorId'), u64(value.generation));
|
|
2212
|
-
}
|
|
2213
|
-
|
|
2214
2379
|
function spotRef(value: ServiceSpotRef): Buffer {
|
|
2215
2380
|
return concat(rid(value.spotId, 'spotId'), u64(value.generation));
|
|
2216
2381
|
}
|
|
@@ -2262,7 +2427,7 @@ function u64(value: bigint): Buffer {
|
|
|
2262
2427
|
}
|
|
2263
2428
|
|
|
2264
2429
|
function u64Any(value: bigint): Buffer {
|
|
2265
|
-
if (value < 0n || value >
|
|
2430
|
+
if (value < 0n || value > UINT64_MAX) {
|
|
2266
2431
|
throw new RangeError('u64 value is out of range.');
|
|
2267
2432
|
}
|
|
2268
2433
|
const result = Buffer.alloc(8);
|
|
@@ -2271,7 +2436,7 @@ function u64Any(value: bigint): Buffer {
|
|
|
2271
2436
|
}
|
|
2272
2437
|
|
|
2273
2438
|
function requirePositive(value: bigint | undefined, name: string): bigint {
|
|
2274
|
-
if (value === undefined || value < 1n || value >
|
|
2439
|
+
if (value === undefined || value < 1n || value > UINT64_MAX) {
|
|
2275
2440
|
throw new RangeError(`${name} must be a non-zero u64.`);
|
|
2276
2441
|
}
|
|
2277
2442
|
return value;
|
|
@@ -2409,20 +2574,6 @@ class Reader {
|
|
|
2409
2574
|
};
|
|
2410
2575
|
}
|
|
2411
2576
|
|
|
2412
|
-
optionalActor(): ServiceActorRef | undefined {
|
|
2413
|
-
const length = this.u8('sourceActorId.length');
|
|
2414
|
-
if (length === 0) return undefined;
|
|
2415
|
-
this.need(length, 'sourceActorId');
|
|
2416
|
-
const bytes = this.bytes.subarray(this.offset, this.offset + length);
|
|
2417
|
-
this.offset += length;
|
|
2418
|
-
const actorId = decodeCanonicalServiceWireText(bytes, 'sourceActorId', fail);
|
|
2419
|
-
return {
|
|
2420
|
-
nodeRid: '',
|
|
2421
|
-
actorId,
|
|
2422
|
-
generation: this.nonZeroU64('sourceActorGeneration')
|
|
2423
|
-
};
|
|
2424
|
-
}
|
|
2425
|
-
|
|
2426
2577
|
spotRef(): ServiceSpotRef {
|
|
2427
2578
|
return {
|
|
2428
2579
|
spotId: this.rid('spotId'),
|
|
@@ -2441,24 +2592,6 @@ class Reader {
|
|
|
2441
2592
|
};
|
|
2442
2593
|
}
|
|
2443
2594
|
|
|
2444
|
-
spotFence(): ServiceSpotRouteFence {
|
|
2445
|
-
const spot = this.spotRef();
|
|
2446
|
-
return {
|
|
2447
|
-
spot,
|
|
2448
|
-
targetNodeRid: this.rid('targetNodeRid'),
|
|
2449
|
-
targetNodeGeneration: this.nonZeroU64('targetNodeGeneration'),
|
|
2450
|
-
authorityOwnerGeneration: this.nonZeroU64('authorityOwnerGeneration'),
|
|
2451
|
-
ownerLeaseGeneration: this.nonZeroU64('ownerLeaseGeneration')
|
|
2452
|
-
};
|
|
2453
|
-
}
|
|
2454
|
-
|
|
2455
|
-
directSpotFence(): ServiceDirectSpotRouteFence {
|
|
2456
|
-
return {
|
|
2457
|
-
...this.spotFence(),
|
|
2458
|
-
storeVersion: this.text16('storeVersion')
|
|
2459
|
-
};
|
|
2460
|
-
}
|
|
2461
|
-
|
|
2462
2595
|
messageFollowRoute(name: string): ServiceMessageFollowRoute {
|
|
2463
2596
|
const kind = this.u8(`${name}.objectKind`);
|
|
2464
2597
|
const length = this.u16(`${name}.length`);
|
|
@@ -2827,7 +2960,7 @@ class FrozenReader {
|
|
|
2827
2960
|
}
|
|
2828
2961
|
|
|
2829
2962
|
applicationPayload(): NonNullable<ServiceMaintenanceReplyRelay['payload']> {
|
|
2830
|
-
if (this.u8('applicationPayload.version') !==
|
|
2963
|
+
if (this.u8('applicationPayload.version') !== APPLICATION_PAYLOAD_VERSION) {
|
|
2831
2964
|
fail('Application payload envelope version must be one.');
|
|
2832
2965
|
}
|
|
2833
2966
|
const body = this.body32('application payload');
|
|
@@ -2984,24 +3117,21 @@ class FrozenReader {
|
|
|
2984
3117
|
}
|
|
2985
3118
|
|
|
2986
3119
|
private instanceRoute(): void {
|
|
3120
|
+
const start = this.offset;
|
|
2987
3121
|
const kind = this.u8('instanceRouteKind');
|
|
2988
3122
|
if (kind < 1 || kind > 2) fail('Invalid Instance route kind.');
|
|
2989
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
|
+
}
|
|
2990
3128
|
body.rid8('targetNodeRid');
|
|
2991
3129
|
body.nonZeroU64('targetNodeGeneration');
|
|
2992
3130
|
body.text8('targetSpotId');
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
body.nonZeroU64('leaseGeneration');
|
|
2998
|
-
body.text16('storeVersion');
|
|
2999
|
-
} else {
|
|
3000
|
-
body.text8('targetMeshName');
|
|
3001
|
-
body.text8('stableType');
|
|
3002
|
-
body.text8('targetDescriptorVersion');
|
|
3003
|
-
body.nonZeroU64('deadlineUnixMs');
|
|
3004
|
-
}
|
|
3131
|
+
body.text8('targetMeshName');
|
|
3132
|
+
body.text8('stableType');
|
|
3133
|
+
body.text8('targetDescriptorVersion');
|
|
3134
|
+
body.nonZeroU64('deadlineUnixMs');
|
|
3005
3135
|
body.end('Instance route');
|
|
3006
3136
|
}
|
|
3007
3137
|
|