@zlink-systems/framework 0.30.1 → 0.30.2
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/ZLinkEncodedPayload.d.ts +6 -0
- package/dist/contracts/Common/ZLinkEncodedPayload.js +18 -3
- package/dist/contracts/Common/encoded-payload-storage.d.ts +1 -1
- package/dist/contracts/Common/encoded-payload-storage.js +5 -2
- package/dist/contracts/Configuration/Builders.d.ts +1 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +2 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +5 -1
- package/dist/contracts/Configuration/RegistrationBuilders.js +2 -2
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +2 -2
- package/dist/contracts/Locations/Rows.d.ts +2 -0
- package/dist/contracts/Spots/Contracts.d.ts +4 -0
- package/dist/contracts/Spots/ZLinkSpot.d.ts +3 -3
- package/dist/runtime/abort.d.ts +5 -0
- package/dist/runtime/abort.js +10 -0
- package/dist/runtime/actors/actor-authority-publication.js +3 -2
- package/dist/runtime/actors/actor-client.d.ts +0 -1
- package/dist/runtime/actors/actor-client.js +38 -45
- package/dist/runtime/actors/actor-context.d.ts +2 -0
- package/dist/runtime/actors/actor-context.js +46 -9
- package/dist/runtime/actors/actor-handoff.d.ts +7 -3
- package/dist/runtime/actors/actor-handoff.js +212 -88
- package/dist/runtime/actors/actor-join-relocation.d.ts +2 -0
- package/dist/runtime/actors/actor-local-native-join.js +4 -0
- package/dist/runtime/actors/actor-mailbox.js +27 -1
- package/dist/runtime/actors/actor-remote-joiner.js +3 -1
- package/dist/runtime/actors/actor-reply.d.ts +4 -0
- package/dist/runtime/actors/actor-reply.js +29 -0
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +2 -0
- package/dist/runtime/actors/actor-runtime-state.js +2 -20
- package/dist/runtime/actors/actor-source-transfer.d.ts +1 -17
- package/dist/runtime/actors/index.d.ts +6 -2
- package/dist/runtime/actors/index.js +37 -21
- package/dist/runtime/actors/session-disconnected-wire.d.ts +8 -0
- package/dist/runtime/actors/session-disconnected-wire.js +48 -0
- package/dist/runtime/admission.d.ts +9 -1
- package/dist/runtime/admission.js +55 -32
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +13 -0
- package/dist/runtime/application-jobs/application-job-queue-scope.js +27 -1
- package/dist/runtime/application-jobs/contracts.d.ts +2 -0
- package/dist/runtime/backend/contracts/index.d.ts +19 -3
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +2 -2
- package/dist/runtime/backend/mesh-completion-table.js +5 -0
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +26 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +193 -107
- package/dist/runtime/backend/node/node-raw-binding-port.js +90 -58
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +33 -8
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +142 -143
- package/dist/runtime/backend/node/node-socket-backend-adapter.d.ts +1 -1
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +5 -5
- package/dist/runtime/channels/channel-clients.d.ts +1 -0
- package/dist/runtime/channels/channel-clients.js +20 -5
- package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +22 -3
- package/dist/runtime/channels/channel-dispatch-pipeline.js +103 -57
- package/dist/runtime/channels/channel-dispatchers.d.ts +3 -2
- package/dist/runtime/channels/channel-dispatchers.js +44 -37
- package/dist/runtime/channels/channel-envelope.d.ts +1 -0
- package/dist/runtime/channels/channel-envelope.js +74 -31
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +4 -3
- package/dist/runtime/channels/channel-runtime-lifecycle.js +19 -24
- package/dist/runtime/channels/channel-runtime-manager.d.ts +3 -2
- package/dist/runtime/channels/channel-runtime-manager.js +4 -4
- package/dist/runtime/channels/channel-transports.d.ts +0 -1
- package/dist/runtime/channels/channel-transports.js +35 -33
- package/dist/runtime/channels/client-server-location-runtime.js +5 -4
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +2 -1
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/fanout-location-runtime.js +3 -3
- package/dist/runtime/diagnostics/flow-context.js +19 -7
- package/dist/runtime/diagnostics/index.js +4 -9
- package/dist/runtime/diagnostics/message-flow.d.ts +8 -0
- package/dist/runtime/diagnostics/message-flow.js +35 -5
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +2 -2
- package/dist/runtime/diagnostics/runtime-metrics.js +10 -8
- package/dist/runtime/execution/index.d.ts +4 -2
- package/dist/runtime/execution/index.js +33 -10
- package/dist/runtime/execution/serial-execution-queue.d.ts +4 -0
- package/dist/runtime/execution/serial-execution-queue.js +21 -2
- package/dist/runtime/execution/state-lane.d.ts +2 -0
- package/dist/runtime/execution/state-lane.js +5 -0
- package/dist/runtime/foundation/operation-registry.d.ts +25 -1
- package/dist/runtime/foundation/operation-registry.js +86 -18
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +39 -3
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +151 -55
- package/dist/runtime/foundation/service-liveness-registry.d.ts +12 -1
- package/dist/runtime/foundation/service-liveness-registry.js +38 -0
- package/dist/runtime/foundation/service-mailbox.d.ts +7 -0
- package/dist/runtime/foundation/service-maintenance-runtime.js +1 -6
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +2 -3
- package/dist/runtime/foundation/service-relocation-object-owner.js +48 -35
- package/dist/runtime/foundation/service-relocation-runtime.js +7 -3
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +8 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +2 -1
- package/dist/runtime/foundation/service-stateful-registry.d.ts +5 -4
- package/dist/runtime/foundation/service-stateful-registry.js +24 -26
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +72 -6
- package/dist/runtime/foundation/service-stateful-runtime.js +444 -117
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +14 -1
- package/dist/runtime/foundation/service-stateful-wire-codec.js +48 -27
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +6 -1
- package/dist/runtime/foundation/service-wire-binary-primitives.js +27 -11
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +1 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +10 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +166 -53
- package/dist/runtime/host/actor-packet-relay.d.ts +6 -4
- package/dist/runtime/host/actor-packet-relay.js +59 -72
- package/dist/runtime/host/actor-placement-coordinator.js +25 -8
- package/dist/runtime/host/actor-transfer-runtime.d.ts +7 -31
- package/dist/runtime/host/actor-transfer-runtime.js +85 -331
- package/dist/runtime/host/application-job-queue.d.ts +24 -3
- package/dist/runtime/host/application-job-queue.js +28 -41
- package/dist/runtime/host/index.d.ts +5 -1
- package/dist/runtime/host/index.js +171 -97
- package/dist/runtime/host/location-runtime-owner.js +2 -6
- package/dist/runtime/host/mesh-router-resolver.d.ts +4 -0
- package/dist/runtime/host/mesh-router-resolver.js +14 -6
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -4
- package/dist/runtime/host/remote-bound-session-relay.js +71 -190
- package/dist/runtime/host/route-mesh-runtime.d.ts +2 -2
- package/dist/runtime/host/route-mesh-runtime.js +5 -3
- package/dist/runtime/host/runtime-shutdown.d.ts +1 -0
- package/dist/runtime/host/runtime-shutdown.js +3 -2
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +17 -7
- package/dist/runtime/host/service-relocation-host-runtime.js +550 -367
- package/dist/runtime/host/spot-runtime-options-factory.js +15 -7
- package/dist/runtime/host/user-spot-creation-coordinator.js +33 -84
- package/dist/runtime/locations/auto-connect-loop.d.ts +2 -0
- package/dist/runtime/locations/auto-connect-loop.js +22 -14
- package/dist/runtime/locations/auto-connect-reconciler.js +0 -6
- package/dist/runtime/locations/auto-connect-types.d.ts +0 -1
- package/dist/runtime/locations/descriptor-publication.d.ts +4 -0
- package/dist/runtime/locations/descriptor-publication.js +11 -0
- package/dist/runtime/locations/domain-store-contract.d.ts +1 -0
- package/dist/runtime/locations/in-memory-authority-store.d.ts +7 -1
- package/dist/runtime/locations/in-memory-authority-store.js +56 -19
- package/dist/runtime/locations/in-memory-location-store.js +1 -10
- package/dist/runtime/locations/index.d.ts +1 -0
- package/dist/runtime/locations/index.js +1 -0
- package/dist/runtime/locations/lease-tracker.js +1 -6
- package/dist/runtime/locations/location-store-repository.d.ts +51 -1
- package/dist/runtime/locations/location-store-repository.js +363 -139
- package/dist/runtime/locations/relocation-blob.d.ts +18 -1
- package/dist/runtime/locations/relocation-blob.js +52 -1
- package/dist/runtime/locations/request-source-resolver.d.ts +37 -0
- package/dist/runtime/locations/request-source-resolver.js +80 -0
- package/dist/runtime/locations/resolvers.js +1 -1
- package/dist/runtime/locations/runtime.d.ts +6 -2
- package/dist/runtime/locations/runtime.js +37 -30
- package/dist/runtime/messaging/payload-codec.d.ts +7 -1
- package/dist/runtime/messaging/payload-codec.js +7 -6
- package/dist/runtime/messaging/request-result.js +29 -26
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +19 -1
- package/dist/runtime/protocol/service_wire_codec.generated.js +85 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +7 -1
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +23 -7
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +3 -2
- package/dist/runtime/spots/index.d.ts +18 -11
- package/dist/runtime/spots/index.js +234 -176
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -2
- package/dist/runtime/spots/spot-activation-registry.js +21 -11
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +7 -7
- package/dist/runtime/spots/spot-activation.d.ts +6 -3
- package/dist/runtime/spots/spot-activation.js +123 -44
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -0
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +13 -22
- package/dist/runtime/spots/spot-actor-membership.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-membership.js +0 -8
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +33 -8
- package/dist/runtime/spots/spot-actor-packet-drain.js +5 -33
- package/dist/runtime/spots/spot-entry-activation.d.ts +2 -0
- package/dist/runtime/spots/spot-entry-activation.js +14 -9
- package/dist/runtime/spots/spot-handler-registry.d.ts +4 -3
- package/dist/runtime/spots/spot-handler-registry.js +6 -2
- package/dist/runtime/spots/spot-manager-internal-contracts.d.ts +2 -2
- package/dist/runtime/spots/spot-manager-public.js +2 -2
- package/dist/runtime/spots/spot-node-autoconnect.d.ts +2 -1
- package/dist/runtime/spots/spot-node-autoconnect.js +18 -39
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -2
- package/dist/runtime/spots/spot-node-runtime-manager.js +115 -50
- package/dist/runtime/spots/spot-outbound.js +3 -3
- package/dist/runtime/spots/spot-remote-codec.js +5 -1
- package/dist/runtime/spots/spot-runtime-ports.d.ts +0 -1
- package/dist/runtime/spots/spot-serial-executor.d.ts +10 -0
- package/dist/runtime/spots/spot-serial-executor.js +61 -8
- package/dist/runtime/spots/spot-serial-turn-executor.js +19 -2
- package/dist/runtime/spots/spot-subscription-dispatch.js +1 -1
- package/dist/runtime/spots/spot-timer.d.ts +57 -5
- package/dist/runtime/spots/spot-timer.js +287 -103
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +42 -11
- package/dist/runtime/streams/actor-session-binding-registry.js +165 -48
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +8 -4
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +2 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +15 -8
- package/dist/runtime/streams/bound-session-service.d.ts +1 -1
- package/dist/runtime/streams/bound-session-service.js +6 -11
- package/dist/runtime/streams/index.d.ts +3 -2
- package/dist/runtime/streams/index.js +6 -4
- package/dist/runtime/streams/managed-stream.js +3 -2
- package/dist/runtime/streams/native-fallback-bound-session.js +8 -73
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -8
- package/dist/runtime/streams/session-actor-coordinator.js +15 -32
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +3 -10
- package/dist/runtime/streams/stream-session-runtime.js +1 -4
- package/dist/runtime/workers/index.js +1 -1
- package/package.json +3 -3
- package/src/contracts/Common/ZLinkEncodedPayload.ts +24 -4
- package/src/contracts/Common/encoded-payload-storage.ts +6 -3
- package/src/contracts/Configuration/Builders.ts +4 -1
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +7 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +6 -2
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -1
- package/src/contracts/Locations/Rows.ts +2 -0
- package/src/contracts/Spots/Contracts.ts +8 -0
- package/src/contracts/Spots/ZLinkSpot.ts +3 -3
- package/src/runtime/abort.ts +12 -0
- package/src/runtime/actors/actor-authority-publication.ts +3 -2
- package/src/runtime/actors/actor-client.ts +61 -70
- package/src/runtime/actors/actor-context.ts +49 -9
- package/src/runtime/actors/actor-handoff.ts +282 -106
- package/src/runtime/actors/actor-join-relocation.ts +2 -0
- package/src/runtime/actors/actor-local-native-join.ts +4 -0
- package/src/runtime/actors/actor-mailbox.ts +40 -2
- package/src/runtime/actors/actor-remote-joiner.ts +6 -1
- package/src/runtime/actors/actor-reply.ts +42 -0
- package/src/runtime/actors/actor-runtime-contracts.ts +2 -0
- package/src/runtime/actors/actor-runtime-state.ts +2 -20
- package/src/runtime/actors/actor-source-transfer.ts +1 -34
- package/src/runtime/actors/index.ts +41 -27
- package/src/runtime/actors/session-disconnected-wire.ts +66 -0
- package/src/runtime/admission.ts +69 -34
- package/src/runtime/application-jobs/application-job-queue-scope.ts +33 -1
- package/src/runtime/application-jobs/contracts.ts +2 -0
- package/src/runtime/backend/contracts/index.ts +39 -4
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +5 -3
- package/src/runtime/backend/mesh-completion-table.ts +4 -0
- package/src/runtime/backend/mesh-dispatch-pump.ts +223 -124
- package/src/runtime/backend/node/node-raw-binding-port.ts +106 -70
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +221 -170
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -5
- package/src/runtime/channels/channel-clients.ts +49 -24
- package/src/runtime/channels/channel-dispatch-pipeline.ts +173 -124
- package/src/runtime/channels/channel-dispatchers.ts +116 -72
- package/src/runtime/channels/channel-envelope.ts +105 -36
- package/src/runtime/channels/channel-runtime-lifecycle.ts +13 -13
- package/src/runtime/channels/channel-runtime-manager.ts +12 -5
- package/src/runtime/channels/channel-transports.ts +49 -58
- package/src/runtime/channels/client-server-location-runtime.ts +11 -10
- package/src/runtime/channels/dispatch-error-reporter.ts +4 -2
- package/src/runtime/channels/fanout-location-runtime.ts +17 -9
- package/src/runtime/diagnostics/flow-context.ts +20 -7
- package/src/runtime/diagnostics/index.ts +1 -7
- package/src/runtime/diagnostics/message-flow.ts +47 -9
- package/src/runtime/diagnostics/runtime-metrics.ts +12 -10
- package/src/runtime/execution/index.ts +40 -14
- package/src/runtime/execution/serial-execution-queue.ts +31 -4
- package/src/runtime/execution/state-lane.ts +7 -0
- package/src/runtime/foundation/operation-registry.ts +98 -20
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +244 -67
- package/src/runtime/foundation/service-liveness-registry.ts +39 -0
- package/src/runtime/foundation/service-mailbox.ts +8 -0
- package/src/runtime/foundation/service-maintenance-runtime.ts +1 -8
- package/src/runtime/foundation/service-relocation-object-owner.ts +54 -37
- package/src/runtime/foundation/service-relocation-runtime.ts +7 -3
- package/src/runtime/foundation/service-runtime-contracts.ts +12 -1
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -1
- package/src/runtime/foundation/service-stateful-registry.ts +38 -35
- package/src/runtime/foundation/service-stateful-runtime.ts +667 -152
- package/src/runtime/foundation/service-stateful-wire-codec.ts +49 -11
- package/src/runtime/foundation/service-wire-binary-primitives.ts +35 -12
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +187 -51
- package/src/runtime/host/actor-packet-relay.ts +113 -94
- package/src/runtime/host/actor-placement-coordinator.ts +31 -8
- package/src/runtime/host/actor-transfer-runtime.ts +104 -430
- package/src/runtime/host/application-job-queue.ts +29 -44
- package/src/runtime/host/index.ts +286 -129
- package/src/runtime/host/location-runtime-owner.ts +2 -6
- package/src/runtime/host/mesh-router-resolver.ts +13 -5
- package/src/runtime/host/remote-bound-session-relay.ts +86 -248
- package/src/runtime/host/route-mesh-runtime.ts +11 -5
- package/src/runtime/host/runtime-shutdown.ts +15 -4
- package/src/runtime/host/service-relocation-host-runtime.ts +784 -475
- package/src/runtime/host/spot-runtime-options-factory.ts +18 -7
- package/src/runtime/host/user-spot-creation-coordinator.ts +41 -100
- package/src/runtime/locations/auto-connect-loop.ts +22 -14
- package/src/runtime/locations/auto-connect-reconciler.ts +0 -6
- package/src/runtime/locations/auto-connect-types.ts +0 -1
- package/src/runtime/locations/descriptor-publication.ts +7 -0
- package/src/runtime/locations/domain-store-contract.ts +5 -0
- package/src/runtime/locations/in-memory-authority-store.ts +85 -23
- package/src/runtime/locations/in-memory-location-store.ts +1 -12
- package/src/runtime/locations/index.ts +1 -0
- package/src/runtime/locations/lease-tracker.ts +2 -9
- package/src/runtime/locations/location-store-repository.ts +628 -152
- package/src/runtime/locations/relocation-blob.ts +75 -1
- package/src/runtime/locations/request-source-resolver.ts +138 -0
- package/src/runtime/locations/resolvers.ts +2 -2
- package/src/runtime/locations/runtime.ts +70 -40
- package/src/runtime/messaging/payload-codec.ts +8 -11
- package/src/runtime/messaging/request-result.ts +33 -29
- package/src/runtime/protocol/service_wire_codec.generated.ts +87 -4
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +13 -10
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +3 -2
- package/src/runtime/spots/index.ts +375 -281
- package/src/runtime/spots/spot-activation-registry.ts +25 -13
- package/src/runtime/spots/spot-activation-state.ts +12 -19
- package/src/runtime/spots/spot-activation.ts +170 -86
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +25 -55
- package/src/runtime/spots/spot-actor-membership.ts +0 -15
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +56 -11
- package/src/runtime/spots/spot-actor-packet-drain.ts +9 -52
- package/src/runtime/spots/spot-entry-activation.ts +24 -19
- package/src/runtime/spots/spot-handler-registry.ts +15 -4
- package/src/runtime/spots/spot-manager-internal-contracts.ts +2 -2
- package/src/runtime/spots/spot-manager-public.ts +2 -2
- package/src/runtime/spots/spot-node-autoconnect.ts +22 -45
- package/src/runtime/spots/spot-node-runtime-manager.ts +197 -67
- package/src/runtime/spots/spot-outbound.ts +3 -3
- package/src/runtime/spots/spot-remote-codec.ts +9 -2
- package/src/runtime/spots/spot-runtime-ports.ts +0 -1
- package/src/runtime/spots/spot-serial-executor.ts +97 -25
- package/src/runtime/spots/spot-serial-turn-executor.ts +22 -3
- package/src/runtime/spots/spot-subscription-dispatch.ts +1 -1
- package/src/runtime/spots/spot-timer.ts +413 -157
- package/src/runtime/streams/actor-session-binding-registry.ts +236 -64
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +16 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +23 -9
- package/src/runtime/streams/bound-session-service.ts +7 -10
- package/src/runtime/streams/index.ts +12 -6
- package/src/runtime/streams/managed-stream.ts +4 -2
- package/src/runtime/streams/native-fallback-bound-session.ts +14 -103
- package/src/runtime/streams/session-actor-coordinator.ts +39 -88
- package/src/runtime/streams/stream-binding-runtime-ports.ts +3 -9
- package/src/runtime/streams/stream-session-runtime.ts +1 -5
- package/src/runtime/workers/index.ts +1 -1
|
@@ -25,7 +25,8 @@ import {
|
|
|
25
25
|
submitBindingAsyncSend,
|
|
26
26
|
submitBindingSend
|
|
27
27
|
} from './node-backend-adapter-support';
|
|
28
|
-
import { isEndpointCloseIgnorableError } from './node-socket-backend-adapter';
|
|
28
|
+
import { disconnectSocketPeer, isEndpointCloseIgnorableError } from './node-socket-backend-adapter';
|
|
29
|
+
import { SubmitResult } from '../runtime-values';
|
|
29
30
|
import { ZLinkNodeEventLoopPoller } from './node-event-loop-poller';
|
|
30
31
|
import { ZLinkBufferMessage } from '../runtime-message';
|
|
31
32
|
import type {
|
|
@@ -235,17 +236,13 @@ class NodeRawRouterPort extends NodeRawSocketPort<RouterSocket> implements ZLink
|
|
|
235
236
|
return current;
|
|
236
237
|
};
|
|
237
238
|
private readonly replyParts = (
|
|
238
|
-
targetRid:
|
|
239
|
-
replyToken:
|
|
239
|
+
targetRid: BindingRoutingId,
|
|
240
|
+
replyToken: ReplyToken,
|
|
240
241
|
parts: readonly Uint8Array[]
|
|
241
242
|
) => {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
replyToken as Parameters<RouterSocket['reply']>[1]
|
|
246
|
-
),
|
|
247
|
-
parts
|
|
248
|
-
).submit();
|
|
243
|
+
// The receive record keeps the binding RoutingId it was delivered with,
|
|
244
|
+
// so the reply addresses that route without rebuilding the identity.
|
|
245
|
+
appendReplyParts(this.socket.reply(targetRid, replyToken), parts).submit();
|
|
249
246
|
};
|
|
250
247
|
|
|
251
248
|
private preparedRoutingId(routingId: string | Uint8Array): BindingRoutingId {
|
|
@@ -273,11 +270,7 @@ class NodeRawRouterPort extends NodeRawSocketPort<RouterSocket> implements ZLink
|
|
|
273
270
|
|
|
274
271
|
disconnectRid(routingId: string): void {
|
|
275
272
|
this.requireOpen();
|
|
276
|
-
(
|
|
277
|
-
this.socket as RouterSocket & {
|
|
278
|
-
disconnectRid(value: BindingRoutingId): void;
|
|
279
|
-
}
|
|
280
|
-
).disconnectRid(this.preparedRoutingId(routingId));
|
|
273
|
+
disconnectSocketPeer(this.socket, this.preparedRoutingId(routingId));
|
|
281
274
|
}
|
|
282
275
|
|
|
283
276
|
constructor(socket: RouterSocket, receiveTimeoutMs?: number) {
|
|
@@ -318,29 +311,24 @@ class NodeRawRouterPort extends NodeRawSocketPort<RouterSocket> implements ZLink
|
|
|
318
311
|
return submitBindingSend(this.socket.send(this.preparedRoutingId(targetRid)), parts);
|
|
319
312
|
}
|
|
320
313
|
|
|
321
|
-
|
|
314
|
+
request(
|
|
322
315
|
targetRid: string,
|
|
323
316
|
parts: readonly Uint8Array[],
|
|
324
317
|
timeoutMs: number,
|
|
325
318
|
recordReceived?: () => void,
|
|
326
319
|
onAdmitted?: () => void
|
|
327
320
|
): Promise<readonly Buffer[]> {
|
|
328
|
-
this.requireOpen();
|
|
329
|
-
const deadlineMs = performance.now() + timeoutMs;
|
|
330
321
|
let submission: ReturnType<RequestSubmitOperation['submit']>;
|
|
322
|
+
const deadlineMs = performance.now() + timeoutMs;
|
|
331
323
|
try {
|
|
324
|
+
this.requireOpen();
|
|
332
325
|
submission = appendRequestParts(this.socket.request(this.preparedRoutingId(targetRid)), parts)
|
|
333
326
|
.timeout(timeoutMs)
|
|
334
327
|
.submit();
|
|
335
328
|
} catch (error) {
|
|
336
|
-
|
|
337
|
-
}
|
|
338
|
-
try {
|
|
339
|
-
const replies = await bindingRequestReply(submission, deadlineMs, recordReceived, onAdmitted);
|
|
340
|
-
return retainAndClose(replies);
|
|
341
|
-
} catch (error) {
|
|
342
|
-
throw translateBindingResultError(error, 'completion');
|
|
329
|
+
return Promise.reject(translateBindingResultError(error, 'submit'));
|
|
343
330
|
}
|
|
331
|
+
return requestReply(submission, deadlineMs, recordReceived, onAdmitted);
|
|
344
332
|
}
|
|
345
333
|
|
|
346
334
|
routesSnapshot(): readonly ZLinkRawRouterRoute[] {
|
|
@@ -373,25 +361,20 @@ class NodeRawDealerPort extends NodeRawSocketPort<DealerSocket> implements ZLink
|
|
|
373
361
|
return submitBindingAsyncSend(this.socket.send(), parts);
|
|
374
362
|
}
|
|
375
363
|
|
|
376
|
-
|
|
364
|
+
request(
|
|
377
365
|
parts: readonly Uint8Array[],
|
|
378
366
|
timeoutMs: number,
|
|
379
367
|
onAdmitted?: () => void
|
|
380
368
|
): Promise<readonly Buffer[]> {
|
|
381
|
-
this.requireOpen();
|
|
382
|
-
const deadlineMs = performance.now() + timeoutMs;
|
|
383
369
|
let submission: ReturnType<RequestSubmitOperation['submit']>;
|
|
370
|
+
const deadlineMs = performance.now() + timeoutMs;
|
|
384
371
|
try {
|
|
372
|
+
this.requireOpen();
|
|
385
373
|
submission = appendRequestParts(this.socket.request(), parts).timeout(timeoutMs).submit();
|
|
386
374
|
} catch (error) {
|
|
387
|
-
|
|
388
|
-
}
|
|
389
|
-
try {
|
|
390
|
-
const replies = await bindingRequestReply(submission, deadlineMs, undefined, onAdmitted);
|
|
391
|
-
return retainAndClose(replies);
|
|
392
|
-
} catch (error) {
|
|
393
|
-
throw translateBindingResultError(error, 'completion');
|
|
375
|
+
return Promise.reject(translateBindingResultError(error, 'submit'));
|
|
394
376
|
}
|
|
377
|
+
return requestReply(submission, deadlineMs, undefined, onAdmitted);
|
|
395
378
|
}
|
|
396
379
|
|
|
397
380
|
receive(dontWait = false): ZLinkRawReceivedRecord | undefined {
|
|
@@ -463,11 +446,61 @@ function requireParts(parts: readonly Uint8Array[]): [Uint8Array, ...Uint8Array[
|
|
|
463
446
|
}
|
|
464
447
|
|
|
465
448
|
type RawReceivedReply = (
|
|
466
|
-
targetRid:
|
|
449
|
+
targetRid: BindingRoutingId,
|
|
467
450
|
replyToken: ReplyToken,
|
|
468
451
|
parts: readonly Uint8Array[]
|
|
469
452
|
) => void;
|
|
470
453
|
|
|
454
|
+
const EMPTY_SOURCE_ROUTE = Buffer.alloc(0);
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* One received binding record. The payload Buffers are the binding's own
|
|
458
|
+
* `data()` storage, retained under the runtime payload policy instead of a
|
|
459
|
+
* second Framework copy; closing the record releases the binding handles.
|
|
460
|
+
*/
|
|
461
|
+
class NodeRawReceivedRecord implements ZLinkRawReceivedRecord {
|
|
462
|
+
readonly sourceRid: string;
|
|
463
|
+
readonly sourceRoute: Uint8Array;
|
|
464
|
+
readonly routeGeneration: bigint;
|
|
465
|
+
readonly requestSeq?: bigint;
|
|
466
|
+
readonly reply?: (parts: readonly Uint8Array[]) => void;
|
|
467
|
+
readonly parts: readonly Buffer[];
|
|
468
|
+
private closed = false;
|
|
469
|
+
|
|
470
|
+
constructor(
|
|
471
|
+
private readonly received: Received,
|
|
472
|
+
nextRequestSequence: (() => bigint) | undefined,
|
|
473
|
+
reply: RawReceivedReply | undefined
|
|
474
|
+
) {
|
|
475
|
+
const routingId = received.routingId;
|
|
476
|
+
this.sourceRid = routingId?.toString() ?? '';
|
|
477
|
+
this.sourceRoute = routingId?.toBytes() ?? EMPTY_SOURCE_ROUTE;
|
|
478
|
+
this.routeGeneration = received.routeGeneration;
|
|
479
|
+
const replyToken = received.replyToken;
|
|
480
|
+
if (replyToken !== null) {
|
|
481
|
+
this.requestSeq = nextRequestSequence?.();
|
|
482
|
+
if (reply === undefined) {
|
|
483
|
+
const operation = received.reply();
|
|
484
|
+
this.reply = (parts) => appendReplyParts(operation, parts).submit();
|
|
485
|
+
} else {
|
|
486
|
+
const target = routingId ?? bindingRoutingId(EMPTY_SOURCE_ROUTE);
|
|
487
|
+
this.reply = (parts) => reply(target, replyToken, parts);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
const parts = received.parts;
|
|
491
|
+
const retained = new Array<Buffer>(parts.length);
|
|
492
|
+
for (let index = 0; index < parts.length; index++)
|
|
493
|
+
retained[index] = ZLinkBufferMessage.retainPayload(parts[index]!);
|
|
494
|
+
this.parts = retained;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
close(): void {
|
|
498
|
+
if (this.closed) return;
|
|
499
|
+
this.closed = true;
|
|
500
|
+
this.received.close();
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
|
|
471
504
|
function receiveRecord(
|
|
472
505
|
socket: Pick<RouterSocket | DealerSocket, 'recv'>,
|
|
473
506
|
dontWait: boolean,
|
|
@@ -479,47 +512,50 @@ function receiveRecord(
|
|
|
479
512
|
received.close();
|
|
480
513
|
return undefined;
|
|
481
514
|
}
|
|
482
|
-
let closed = false;
|
|
483
515
|
try {
|
|
484
|
-
|
|
485
|
-
const sourceRoute = received.routingId?.toBytes() ?? Buffer.alloc(0);
|
|
486
|
-
const requestSeq = received.replyToken === null ? undefined : nextRequestSequence?.();
|
|
487
|
-
const replyToken = received.replyToken;
|
|
488
|
-
const receivedReply =
|
|
489
|
-
replyToken === null
|
|
490
|
-
? undefined
|
|
491
|
-
: reply === undefined
|
|
492
|
-
? received.reply()
|
|
493
|
-
: (parts: readonly Uint8Array[]) => reply(sourceRoute, replyToken, parts);
|
|
494
|
-
return {
|
|
495
|
-
sourceRid,
|
|
496
|
-
sourceRoute,
|
|
497
|
-
routeGeneration: received.routeGeneration,
|
|
498
|
-
...(requestSeq === undefined ? {} : { requestSeq }),
|
|
499
|
-
...(receivedReply === undefined
|
|
500
|
-
? {}
|
|
501
|
-
: {
|
|
502
|
-
reply: (parts: readonly Uint8Array[]) => {
|
|
503
|
-
if (typeof receivedReply === 'function') {
|
|
504
|
-
receivedReply(parts);
|
|
505
|
-
return;
|
|
506
|
-
}
|
|
507
|
-
appendReplyParts(receivedReply, parts).submit();
|
|
508
|
-
}
|
|
509
|
-
}),
|
|
510
|
-
parts: received.parts.map((part) => part.toBytes()),
|
|
511
|
-
close: () => {
|
|
512
|
-
if (closed) return;
|
|
513
|
-
closed = true;
|
|
514
|
-
received.close();
|
|
515
|
-
}
|
|
516
|
-
};
|
|
516
|
+
return new NodeRawReceivedRecord(received, nextRequestSequence, reply);
|
|
517
517
|
} catch (error) {
|
|
518
518
|
received.close();
|
|
519
519
|
throw error;
|
|
520
520
|
}
|
|
521
521
|
}
|
|
522
522
|
|
|
523
|
+
/**
|
|
524
|
+
* Continues once on the binding reply. Admission that completed at submit is
|
|
525
|
+
* confirmed in this turn; a backpressured submission keeps the admission
|
|
526
|
+
* wait that bounds it by the request deadline.
|
|
527
|
+
*/
|
|
528
|
+
function requestReply(
|
|
529
|
+
submission: ReturnType<RequestSubmitOperation['submit']>,
|
|
530
|
+
deadlineMs: number,
|
|
531
|
+
recordReceived: (() => void) | undefined,
|
|
532
|
+
onAdmitted: (() => void) | undefined
|
|
533
|
+
): Promise<readonly Buffer[]> {
|
|
534
|
+
if (submission.result === SubmitResult.Backpressured) {
|
|
535
|
+
return bindingRequestReply(submission, deadlineMs, recordReceived, onAdmitted).then(
|
|
536
|
+
retainAndClose,
|
|
537
|
+
rejectCompletion
|
|
538
|
+
);
|
|
539
|
+
}
|
|
540
|
+
try {
|
|
541
|
+
onAdmitted?.();
|
|
542
|
+
} catch (error) {
|
|
543
|
+
return Promise.reject(translateBindingResultError(error, 'completion'));
|
|
544
|
+
}
|
|
545
|
+
return submission.reply.then((replies) => {
|
|
546
|
+
try {
|
|
547
|
+
recordReceived?.();
|
|
548
|
+
return retainAndClose(replies);
|
|
549
|
+
} catch (error) {
|
|
550
|
+
throw translateBindingResultError(error, 'completion');
|
|
551
|
+
}
|
|
552
|
+
}, rejectCompletion);
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
function rejectCompletion(error: unknown): never {
|
|
556
|
+
throw translateBindingResultError(error, 'completion');
|
|
557
|
+
}
|
|
558
|
+
|
|
523
559
|
function retainAndClose(messages: readonly Message[]): readonly Buffer[] {
|
|
524
560
|
try {
|
|
525
561
|
return messages.map((message) => ZLinkBufferMessage.retainPayload(message));
|