@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
|
@@ -330,9 +330,9 @@ export function wrapSocket<T extends { close(): void }>(
|
|
|
330
330
|
);
|
|
331
331
|
},
|
|
332
332
|
disconnectPeer(routingId: unknown): void {
|
|
333
|
-
|
|
333
|
+
disconnectSocketPeer(
|
|
334
334
|
nativeInstance as T & { disconnectRid(value: unknown): void },
|
|
335
|
-
routingId
|
|
335
|
+
toNativeRoutingId(routingId)
|
|
336
336
|
);
|
|
337
337
|
},
|
|
338
338
|
async bindActor(
|
|
@@ -376,15 +376,15 @@ export function nodeEventLoopPollerOf(socket: object): ZLinkNodeEventLoopPoller
|
|
|
376
376
|
return poller;
|
|
377
377
|
}
|
|
378
378
|
|
|
379
|
-
export function
|
|
379
|
+
export function disconnectSocketPeer(
|
|
380
380
|
socket: { disconnectRid(routingId: unknown): void },
|
|
381
381
|
routingId: unknown
|
|
382
382
|
): void {
|
|
383
383
|
try {
|
|
384
|
-
socket.disconnectRid(
|
|
384
|
+
socket.disconnectRid(routingId);
|
|
385
385
|
} catch (error) {
|
|
386
386
|
// An absent RID has already completed the physical close. The existing
|
|
387
|
-
//
|
|
387
|
+
// logical lifecycle still owns local cleanup and unbind.
|
|
388
388
|
if (!isBindingNotFound(error)) throw error;
|
|
389
389
|
}
|
|
390
390
|
}
|
|
@@ -177,8 +177,14 @@ interface PreparedNodeSend {
|
|
|
177
177
|
) => ZLinkSubmitResult | Promise<ZLinkSubmitResult>;
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
+
interface PreparedNodeRequest {
|
|
181
|
+
readonly validate: () => void;
|
|
182
|
+
readonly submit: ZLinkRequestSubmitter;
|
|
183
|
+
}
|
|
184
|
+
|
|
180
185
|
export class DefaultZLinkRouteClient implements ZLinkRouteClient {
|
|
181
186
|
private readonly nodeSends = new Map<string, Map<string, PreparedNodeSend>>();
|
|
187
|
+
private readonly nodeRequests = new Map<string, Map<string, PreparedNodeRequest>>();
|
|
182
188
|
constructor(
|
|
183
189
|
private readonly registration: ZLinkFrameworkRegistration,
|
|
184
190
|
private readonly transport?: ZLinkRouteClientTransport,
|
|
@@ -207,20 +213,31 @@ export class DefaultZLinkRouteClient implements ZLinkRouteClient {
|
|
|
207
213
|
}
|
|
208
214
|
|
|
209
215
|
requestToNode(meshName: string, targetNodeRid: string, request: unknown): ZLinkRequestCall {
|
|
216
|
+
let targets = this.nodeRequests.get(meshName);
|
|
217
|
+
if (targets === undefined) this.nodeRequests.set(meshName, (targets = new Map()));
|
|
218
|
+
let prepared = targets.get(targetNodeRid);
|
|
219
|
+
if (prepared === undefined) {
|
|
220
|
+
prepared = {
|
|
221
|
+
validate: () => this.requireMesh(meshName),
|
|
222
|
+
submit: (packetName, timeoutMs, metadata, signal, onAdmitted, message) =>
|
|
223
|
+
this.requireTransport().request(
|
|
224
|
+
meshName,
|
|
225
|
+
targetNodeRid,
|
|
226
|
+
packetName,
|
|
227
|
+
message,
|
|
228
|
+
timeoutMs,
|
|
229
|
+
signal,
|
|
230
|
+
metadata,
|
|
231
|
+
onAdmitted
|
|
232
|
+
)
|
|
233
|
+
};
|
|
234
|
+
targets.set(targetNodeRid, prepared);
|
|
235
|
+
}
|
|
210
236
|
return new DefaultZLinkRequestCall(
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
targetNodeRid,
|
|
216
|
-
packetName,
|
|
217
|
-
request,
|
|
218
|
-
timeoutMs,
|
|
219
|
-
signal,
|
|
220
|
-
metadata,
|
|
221
|
-
onAdmitted
|
|
222
|
-
),
|
|
223
|
-
this.defaultRequestTimeout(meshName)
|
|
237
|
+
prepared.validate,
|
|
238
|
+
prepared.submit,
|
|
239
|
+
this.defaultRequestTimeout(meshName),
|
|
240
|
+
request
|
|
224
241
|
);
|
|
225
242
|
}
|
|
226
243
|
|
|
@@ -504,21 +521,26 @@ function normalizeSubmitResult(
|
|
|
504
521
|
: (result ?? submittedResult);
|
|
505
522
|
}
|
|
506
523
|
|
|
524
|
+
type ZLinkRequestSubmitter = <TReply>(
|
|
525
|
+
packetName: string | undefined,
|
|
526
|
+
timeoutMs: number | undefined,
|
|
527
|
+
metadata: ReadonlyMap<string, string>,
|
|
528
|
+
signal?: AbortSignal,
|
|
529
|
+
onAdmitted?: () => void,
|
|
530
|
+
message?: unknown
|
|
531
|
+
) => Promise<TReply>;
|
|
532
|
+
|
|
507
533
|
class DefaultZLinkRequestCall implements ZLinkChannelRequestCall {
|
|
508
534
|
private timeoutMs?: number;
|
|
509
535
|
private selectedMetadata?: Map<string, string>;
|
|
510
536
|
private readonly turn: ZLinkSpotSerialTurn | undefined = captureZLinkSpotSerialTurn();
|
|
511
537
|
|
|
538
|
+
/** `message` is the request payload a prepared submitter receives per call. */
|
|
512
539
|
constructor(
|
|
513
540
|
private readonly validate: () => void,
|
|
514
|
-
private readonly submitter:
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
metadata: ReadonlyMap<string, string>,
|
|
518
|
-
signal?: AbortSignal,
|
|
519
|
-
onAdmitted?: () => void
|
|
520
|
-
) => Promise<TReply>,
|
|
521
|
-
private readonly defaultRequestTimeoutMs?: number
|
|
541
|
+
private readonly submitter: ZLinkRequestSubmitter,
|
|
542
|
+
private readonly defaultRequestTimeoutMs?: number,
|
|
543
|
+
private readonly message?: unknown
|
|
522
544
|
) {}
|
|
523
545
|
|
|
524
546
|
metadata(key: string, value: string): this;
|
|
@@ -549,7 +571,8 @@ class DefaultZLinkRequestCall implements ZLinkChannelRequestCall {
|
|
|
549
571
|
this.timeoutMs ?? this.defaultRequestTimeoutMs,
|
|
550
572
|
this.selectedMetadata === undefined ? EMPTY_CALL_METADATA : new Map(this.selectedMetadata),
|
|
551
573
|
signal,
|
|
552
|
-
onAdmitted
|
|
574
|
+
onAdmitted,
|
|
575
|
+
this.message
|
|
553
576
|
);
|
|
554
577
|
});
|
|
555
578
|
}
|
|
@@ -562,9 +585,11 @@ class DefaultZLinkRequestCall implements ZLinkChannelRequestCall {
|
|
|
562
585
|
undefined,
|
|
563
586
|
this.timeoutMs ?? this.defaultRequestTimeoutMs,
|
|
564
587
|
this.selectedMetadata === undefined ? EMPTY_CALL_METADATA : new Map(this.selectedMetadata),
|
|
565
|
-
signal
|
|
588
|
+
signal,
|
|
589
|
+
undefined,
|
|
590
|
+
this.message
|
|
566
591
|
);
|
|
567
|
-
return turn.
|
|
592
|
+
return turn.yieldFrameworkPromise(pending);
|
|
568
593
|
}
|
|
569
594
|
}
|
|
570
595
|
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import type { ZLinkMeshDispatchAdmission } from '../admission';
|
|
1
2
|
import {
|
|
2
3
|
ZLinkFrameworkInternalErrorKind,
|
|
3
4
|
createInternalFrameworkException,
|
|
4
5
|
internalFrameworkErrorKind
|
|
5
6
|
} from '../framework-errors-internal';
|
|
7
|
+
import { isPromiseLike } from '../abort';
|
|
6
8
|
import type {
|
|
7
9
|
ZLinkMessageContext,
|
|
8
10
|
ZLinkHandlerFilter,
|
|
@@ -65,7 +67,7 @@ interface ZLinkOneWayDispatch<TContext extends ZLinkMessageContext> {
|
|
|
65
67
|
readonly signal?: AbortSignal;
|
|
66
68
|
}
|
|
67
69
|
|
|
68
|
-
interface ZLinkRequestDispatch<TContext extends ZLinkMessageContext> {
|
|
70
|
+
export interface ZLinkRequestDispatch<TContext extends ZLinkMessageContext> {
|
|
69
71
|
readonly fields: ZLinkChannelDispatchFields;
|
|
70
72
|
readonly envelope: ZLinkChannelEnvelope;
|
|
71
73
|
readonly codecs?: ZLinkChannelEnvelopeCodecRegistry;
|
|
@@ -86,158 +88,205 @@ export class ZLinkChannelDispatchPipeline {
|
|
|
86
88
|
this.unhandled = options.unhandled ?? DEFAULT_UNHANDLED_DISPATCH;
|
|
87
89
|
}
|
|
88
90
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
/**
|
|
92
|
+
* Runs the handler in the caller's execution turn. A synchronous handler
|
|
93
|
+
* completes here; an asynchronous handler adds exactly one continuation
|
|
94
|
+
* for its terminal trace or error record.
|
|
95
|
+
*/
|
|
96
|
+
dispatchOneWay<TContext extends ZLinkMessageContext>(
|
|
97
|
+
dispatch: ZLinkOneWayDispatch<TContext>,
|
|
98
|
+
admit?: ZLinkMeshDispatchAdmission
|
|
99
|
+
): void | Promise<void> {
|
|
100
|
+
if (admit !== undefined) {
|
|
101
|
+
const pipeline = this;
|
|
102
|
+
const record = dispatch;
|
|
103
|
+
return admit(
|
|
104
|
+
() => pipeline.dispatchOneWay(record),
|
|
105
|
+
(error) => pipeline.failOneWay(record.fields, error)
|
|
106
|
+
);
|
|
107
|
+
}
|
|
92
108
|
this.trace(ZLinkMessageFlowOutcome.Received, dispatch.fields);
|
|
93
109
|
this.trace(ZLinkMessageFlowOutcome.Admitted, dispatch.fields);
|
|
94
|
-
if (dispatch.handler === undefined)
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
this.
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
);
|
|
104
|
-
this.applyOneWayUnhandled(action, dispatch.fields);
|
|
110
|
+
if (dispatch.handler === undefined) return this.dispatchMissingOneWay(dispatch.fields);
|
|
111
|
+
let invocation: unknown;
|
|
112
|
+
try {
|
|
113
|
+
invocation = this.invokeInFlow(dispatch, dispatch.handler);
|
|
114
|
+
} catch (error) {
|
|
115
|
+
this.failOneWay(dispatch.fields, error);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (!isPromiseLike(invocation)) {
|
|
119
|
+
this.completeOneWay(dispatch.fields, invocation);
|
|
105
120
|
return;
|
|
106
121
|
}
|
|
122
|
+
return Promise.resolve(invocation).then(
|
|
123
|
+
(value) => this.completeOneWay(dispatch.fields, value),
|
|
124
|
+
(error: unknown) => this.failOneWay(dispatch.fields, error)
|
|
125
|
+
);
|
|
126
|
+
}
|
|
107
127
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
this.
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
? this.invoke(
|
|
117
|
-
dispatch.envelope,
|
|
118
|
-
dispatch.codecs,
|
|
119
|
-
dispatch.handler,
|
|
120
|
-
dispatch.context,
|
|
121
|
-
dispatch.fields,
|
|
122
|
-
dispatch.signal
|
|
123
|
-
)
|
|
124
|
-
: runWithFlow(flow, () =>
|
|
125
|
-
this.invoke(
|
|
126
|
-
dispatch.envelope,
|
|
127
|
-
dispatch.codecs,
|
|
128
|
-
dispatch.handler!,
|
|
129
|
-
dispatch.context,
|
|
130
|
-
dispatch.fields,
|
|
131
|
-
dispatch.signal
|
|
132
|
-
)
|
|
133
|
-
));
|
|
128
|
+
private async dispatchMissingOneWay(fields: ZLinkChannelDispatchFields): Promise<void> {
|
|
129
|
+
const action =
|
|
130
|
+
fields.messageKind === ZLinkDispatchMessageKind.Publish
|
|
131
|
+
? this.unhandled.publish
|
|
132
|
+
: this.unhandled.send;
|
|
133
|
+
this.report(fields, ZLinkDispatchErrorReason.HandlerMissing, ZLinkDispatchErrorAction.Drop);
|
|
134
|
+
this.applyOneWayUnhandled(action, fields);
|
|
135
|
+
}
|
|
134
136
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
137
|
+
private completeOneWay(fields: ZLinkChannelDispatchFields, invocation: unknown): void {
|
|
138
|
+
if (invocation !== HANDLER_FILTER_REJECTED) {
|
|
139
|
+
this.trace(ZLinkMessageFlowOutcome.Completed, fields);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
private failOneWay(fields: ZLinkChannelDispatchFields, error: unknown): void {
|
|
144
|
+
this.report(fields, this.failureReason(error), ZLinkDispatchErrorAction.Drop, error);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Runs the handler in the caller's execution turn and writes its reply in
|
|
149
|
+
* the same turn when the handler completes synchronously. An asynchronous
|
|
150
|
+
* handler adds exactly one continuation that writes the reply.
|
|
151
|
+
*/
|
|
152
|
+
dispatchRequest<TContext extends ZLinkMessageContext>(
|
|
153
|
+
dispatch: ZLinkRequestDispatch<TContext>,
|
|
154
|
+
admit?: ZLinkMeshDispatchAdmission
|
|
155
|
+
): void | Promise<void> {
|
|
156
|
+
if (admit !== undefined) {
|
|
157
|
+
const pipeline = this;
|
|
158
|
+
const record = dispatch;
|
|
159
|
+
return admit(
|
|
160
|
+
() => pipeline.dispatchRequest(record),
|
|
161
|
+
(error) => pipeline.failRequest(record, error)
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
this.trace(ZLinkMessageFlowOutcome.Received, dispatch.fields);
|
|
165
|
+
this.trace(ZLinkMessageFlowOutcome.Admitted, dispatch.fields);
|
|
166
|
+
if (dispatch.handler === undefined) return this.dispatchMissingRequest(dispatch);
|
|
167
|
+
let invocation: unknown;
|
|
168
|
+
try {
|
|
169
|
+
invocation = this.invokeInFlow(dispatch, dispatch.handler);
|
|
138
170
|
} catch (error) {
|
|
139
|
-
this.
|
|
171
|
+
return this.failRequest(dispatch, error);
|
|
140
172
|
}
|
|
173
|
+
if (!isPromiseLike(invocation)) return this.completeRequest(dispatch, invocation);
|
|
174
|
+
return Promise.resolve(invocation).then(
|
|
175
|
+
(value) => this.completeRequest(dispatch, value),
|
|
176
|
+
(error: unknown) => this.failRequest(dispatch, error)
|
|
177
|
+
);
|
|
141
178
|
}
|
|
142
179
|
|
|
143
|
-
async
|
|
180
|
+
private async dispatchMissingRequest<TContext extends ZLinkMessageContext>(
|
|
144
181
|
dispatch: ZLinkRequestDispatch<TContext>
|
|
145
182
|
): Promise<void> {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
this.
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
);
|
|
163
|
-
if (this.unhandled.request === ZLinkUnhandledDispatchAction.Throw) {
|
|
164
|
-
throw missing;
|
|
165
|
-
}
|
|
166
|
-
return;
|
|
183
|
+
const missing = createInternalFrameworkException(
|
|
184
|
+
ZLinkFrameworkInternalErrorKind.HandlerNotFound,
|
|
185
|
+
dispatch.missingHandlerMessage
|
|
186
|
+
);
|
|
187
|
+
if (this.unhandled.request === ZLinkUnhandledDispatchAction.ReplyError) {
|
|
188
|
+
await dispatch.writeError(missing);
|
|
189
|
+
}
|
|
190
|
+
this.report(
|
|
191
|
+
dispatch.fields,
|
|
192
|
+
ZLinkDispatchErrorReason.HandlerMissing,
|
|
193
|
+
this.unhandled.request === ZLinkUnhandledDispatchAction.ReplyError
|
|
194
|
+
? ZLinkDispatchErrorAction.ReplyError
|
|
195
|
+
: ZLinkDispatchErrorAction.Drop
|
|
196
|
+
);
|
|
197
|
+
if (this.unhandled.request === ZLinkUnhandledDispatchAction.Throw) {
|
|
198
|
+
throw missing;
|
|
167
199
|
}
|
|
200
|
+
}
|
|
168
201
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
)
|
|
177
|
-
|
|
178
|
-
|
|
202
|
+
private invokeInFlow<TContext extends ZLinkMessageContext, TResult>(
|
|
203
|
+
dispatch: ZLinkOneWayDispatch<TContext> | ZLinkRequestDispatch<TContext>,
|
|
204
|
+
handler: ZLinkChannelDispatchHandler<TContext, TResult>
|
|
205
|
+
): unknown {
|
|
206
|
+
const flow = createInboundFlow(
|
|
207
|
+
dispatch.fields.flowId,
|
|
208
|
+
dispatch.fields.flowOrigin,
|
|
209
|
+
this.options.dispatchErrors.flow.flowCreationEnabled(),
|
|
210
|
+
undefined
|
|
211
|
+
);
|
|
212
|
+
return flow === undefined
|
|
213
|
+
? this.invoke(
|
|
214
|
+
dispatch.envelope,
|
|
215
|
+
dispatch.codecs,
|
|
216
|
+
handler,
|
|
217
|
+
dispatch.context,
|
|
218
|
+
dispatch.fields,
|
|
219
|
+
dispatch.signal
|
|
220
|
+
)
|
|
221
|
+
: runWithFlow(flow, () =>
|
|
222
|
+
this.invoke(
|
|
179
223
|
dispatch.envelope,
|
|
180
224
|
dispatch.codecs,
|
|
181
|
-
|
|
225
|
+
handler,
|
|
182
226
|
dispatch.context,
|
|
183
227
|
dispatch.fields,
|
|
184
228
|
dispatch.signal
|
|
185
229
|
)
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
dispatch.envelope,
|
|
189
|
-
dispatch.codecs,
|
|
190
|
-
dispatch.handler!,
|
|
191
|
-
dispatch.context,
|
|
192
|
-
dispatch.fields,
|
|
193
|
-
dispatch.signal
|
|
194
|
-
)
|
|
195
|
-
));
|
|
230
|
+
);
|
|
231
|
+
}
|
|
196
232
|
|
|
197
|
-
|
|
198
|
-
|
|
233
|
+
private completeRequest<TContext extends ZLinkMessageContext>(
|
|
234
|
+
dispatch: ZLinkRequestDispatch<TContext>,
|
|
235
|
+
invocation: unknown
|
|
236
|
+
): void | Promise<void> {
|
|
237
|
+
if (invocation === HANDLER_FILTER_REJECTED) {
|
|
238
|
+
return this.failRequest(
|
|
239
|
+
dispatch,
|
|
240
|
+
createInternalFrameworkException(
|
|
199
241
|
ZLinkFrameworkInternalErrorKind.RequestRejected,
|
|
200
242
|
`A handler filter rejected '${this.options.channelName}:${dispatch.fields.packetName}'.`
|
|
201
|
-
)
|
|
202
|
-
}
|
|
203
|
-
reply = invocation;
|
|
204
|
-
} catch (error) {
|
|
205
|
-
try {
|
|
206
|
-
await dispatch.writeError(error);
|
|
207
|
-
} catch (replyError) {
|
|
208
|
-
// Spec 26 §3.1: a failed reply write means the reply delivery path is
|
|
209
|
-
// gone; `unexpected_reply` names a surplus/late reply instead.
|
|
210
|
-
this.report(
|
|
211
|
-
dispatch.fields,
|
|
212
|
-
ZLinkDispatchErrorReason.ReplyPathMissing,
|
|
213
|
-
ZLinkDispatchErrorAction.Drop,
|
|
214
|
-
replyError
|
|
215
|
-
);
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
218
|
-
this.report(
|
|
219
|
-
dispatch.fields,
|
|
220
|
-
this.failureReason(error),
|
|
221
|
-
ZLinkDispatchErrorAction.ReplyError,
|
|
222
|
-
error
|
|
243
|
+
)
|
|
223
244
|
);
|
|
245
|
+
}
|
|
246
|
+
let written: void | Promise<void>;
|
|
247
|
+
try {
|
|
248
|
+
written = dispatch.writeReply(invocation);
|
|
249
|
+
} catch (error) {
|
|
250
|
+
this.replyPathMissing(dispatch.fields, error);
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
if (written === undefined) {
|
|
254
|
+
this.trace(ZLinkMessageFlowOutcome.Replied, dispatch.fields);
|
|
224
255
|
return;
|
|
225
256
|
}
|
|
257
|
+
return written.then(
|
|
258
|
+
() => this.trace(ZLinkMessageFlowOutcome.Replied, dispatch.fields),
|
|
259
|
+
(error: unknown) => this.replyPathMissing(dispatch.fields, error)
|
|
260
|
+
);
|
|
261
|
+
}
|
|
226
262
|
|
|
263
|
+
private replyPathMissing(fields: ZLinkChannelDispatchFields, error: unknown): void {
|
|
264
|
+
// Spec 26 §3.1: a failed reply write means the reply delivery path is
|
|
265
|
+
// gone; `unexpected_reply` names a surplus/late reply instead.
|
|
266
|
+
this.report(
|
|
267
|
+
fields,
|
|
268
|
+
ZLinkDispatchErrorReason.ReplyPathMissing,
|
|
269
|
+
ZLinkDispatchErrorAction.Drop,
|
|
270
|
+
error
|
|
271
|
+
);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
private async failRequest<TContext extends ZLinkMessageContext>(
|
|
275
|
+
dispatch: ZLinkRequestDispatch<TContext>,
|
|
276
|
+
error: unknown
|
|
277
|
+
): Promise<void> {
|
|
227
278
|
try {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
this.
|
|
231
|
-
|
|
232
|
-
// Spec 26 §3.1: a failed reply write means the reply delivery path is
|
|
233
|
-
// gone; `unexpected_reply` names a surplus/late reply instead.
|
|
234
|
-
this.report(
|
|
235
|
-
dispatch.fields,
|
|
236
|
-
ZLinkDispatchErrorReason.ReplyPathMissing,
|
|
237
|
-
ZLinkDispatchErrorAction.Drop,
|
|
238
|
-
error
|
|
239
|
-
);
|
|
279
|
+
await dispatch.writeError(error);
|
|
280
|
+
} catch (replyError) {
|
|
281
|
+
this.replyPathMissing(dispatch.fields, replyError);
|
|
282
|
+
return;
|
|
240
283
|
}
|
|
284
|
+
this.report(
|
|
285
|
+
dispatch.fields,
|
|
286
|
+
this.failureReason(error),
|
|
287
|
+
ZLinkDispatchErrorAction.ReplyError,
|
|
288
|
+
error
|
|
289
|
+
);
|
|
241
290
|
}
|
|
242
291
|
|
|
243
292
|
dropMissingReplyPath(fields: ZLinkChannelDispatchFields): void {
|