@zlink-systems/framework 0.30.3 → 0.32.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/Actors/ZLinkActor.d.ts +2 -0
- package/dist/contracts/Actors/ZLinkSessionBindingIdentity.d.ts +6 -0
- package/dist/contracts/Actors/ZLinkSessionBindingIdentity.js +2 -0
- package/dist/contracts/Actors/index.d.ts +1 -0
- package/dist/contracts/Actors/index.js +1 -0
- package/dist/contracts/Common/CoreTypes.d.ts +1 -0
- package/dist/contracts/Common/HandlerMessageType.d.ts +8 -0
- package/dist/contracts/Common/HandlerMessageType.js +41 -0
- package/dist/contracts/Common/ZLinkEncodedPayload.d.ts +1 -1
- package/dist/contracts/Common/ZLinkEncodedPayload.js +12 -20
- package/dist/contracts/Common/ZLinkMessage.js +11 -7
- package/dist/contracts/Common/encoded-payload-storage.d.ts +0 -2
- package/dist/contracts/Common/encoded-payload-storage.js +4 -16
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/payload-slab.d.ts +4 -0
- package/dist/contracts/Common/payload-slab.js +30 -0
- package/dist/contracts/Configuration/RegistrationBuilders.js +15 -9
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +19 -0
- package/dist/contracts/Handlers/Contexts.d.ts +1 -0
- package/dist/contracts/Locations/Authority.d.ts +2 -0
- package/dist/internal.d.ts +9 -0
- package/dist/internal.js +23 -1
- package/dist/nest-integration.d.ts +1 -0
- package/dist/nest-integration.js +3 -1
- package/dist/runtime/actors/actor-client.d.ts +6 -2
- package/dist/runtime/actors/actor-client.js +120 -82
- package/dist/runtime/actors/actor-context.js +16 -5
- package/dist/runtime/actors/actor-execution-context.js +2 -2
- package/dist/runtime/actors/actor-handoff.d.ts +12 -1
- package/dist/runtime/actors/actor-handoff.js +79 -34
- package/dist/runtime/actors/actor-join-deferred-scope.js +6 -6
- package/dist/runtime/actors/actor-local-native-join.d.ts +2 -2
- package/dist/runtime/actors/actor-local-native-join.js +19 -17
- package/dist/runtime/actors/actor-mailbox.d.ts +1 -1
- package/dist/runtime/actors/actor-remote-joiner.d.ts +2 -2
- package/dist/runtime/actors/actor-remote-joiner.js +4 -4
- package/dist/runtime/actors/actor-routed-join-transport.d.ts +9 -3
- package/dist/runtime/actors/actor-routed-json-request.d.ts +3 -0
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +2 -2
- package/dist/runtime/actors/actor-runtime-state.d.ts +1 -1
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +9 -5
- package/dist/runtime/actors/spot-actor-dispatch.js +60 -38
- package/dist/runtime/admission.d.ts +6 -4
- package/dist/runtime/admission.js +21 -10
- package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +1 -0
- package/dist/runtime/application-jobs/application-ingress-record-owner.js +3 -0
- package/dist/runtime/backend/contracts/index.d.ts +26 -10
- package/dist/runtime/backend/mesh-completion-table.d.ts +7 -1
- package/dist/runtime/backend/mesh-completion-table.js +84 -20
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +19 -6
- package/dist/runtime/backend/mesh-dispatch-pump.js +246 -147
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -2
- package/dist/runtime/backend/node/node-backend-adapter-support.js +27 -19
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +5 -2
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +70 -13
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +4 -3
- package/dist/runtime/backend/node/node-mesh-backend-adapter.js +5 -1
- package/dist/runtime/backend/node/node-raw-binding-port.d.ts +7 -2
- package/dist/runtime/backend/node/node-raw-binding-port.js +99 -63
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +34 -16
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +210 -106
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +20 -6
- package/dist/runtime/backend/raw-binding-port.d.ts +6 -3
- package/dist/runtime/channels/channel-clients.js +3 -3
- package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +11 -7
- package/dist/runtime/channels/channel-dispatch-pipeline.js +40 -22
- package/dist/runtime/channels/channel-dispatch-services.d.ts +3 -1
- package/dist/runtime/channels/channel-dispatch-services.js +7 -6
- package/dist/runtime/channels/channel-dispatchers.d.ts +13 -6
- package/dist/runtime/channels/channel-dispatchers.js +57 -36
- package/dist/runtime/channels/channel-envelope.d.ts +2 -2
- package/dist/runtime/channels/channel-envelope.js +609 -83
- package/dist/runtime/channels/channel-multipart.d.ts +1 -0
- package/dist/runtime/channels/channel-multipart.js +10 -6
- package/dist/runtime/channels/channel-outbound-operations.d.ts +6 -9
- package/dist/runtime/channels/channel-outbound-operations.js +107 -105
- package/dist/runtime/channels/channel-receive-loops.d.ts +9 -7
- package/dist/runtime/channels/channel-receive-loops.js +126 -90
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +23 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.js +47 -38
- package/dist/runtime/channels/channel-runtime-manager.d.ts +13 -6
- package/dist/runtime/channels/channel-runtime-manager.js +32 -14
- package/dist/runtime/channels/channel-socket-registry.d.ts +28 -4
- package/dist/runtime/channels/channel-socket-registry.js +9 -1
- package/dist/runtime/channels/channel-transports.d.ts +23 -16
- package/dist/runtime/channels/channel-transports.js +139 -119
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +4 -4
- package/dist/runtime/channels/dispatch-error-reporter.js +5 -5
- package/dist/runtime/channels/fanout-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/local-spot-route-transport.d.ts +5 -2
- package/dist/runtime/channels/local-spot-route-transport.js +15 -18
- package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +6 -3
- package/dist/runtime/channels/router-socket-spot-route-transport.js +33 -19
- package/dist/runtime/channels/source-spot-router.d.ts +6 -3
- package/dist/runtime/channels/source-spot-router.js +34 -23
- package/dist/runtime/channels/spot-node-route-transport.d.ts +6 -3
- package/dist/runtime/channels/spot-node-route-transport.js +23 -17
- package/dist/runtime/channels/spot-route-bridge-transport.d.ts +6 -3
- package/dist/runtime/channels/spot-route-bridge-transport.js +38 -24
- package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +8 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +36 -23
- package/dist/runtime/diagnostics/dispatch-error-details.js +9 -3
- package/dist/runtime/diagnostics/message-flow-bootstrap.d.ts +1 -0
- package/dist/runtime/diagnostics/message-flow-bootstrap.js +8 -0
- package/dist/runtime/diagnostics/message-flow-delivery.d.ts +47 -0
- package/dist/runtime/diagnostics/message-flow-delivery.js +149 -0
- package/dist/runtime/diagnostics/message-flow-record.d.ts +50 -0
- package/dist/runtime/diagnostics/message-flow-record.js +228 -0
- package/dist/runtime/diagnostics/message-flow-worker.d.ts +1 -0
- package/dist/runtime/diagnostics/message-flow-worker.js +118 -0
- package/dist/runtime/diagnostics/message-flow.d.ts +7 -19
- package/dist/runtime/diagnostics/message-flow.js +42 -290
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +4 -3
- package/dist/runtime/diagnostics/runtime-metrics.js +8 -4
- package/dist/runtime/execution/index.d.ts +1 -0
- package/dist/runtime/execution/index.js +6 -3
- package/dist/runtime/execution/serial-execution-queue.d.ts +26 -13
- package/dist/runtime/execution/serial-execution-queue.js +75 -71
- package/dist/runtime/foundation/durable-service-request.d.ts +12 -3
- package/dist/runtime/foundation/durable-service-request.js +158 -73
- package/dist/runtime/foundation/operation-registry.d.ts +33 -3
- package/dist/runtime/foundation/operation-registry.js +272 -33
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +62 -23
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +373 -194
- package/dist/runtime/foundation/request-runtime.d.ts +17 -0
- package/dist/runtime/foundation/request-runtime.js +163 -0
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +6 -0
- package/dist/runtime/foundation/service-liveness-registry.d.ts +1 -1
- package/dist/runtime/foundation/service-mailbox.d.ts +4 -2
- package/dist/runtime/foundation/service-mailbox.js +4 -1
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +2 -2
- package/dist/runtime/foundation/service-relocation-object-owner.js +12 -5
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +7 -2
- package/dist/runtime/foundation/service-stateful-registry.d.ts +6 -2
- package/dist/runtime/foundation/service-stateful-registry.js +38 -17
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +91 -26
- package/dist/runtime/foundation/service-stateful-runtime.js +245 -120
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -0
- package/dist/runtime/foundation/service-stateful-wire-codec.js +15 -0
- package/dist/runtime/foundation/service-topology-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-topology-registry.js +13 -3
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +12 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +5 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.js +50 -15
- package/dist/runtime/host/actor-packet-relay.d.ts +5 -6
- package/dist/runtime/host/actor-packet-relay.js +58 -57
- package/dist/runtime/host/actor-placement-coordinator.d.ts +1 -1
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +3 -2
- package/dist/runtime/host/actor-transfer-runtime.d.ts +3 -3
- package/dist/runtime/host/application-job-queue.d.ts +7 -5
- package/dist/runtime/host/application-job-queue.js +33 -21
- package/dist/runtime/host/bound-session-relay.js +0 -1
- package/dist/runtime/host/channel-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -0
- package/dist/runtime/host/entry-actor-runtime.d.ts +5 -2
- package/dist/runtime/host/entry-actor-runtime.js +2 -2
- package/dist/runtime/host/index.d.ts +106 -37
- package/dist/runtime/host/index.js +303 -151
- package/dist/runtime/host/location-runtime-owner.d.ts +2 -2
- package/dist/runtime/host/location-runtime-owner.js +1 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +195 -45
- package/dist/runtime/host/service-relocation-host-runtime.js +257 -144
- package/dist/runtime/host/spot-address-transport.d.ts +3 -0
- package/dist/runtime/host/spot-address-transport.js +73 -76
- package/dist/runtime/host/spot-runtime-options-factory.js +2 -0
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -1
- package/dist/runtime/host/user-spot-creation-coordinator.js +49 -21
- package/dist/runtime/internal-observation.d.ts +1 -0
- package/dist/runtime/internal-observation.js +5 -0
- package/dist/runtime/locations/actor-location-claims.d.ts +1 -1
- package/dist/runtime/locations/actor-location-claims.js +15 -6
- package/dist/runtime/locations/auto-connect-loop.d.ts +0 -1
- package/dist/runtime/locations/auto-connect-loop.js +25 -19
- package/dist/runtime/locations/auto-connect-planner.js +2 -5
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +1 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +35 -23
- package/dist/runtime/locations/in-memory-authority-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-authority-store.js +15 -5
- package/dist/runtime/locations/in-memory-location-store.d.ts +0 -2
- package/dist/runtime/locations/in-memory-location-store.js +1 -38
- package/dist/runtime/locations/lifecycle.d.ts +1 -1
- package/dist/runtime/locations/lifecycle.js +2 -2
- package/dist/runtime/locations/location-store-repository.d.ts +0 -1
- package/dist/runtime/locations/location-store-repository.js +163 -246
- package/dist/runtime/locations/resolvers.d.ts +8 -1
- package/dist/runtime/locations/resolvers.js +16 -2
- package/dist/runtime/locations/runtime.d.ts +3 -3
- package/dist/runtime/locations/runtime.js +12 -16
- package/dist/runtime/messaging/creation-payload-codec.js +8 -7
- package/dist/runtime/messaging/framework-json-v1.d.ts +1 -1
- package/dist/runtime/messaging/framework-json-v1.js +6 -2
- package/dist/runtime/messaging/payload-codec.js +21 -35
- package/dist/runtime/messaging/request-deadline.d.ts +4 -2
- package/dist/runtime/messaging/request-deadline.js +40 -25
- package/dist/runtime/messaging/request-result.d.ts +14 -1
- package/dist/runtime/messaging/request-result.js +74 -13
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +4 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +17 -7
- package/dist/runtime/spots/index.d.ts +28 -7
- package/dist/runtime/spots/index.js +31 -6
- package/dist/runtime/spots/spot-activation-registry.d.ts +3 -2
- package/dist/runtime/spots/spot-activation-registry.js +13 -8
- package/dist/runtime/spots/spot-activation-state.d.ts +2 -0
- package/dist/runtime/spots/spot-activation-state.js +1 -0
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +9 -4
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +33 -12
- package/dist/runtime/spots/spot-actor-ingress-admission.d.ts +40 -0
- package/dist/runtime/spots/spot-actor-ingress-admission.js +78 -0
- package/dist/runtime/spots/spot-actor-membership.js +3 -3
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +16 -43
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +56 -113
- package/dist/runtime/spots/spot-actor-packet-drain.d.ts +1 -0
- package/dist/runtime/spots/spot-actor-packet-drain.js +12 -5
- package/dist/runtime/spots/spot-entry-activation.d.ts +4 -3
- package/dist/runtime/spots/spot-entry-activation.js +7 -12
- package/dist/runtime/spots/spot-handler-registry.d.ts +5 -1
- package/dist/runtime/spots/spot-handler-registry.js +31 -15
- package/dist/runtime/spots/spot-manager-public.js +3 -2
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +11 -6
- package/dist/runtime/spots/spot-node-runtime-manager.js +6 -1
- package/dist/runtime/spots/spot-outbound.d.ts +8 -2
- package/dist/runtime/spots/spot-outbound.js +5 -5
- package/dist/runtime/spots/spot-route-packet-dispatch.js +13 -8
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +3 -3
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +9 -5
- package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -2
- package/dist/runtime/spots/spot-serial-executor.d.ts +2 -1
- package/dist/runtime/spots/spot-serial-turn-executor.js +20 -26
- package/dist/runtime/spots/spot-subscription-dispatch.js +5 -2
- package/dist/runtime/spots/spot-timer.d.ts +1 -1
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +11 -3
- package/dist/runtime/streams/actor-session-binding-registry.js +28 -0
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +2 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +3 -4
- package/dist/runtime/streams/bound-session-service.js +6 -7
- package/dist/runtime/streams/index.d.ts +3 -3
- package/dist/runtime/streams/index.js +22 -2
- package/dist/runtime/streams/managed-stream.js +2 -1
- package/dist/runtime/streams/session-calls.d.ts +1 -1
- package/dist/runtime/streams/session-calls.js +3 -9
- package/dist/runtime/streams/session-context.d.ts +2 -2
- package/dist/runtime/streams/session-context.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +1 -0
- package/dist/runtime/streams/stream-session-runtime.js +64 -33
- package/package.json +3 -3
- package/src/contracts/Actors/ZLinkActor.ts +6 -0
- package/src/contracts/Actors/ZLinkSessionBindingIdentity.ts +7 -0
- package/src/contracts/Actors/index.ts +1 -0
- package/src/contracts/Common/CoreTypes.ts +1 -0
- package/src/contracts/Common/HandlerMessageType.ts +50 -0
- package/src/contracts/Common/ZLinkEncodedPayload.ts +13 -25
- package/src/contracts/Common/ZLinkMessage.ts +11 -7
- package/src/contracts/Common/encoded-payload-storage.ts +4 -16
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Common/payload-slab.ts +29 -0
- package/src/contracts/Configuration/RegistrationBuilders.ts +29 -15
- package/src/contracts/Configuration/RegistrationTypes.ts +19 -0
- package/src/contracts/Handlers/Contexts.ts +1 -0
- package/src/contracts/Locations/Authority.ts +7 -1
- package/src/internal.ts +17 -0
- package/src/nest-integration.ts +1 -0
- package/src/runtime/actors/actor-client.ts +257 -163
- package/src/runtime/actors/actor-context.ts +26 -14
- package/src/runtime/actors/actor-execution-context.ts +2 -2
- package/src/runtime/actors/actor-handoff.ts +86 -51
- package/src/runtime/actors/actor-join-deferred-scope.ts +6 -6
- package/src/runtime/actors/actor-local-native-join.ts +38 -17
- package/src/runtime/actors/actor-mailbox.ts +1 -1
- package/src/runtime/actors/actor-remote-joiner.ts +8 -4
- package/src/runtime/actors/actor-routed-join-transport.ts +13 -5
- package/src/runtime/actors/actor-routed-json-request.ts +3 -0
- package/src/runtime/actors/actor-runtime-contracts.ts +4 -2
- package/src/runtime/actors/actor-runtime-state.ts +1 -1
- package/src/runtime/actors/spot-actor-dispatch.ts +70 -68
- package/src/runtime/admission.ts +42 -15
- package/src/runtime/application-jobs/application-ingress-record-owner.ts +4 -0
- package/src/runtime/backend/contracts/index.ts +77 -10
- package/src/runtime/backend/mesh-completion-table.ts +106 -15
- package/src/runtime/backend/mesh-dispatch-pump.ts +294 -146
- package/src/runtime/backend/node/node-backend-adapter-support.ts +42 -32
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +91 -34
- package/src/runtime/backend/node/node-event-loop-poller.ts +14 -5
- package/src/runtime/backend/node/node-mesh-backend-adapter.ts +5 -1
- package/src/runtime/backend/node/node-raw-binding-port.ts +180 -69
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +386 -157
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +56 -11
- package/src/runtime/backend/raw-binding-port.ts +13 -5
- package/src/runtime/channels/channel-clients.ts +26 -11
- package/src/runtime/channels/channel-dispatch-pipeline.ts +77 -65
- package/src/runtime/channels/channel-dispatch-services.ts +7 -12
- package/src/runtime/channels/channel-dispatchers.ts +93 -39
- package/src/runtime/channels/channel-envelope.ts +680 -144
- package/src/runtime/channels/channel-multipart.ts +17 -13
- package/src/runtime/channels/channel-outbound-operations.ts +204 -178
- package/src/runtime/channels/channel-receive-loops.ts +160 -107
- package/src/runtime/channels/channel-runtime-lifecycle.ts +64 -59
- package/src/runtime/channels/channel-runtime-manager.ts +74 -27
- package/src/runtime/channels/channel-socket-registry.ts +20 -5
- package/src/runtime/channels/channel-transports.ts +414 -287
- package/src/runtime/channels/dispatch-error-reporter.ts +4 -9
- package/src/runtime/channels/local-spot-route-transport.ts +27 -29
- package/src/runtime/channels/router-socket-spot-route-transport.ts +63 -32
- package/src/runtime/channels/source-spot-router.ts +75 -38
- package/src/runtime/channels/spot-node-route-transport.ts +67 -37
- package/src/runtime/channels/spot-route-bridge-transport.ts +62 -30
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +105 -34
- package/src/runtime/diagnostics/dispatch-error-details.ts +10 -2
- package/src/runtime/diagnostics/message-flow-bootstrap.ts +6 -0
- package/src/runtime/diagnostics/message-flow-delivery.ts +171 -0
- package/src/runtime/diagnostics/message-flow-record.ts +295 -0
- package/src/runtime/diagnostics/message-flow-worker.ts +146 -0
- package/src/runtime/diagnostics/message-flow.ts +49 -362
- package/src/runtime/diagnostics/runtime-metrics.ts +10 -4
- package/src/runtime/execution/index.ts +6 -0
- package/src/runtime/execution/serial-execution-queue.ts +94 -96
- package/src/runtime/foundation/durable-service-request.ts +212 -89
- package/src/runtime/foundation/operation-registry.ts +287 -38
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +617 -292
- package/src/runtime/foundation/request-runtime.ts +227 -0
- package/src/runtime/foundation/service-discovery-registry.ts +7 -0
- package/src/runtime/foundation/service-liveness-registry.ts +1 -1
- package/src/runtime/foundation/service-mailbox.ts +7 -2
- package/src/runtime/foundation/service-relocation-object-owner.ts +21 -6
- package/src/runtime/foundation/service-runtime-contracts.ts +12 -2
- package/src/runtime/foundation/service-stateful-registry.ts +52 -19
- package/src/runtime/foundation/service-stateful-runtime.ts +365 -198
- package/src/runtime/foundation/service-stateful-wire-codec.ts +18 -0
- package/src/runtime/foundation/service-topology-registry.ts +21 -3
- package/src/runtime/foundation/service-wire-constants.generated.ts +10 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -17
- package/src/runtime/host/actor-packet-relay.ts +160 -156
- package/src/runtime/host/actor-placement-coordinator.ts +1 -1
- package/src/runtime/host/actor-runtime-options-factory.ts +7 -2
- package/src/runtime/host/actor-transfer-runtime.ts +3 -3
- package/src/runtime/host/application-job-queue.ts +56 -27
- package/src/runtime/host/bound-session-relay.ts +0 -1
- package/src/runtime/host/channel-runtime-options-factory.ts +3 -0
- package/src/runtime/host/entry-actor-runtime.ts +14 -6
- package/src/runtime/host/index.ts +388 -113
- package/src/runtime/host/location-runtime-owner.ts +3 -3
- package/src/runtime/host/service-relocation-host-runtime.ts +380 -252
- package/src/runtime/host/spot-address-transport.ts +110 -95
- package/src/runtime/host/spot-runtime-options-factory.ts +3 -0
- package/src/runtime/host/user-spot-creation-coordinator.ts +69 -22
- package/src/runtime/internal-observation.ts +2 -0
- package/src/runtime/locations/actor-location-claims.ts +42 -16
- package/src/runtime/locations/auto-connect-loop.ts +24 -16
- package/src/runtime/locations/auto-connect-planner.ts +2 -5
- package/src/runtime/locations/auto-connect-reconciler.ts +37 -24
- package/src/runtime/locations/in-memory-authority-store.ts +27 -7
- package/src/runtime/locations/in-memory-location-store.ts +1 -74
- package/src/runtime/locations/lifecycle.ts +4 -2
- package/src/runtime/locations/location-store-repository.ts +228 -308
- package/src/runtime/locations/resolvers.ts +20 -8
- package/src/runtime/locations/runtime.ts +16 -28
- package/src/runtime/messaging/creation-payload-codec.ts +12 -10
- package/src/runtime/messaging/framework-json-v1.ts +10 -1
- package/src/runtime/messaging/payload-codec.ts +50 -75
- package/src/runtime/messaging/request-deadline.ts +47 -39
- package/src/runtime/messaging/request-result.ts +88 -17
- package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
- package/src/runtime/spots/index.ts +57 -10
- package/src/runtime/spots/spot-activation-registry.ts +12 -8
- package/src/runtime/spots/spot-activation-state.ts +2 -0
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +62 -37
- package/src/runtime/spots/spot-actor-ingress-admission.ts +157 -0
- package/src/runtime/spots/spot-actor-membership.ts +8 -5
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +122 -206
- package/src/runtime/spots/spot-actor-packet-drain.ts +21 -6
- package/src/runtime/spots/spot-entry-activation.ts +25 -35
- package/src/runtime/spots/spot-handler-registry.ts +72 -15
- package/src/runtime/spots/spot-manager-public.ts +4 -2
- package/src/runtime/spots/spot-node-runtime-manager.ts +16 -7
- package/src/runtime/spots/spot-outbound.ts +26 -10
- package/src/runtime/spots/spot-route-packet-dispatch.ts +18 -8
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +14 -8
- package/src/runtime/spots/spot-runtime-ports.ts +5 -2
- package/src/runtime/spots/spot-serial-executor.ts +1 -1
- package/src/runtime/spots/spot-serial-turn-executor.ts +25 -40
- package/src/runtime/spots/spot-subscription-dispatch.ts +9 -2
- package/src/runtime/spots/spot-timer.ts +1 -1
- package/src/runtime/streams/actor-session-binding-registry.ts +46 -3
- package/src/runtime/streams/bound-actor-relay-sender.ts +16 -5
- package/src/runtime/streams/bound-session-service.ts +10 -7
- package/src/runtime/streams/index.ts +30 -4
- package/src/runtime/streams/managed-stream.ts +2 -1
- package/src/runtime/streams/session-calls.ts +9 -14
- package/src/runtime/streams/session-context.ts +6 -11
- package/src/runtime/streams/stream-session-runtime.ts +79 -40
- package/dist/runtime/spots/spot-lifecycle-metrics.d.ts +0 -8
- package/dist/runtime/spots/spot-lifecycle-metrics.js +0 -17
- package/src/runtime/spots/spot-lifecycle-metrics.ts +0 -16
|
@@ -36,10 +36,6 @@ const UNSTARTED_DIAGNOSTIC_ENDPOINT = 'inproc://not-started';
|
|
|
36
36
|
const MULTIPART_PACKET_NAME = service_wire_constants_generated_1.SERVICE_FRAMEWORK_MULTIPART_PACKET_NAME;
|
|
37
37
|
const MULTIPART_CONTENT_TYPE = service_wire_constants_generated_1.SERVICE_FRAMEWORK_MULTIPART_CONTENT_TYPE;
|
|
38
38
|
const MAX_DRAIN_RECORDS = 64;
|
|
39
|
-
// The maintenance timer runs at the nearest management deadline and never
|
|
40
|
-
// sooner than this. Only the binding readable handler admits receive work;
|
|
41
|
-
// this timer never probes the socket.
|
|
42
|
-
const MESH_BACKEND_MAINTENANCE_INTERVAL_MS = 1;
|
|
43
39
|
/** The longest single timer delay Node accepts. */
|
|
44
40
|
const MESH_BACKEND_MAINTENANCE_MAX_DELAY_MS = 2 ** 31 - 1;
|
|
45
41
|
// Spec 08 §4.2 bounds the combined turn. Raw gets one equal share; stateful
|
|
@@ -78,11 +74,13 @@ class ZLinkNodeRawMeshBackend {
|
|
|
78
74
|
maintenanceDueMs = Number.POSITIVE_INFINITY;
|
|
79
75
|
pumpTask;
|
|
80
76
|
readable = 0;
|
|
81
|
-
onReadable = (receiveReady, routeReady) => {
|
|
77
|
+
onReadable = (receiveReady, routeReady, connectReady) => {
|
|
82
78
|
if (receiveReady)
|
|
83
79
|
this.readable |= 1;
|
|
84
80
|
if (routeReady)
|
|
85
81
|
this.readable |= 2;
|
|
82
|
+
if (connectReady)
|
|
83
|
+
this.readable |= 4;
|
|
86
84
|
this.pump();
|
|
87
85
|
};
|
|
88
86
|
onMaintenance = () => {
|
|
@@ -110,10 +108,10 @@ class ZLinkNodeRawMeshBackend {
|
|
|
110
108
|
protocolError;
|
|
111
109
|
messageFollowHandler;
|
|
112
110
|
dispatchErrors;
|
|
113
|
-
sessionOwnerDescriptors;
|
|
114
111
|
requestSourceAcceptance;
|
|
112
|
+
sessionOwnerDescriptors;
|
|
115
113
|
peerDisconnectedHandlers = new Set();
|
|
116
|
-
constructor(meshName, routingId, bindingPort, applicationJobQueue, applicationJobReceiveFlowFailureSink, peerAdmissionSealed, infrastructureTaskRunner) {
|
|
114
|
+
constructor(meshName, routingId, bindingPort, applicationJobQueue, applicationJobReceiveFlowFailureSink, peerAdmissionSealed, infrastructureTaskRunner, runtimeDependencies) {
|
|
117
115
|
this.meshName = meshName;
|
|
118
116
|
this.bindingPort = bindingPort;
|
|
119
117
|
this.applicationJobQueue = applicationJobQueue;
|
|
@@ -127,6 +125,8 @@ class ZLinkNodeRawMeshBackend {
|
|
|
127
125
|
}
|
|
128
126
|
this.routingId = routingId;
|
|
129
127
|
this.lifecycleGeneration = createLifecycleGeneration();
|
|
128
|
+
this.runtime = runtimeDependencies?.raw;
|
|
129
|
+
this.stateful = runtimeDependencies?.stateful;
|
|
130
130
|
}
|
|
131
131
|
configureObjectPlacement(options) {
|
|
132
132
|
this.requireNotStarted();
|
|
@@ -180,8 +180,8 @@ class ZLinkNodeRawMeshBackend {
|
|
|
180
180
|
const result = await this.requireStateful().sendToMissingInstanceSpotFrame(target, encodeMultipartApplicationFrame(parts), deadlineUnixMs, sourceSpotId, metadata === undefined ? undefined : (0, service_metadata_codec_1.encodeServiceMetadataFrame)(metadata));
|
|
181
181
|
return result;
|
|
182
182
|
}
|
|
183
|
-
requestToMissingInstanceSpot(target, parts, deadlineUnixMs, sourceSpotId, metadata, onAdmitted) {
|
|
184
|
-
return this.
|
|
183
|
+
requestToMissingInstanceSpot(target, parts, deadlineUnixMs, sourceSpotId, metadata, onAdmitted, requestOperation) {
|
|
184
|
+
return this.observeStatefulRequest(service_runtime_contracts_1.OperationKind.InstanceSpotRequest, requestOperation, () => this.requireStateful().requestToMissingInstanceSpotFrame(target, encodeMultipartApplicationFrame(parts), deadlineUnixMs, sourceSpotId, metadata === undefined ? undefined : (0, service_metadata_codec_1.encodeServiceMetadataFrame)(metadata), onAdmitted, requestOperation));
|
|
185
185
|
}
|
|
186
186
|
setRoutingId(routingId) {
|
|
187
187
|
if (!(0, routing_id_1.routingIdsEqual)((0, routing_id_2.toBackendRoutingId)(routingId), this.routingId)) {
|
|
@@ -200,6 +200,11 @@ class ZLinkNodeRawMeshBackend {
|
|
|
200
200
|
throw new TypeError('MeshNode advertise host must be non-empty.');
|
|
201
201
|
this.advertiseHost = host;
|
|
202
202
|
}
|
|
203
|
+
requests;
|
|
204
|
+
setRequestRuntime(requests) {
|
|
205
|
+
this.requireNotStarted();
|
|
206
|
+
this.requests = requests;
|
|
207
|
+
}
|
|
203
208
|
start() {
|
|
204
209
|
if (this.runtime !== undefined)
|
|
205
210
|
return;
|
|
@@ -209,12 +214,13 @@ class ZLinkNodeRawMeshBackend {
|
|
|
209
214
|
throw new Error('MeshNode bind endpoint is not configured.');
|
|
210
215
|
const descriptor = this.createDescriptor();
|
|
211
216
|
const runtime = new raw_service_mesh_runtime_1.RawServiceMeshRuntime({
|
|
217
|
+
requests: this.requests,
|
|
212
218
|
onPendingOperationsChanged: this.onPendingOperationsChanged,
|
|
213
219
|
descriptor,
|
|
214
220
|
resolveAdvertisedEndpoint: (boundEndpoint) => this.resolveAdvertisedEndpoint(boundEndpoint),
|
|
215
221
|
bindingPort: this.bindingPort,
|
|
216
222
|
applicationJobQueue: this.requireApplicationJobQueue(),
|
|
217
|
-
onReceiveReady: () => this.onReadable(true, false),
|
|
223
|
+
onReceiveReady: () => this.onReadable(true, false, false),
|
|
218
224
|
infrastructureTaskRunner: this.infrastructureTaskRunner,
|
|
219
225
|
peerAdmissionSealed: this.peerAdmissionSealed,
|
|
220
226
|
onReceiveFlowConfigFailure: this.applicationJobReceiveFlowFailureSink,
|
|
@@ -239,7 +245,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
239
245
|
}
|
|
240
246
|
});
|
|
241
247
|
runtime.start();
|
|
242
|
-
this.stateful = new service_stateful_runtime_1.ServiceStatefulRuntime(runtime, descriptor.nodeRoutingId, descriptor.lifecycleGeneration, this.onPendingOperationsChanged);
|
|
248
|
+
this.stateful = new service_stateful_runtime_1.ServiceStatefulRuntime(runtime, descriptor.nodeRoutingId, descriptor.lifecycleGeneration, this.onPendingOperationsChanged, this.requests);
|
|
243
249
|
if (this.dispatchErrors !== undefined) {
|
|
244
250
|
this.stateful.setDispatchErrorReporter(this.dispatchErrors, this.meshName);
|
|
245
251
|
}
|
|
@@ -326,15 +332,28 @@ class ZLinkNodeRawMeshBackend {
|
|
|
326
332
|
async connectPeer(options) {
|
|
327
333
|
const runtime = this.requireRuntime();
|
|
328
334
|
const nodeRoutingId = options.expectedRid === undefined ? undefined : String(options.expectedRid);
|
|
335
|
+
const securityIdentity = options.expectedSecurityIdentity ?? runtime.topology.localDescriptor().securityIdentity;
|
|
336
|
+
for (const [id, existing] of this.peerIntents) {
|
|
337
|
+
if (existing.endpoint !== options.endpoint)
|
|
338
|
+
continue;
|
|
339
|
+
if (existing.nodeRoutingId === nodeRoutingId &&
|
|
340
|
+
existing.securityIdentity === securityIdentity &&
|
|
341
|
+
existing.lifecycleGeneration === options.expectedLifecycleGeneration) {
|
|
342
|
+
return id;
|
|
343
|
+
}
|
|
344
|
+
runtime.disconnectPeerEndpoint(existing.endpoint);
|
|
345
|
+
this.peerIntents.delete(id);
|
|
346
|
+
}
|
|
329
347
|
if (nodeRoutingId === undefined) {
|
|
330
348
|
runtime.connectPeerEndpoint(options.endpoint);
|
|
331
349
|
}
|
|
332
350
|
else {
|
|
333
|
-
runtime.connectPeerByRoutingId(options.endpoint, nodeRoutingId,
|
|
351
|
+
runtime.connectPeerByRoutingId(options.endpoint, nodeRoutingId, securityIdentity, options.expectedLifecycleGeneration);
|
|
334
352
|
}
|
|
335
353
|
const intent = this.nextPeerIntent++;
|
|
336
354
|
this.peerIntents.set(intent, {
|
|
337
355
|
endpoint: options.endpoint,
|
|
356
|
+
securityIdentity,
|
|
338
357
|
...(nodeRoutingId === undefined
|
|
339
358
|
? {}
|
|
340
359
|
: {
|
|
@@ -350,6 +369,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
350
369
|
}
|
|
351
370
|
expectPeer(peer) {
|
|
352
371
|
this.requireRuntime().expectPeerByRoutingId(peer.endpoint, peer.nodeRoutingId, peer.securityIdentity, peer.lifecycleGeneration);
|
|
372
|
+
this.scheduleMaintenance();
|
|
353
373
|
}
|
|
354
374
|
removePeerConnection(intentId) {
|
|
355
375
|
const intent = this.peerIntents.get(intentId);
|
|
@@ -436,22 +456,40 @@ class ZLinkNodeRawMeshBackend {
|
|
|
436
456
|
: zlink_1.SubmitResult.NotConnected;
|
|
437
457
|
}
|
|
438
458
|
async requestInfrastructureControlFrames(targetRid, frames, options) {
|
|
439
|
-
|
|
459
|
+
const runtime = this.requireRuntime();
|
|
460
|
+
const timeoutMs = options?.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS;
|
|
461
|
+
const pending = options?.requestOperation ?? runtime.beginInfrastructureRequest(timeoutMs, options?.signal);
|
|
462
|
+
if (options?.requestOperation !== undefined) {
|
|
463
|
+
return (0, durable_service_request_1.requestDurableService)(runtime, String(targetRid), frames, pending, 'relocation control', options.signal, options.onSubmitted);
|
|
464
|
+
}
|
|
465
|
+
const completed = (reply) => {
|
|
466
|
+
pending.complete(reply);
|
|
467
|
+
};
|
|
468
|
+
const failed = (error) => {
|
|
469
|
+
pending.fail(error);
|
|
470
|
+
};
|
|
471
|
+
void (0, durable_service_request_1.requestDurableService)(runtime, String(targetRid), frames, pending, 'relocation control', options?.signal, options?.onSubmitted).then(completed, failed);
|
|
472
|
+
return pending.promise;
|
|
440
473
|
}
|
|
441
|
-
requestToNode(targetRid, parts, options) {
|
|
442
|
-
const pending = this.requireRuntime().requestToNode(String(targetRid), encodeMultipartApplicationFrame(parts), options?.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, options?.onAdmitted, this.
|
|
474
|
+
requestToNode(targetRid, parts, options, completion) {
|
|
475
|
+
const pending = this.requireRuntime().requestToNode(String(targetRid), encodeMultipartApplicationFrame(parts), options?.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, options?.onAdmitted, this.requestObserverFor(completion), service_runtime_contracts_1.OperationKind.NodeRequest, options?.requestOperation);
|
|
443
476
|
return this.observedOperation(pending, service_runtime_contracts_1.OperationKind.NodeRequest);
|
|
444
477
|
}
|
|
445
|
-
|
|
446
|
-
|
|
478
|
+
sendToChannel(channelName, parts) {
|
|
479
|
+
try {
|
|
480
|
+
return Promise.resolve(this.requireRuntime().sendToChannel(channelName, encodeMultipartApplicationFrame(parts)));
|
|
481
|
+
}
|
|
482
|
+
catch (error) {
|
|
483
|
+
return Promise.reject(error);
|
|
484
|
+
}
|
|
447
485
|
}
|
|
448
|
-
requestToChannel(channelName, parts, options) {
|
|
449
|
-
const pending = this.requireRuntime().requestToChannel(channelName, encodeMultipartApplicationFrame(parts), options?.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, options?.onAdmitted, this.
|
|
486
|
+
requestToChannel(channelName, parts, options, completion) {
|
|
487
|
+
const pending = this.requireRuntime().requestToChannel(channelName, encodeMultipartApplicationFrame(parts), options?.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, options?.onAdmitted, this.requestObserverFor(completion), service_runtime_contracts_1.OperationKind.ChannelRequest, options?.requestOperation);
|
|
450
488
|
return this.observedOperation(pending, service_runtime_contracts_1.OperationKind.ChannelRequest);
|
|
451
489
|
}
|
|
452
490
|
status() {
|
|
453
491
|
const descriptor = this.runtime?.topology.localDescriptor() ?? this.createDescriptor();
|
|
454
|
-
const peers = this.runtime?.topology.peers() ?? [];
|
|
492
|
+
const peers = (this.runtime?.topology.peers() ?? []).filter((peer) => this.runtime?.isPeerRouteReady(peer.descriptor.nodeRoutingId) === true);
|
|
455
493
|
return {
|
|
456
494
|
state: stateCode(descriptor.state),
|
|
457
495
|
routingId: descriptor.nodeRoutingId,
|
|
@@ -705,8 +743,8 @@ class ZLinkNodeRawMeshBackend {
|
|
|
705
743
|
const result = await this.requireStateful().sendToInstanceSpot(route, encodeMultipart(parts), sourceSpotId, metadata === undefined ? undefined : (0, service_metadata_codec_1.encodeServiceMetadataFrame)(metadata), instanceIntent);
|
|
706
744
|
return result;
|
|
707
745
|
}
|
|
708
|
-
requestInstanceSpot(route, parts, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, sourceSpotId, metadata, instanceIntent = false, onAdmitted) {
|
|
709
|
-
return this.
|
|
746
|
+
requestInstanceSpot(route, parts, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, sourceSpotId, metadata, instanceIntent = false, onAdmitted, requestOperation, completion) {
|
|
747
|
+
return this.observeStatefulRequest(service_runtime_contracts_1.OperationKind.InstanceSpotRequest, requestOperation, (receiver) => this.requireStateful().requestToInstanceSpot(route, encodeMultipart(parts), timeoutMs, sourceSpotId, metadata === undefined ? undefined : (0, service_metadata_codec_1.encodeServiceMetadataFrame)(metadata), instanceIntent, onAdmitted, requestOperation, receiver), completion);
|
|
710
748
|
}
|
|
711
749
|
actorLookup(actorId) {
|
|
712
750
|
const actor = this.requireStateful().actor(actorId);
|
|
@@ -745,8 +783,8 @@ class ZLinkNodeRawMeshBackend {
|
|
|
745
783
|
async sendToActor(actor, parts, options) {
|
|
746
784
|
return this.requireStateful().sendToActor(actor, encodeMultipart(parts), undefined, undefined, options?.routeFence);
|
|
747
785
|
}
|
|
748
|
-
requestToActor(actor, parts, options) {
|
|
749
|
-
return this.
|
|
786
|
+
requestToActor(actor, parts, options, completion) {
|
|
787
|
+
return this.observeStatefulRequest(service_runtime_contracts_1.OperationKind.ActorRequest, options?.requestOperation, (receiver) => this.requireStateful().requestToActor(actor, encodeMultipart(parts), options?.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, undefined, undefined, options?.onAdmitted, options?.routeFence, options?.requestOperation, receiver), completion);
|
|
750
788
|
}
|
|
751
789
|
acceptRelocatedActorTerminal(operation, replyRouteId, result) {
|
|
752
790
|
return this.requireStateful().acceptRelocatedActorTerminal(operation, replyRouteId, result);
|
|
@@ -755,7 +793,7 @@ class ZLinkNodeRawMeshBackend {
|
|
|
755
793
|
return (await this.requireStateful().sendToActor(target, encodeMultipart(parts), source));
|
|
756
794
|
}
|
|
757
795
|
actorRequestToActor(source, target, parts, options) {
|
|
758
|
-
return this.
|
|
796
|
+
return this.observeStatefulRequest(service_runtime_contracts_1.OperationKind.ActorRequest, options?.requestOperation, () => this.requireStateful().requestToActor(target, encodeMultipart(parts), options?.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, source, undefined, options?.onAdmitted, undefined, options?.requestOperation));
|
|
759
797
|
}
|
|
760
798
|
async sendActorBoundSession(actor, expectedBindingGeneration, parts, _flags) {
|
|
761
799
|
return (await this.requireStateful().sendBoundSession(actor, expectedBindingGeneration, encodeMultipart(parts)));
|
|
@@ -772,8 +810,8 @@ class ZLinkNodeRawMeshBackend {
|
|
|
772
810
|
async sendFromSpot(source, target, parts) {
|
|
773
811
|
return (await this.requireStateful().sendToSpot(source.ref.spotId, target, encodeMultipart(parts)));
|
|
774
812
|
}
|
|
775
|
-
requestFromSpot(source, target, parts, timeoutMs, onAdmitted) {
|
|
776
|
-
return this.
|
|
813
|
+
requestFromSpot(source, target, parts, timeoutMs, onAdmitted, requestOperation, completion) {
|
|
814
|
+
return this.observeStatefulRequest(service_runtime_contracts_1.OperationKind.SpotRequest, requestOperation, (receiver) => this.requireStateful().requestToSpot(source.ref.spotId, target, encodeMultipart(parts), timeoutMs, onAdmitted, requestOperation, receiver), completion);
|
|
777
815
|
}
|
|
778
816
|
closeSpot(state) {
|
|
779
817
|
return this.requireStateful().registry.closeSpot(state.ref);
|
|
@@ -827,18 +865,15 @@ class ZLinkNodeRawMeshBackend {
|
|
|
827
865
|
/**
|
|
828
866
|
* Arms the one maintenance timer for the nearest management deadline
|
|
829
867
|
* (spec 08 §4.2): request expiry, liveness, or a pending peer handshake.
|
|
830
|
-
*
|
|
868
|
+
* The timer follows changes to the index visit or the other management deadlines.
|
|
831
869
|
*/
|
|
832
870
|
scheduleMaintenance() {
|
|
833
871
|
if (this.closed)
|
|
834
872
|
return;
|
|
835
873
|
const nowMs = performance.now();
|
|
836
|
-
const dueMs = Math.
|
|
874
|
+
const dueMs = Math.min(this.runtime?.nextMaintenanceDeadlineMs(nowMs) ?? Number.POSITIVE_INFINITY, this.stateful?.nextMaintenanceDeadlineMs() ?? Number.POSITIVE_INFINITY);
|
|
837
875
|
if (dueMs === Number.POSITIVE_INFINITY) {
|
|
838
|
-
|
|
839
|
-
clearTimeout(this.maintenanceTimer);
|
|
840
|
-
this.maintenanceTimer = undefined;
|
|
841
|
-
this.maintenanceDueMs = dueMs;
|
|
876
|
+
this.maintenanceTimer?.unref();
|
|
842
877
|
return;
|
|
843
878
|
}
|
|
844
879
|
if (this.maintenanceTimer === undefined || dueMs < this.maintenanceDueMs) {
|
|
@@ -860,30 +895,79 @@ class ZLinkNodeRawMeshBackend {
|
|
|
860
895
|
pump() {
|
|
861
896
|
if (this.closed || this.pumpTask !== undefined)
|
|
862
897
|
return;
|
|
863
|
-
|
|
898
|
+
const runtime = this.requireRuntime();
|
|
899
|
+
let complete;
|
|
900
|
+
let fail;
|
|
901
|
+
// Publish the join owner before receive can signal readiness or start close.
|
|
902
|
+
// The receive turn itself needs no startup Promise continuation.
|
|
903
|
+
this.pumpTask = new Promise((resolve, reject) => {
|
|
904
|
+
complete = resolve;
|
|
905
|
+
fail = reject;
|
|
906
|
+
});
|
|
907
|
+
this.runPump(runtime, complete, fail);
|
|
864
908
|
}
|
|
865
|
-
|
|
866
|
-
// Publish pumpTask before any callback can signal readiness or begin close.
|
|
867
|
-
await Promise.resolve();
|
|
909
|
+
runPump(runtime, complete, fail) {
|
|
868
910
|
try {
|
|
869
911
|
do {
|
|
870
|
-
const
|
|
871
|
-
|
|
872
|
-
|
|
912
|
+
const batch = this.pumpReceiveBatch(runtime);
|
|
913
|
+
if (batch !== false) {
|
|
914
|
+
// Only suspended work needs an async continuation. A completed receive
|
|
915
|
+
// rotation uses the published join without allocating another Promise.
|
|
916
|
+
void this.resumePump(runtime, batch, complete, fail);
|
|
917
|
+
return;
|
|
918
|
+
}
|
|
919
|
+
} while (this.hasPumpReadiness());
|
|
920
|
+
}
|
|
921
|
+
catch (error) {
|
|
922
|
+
this.finishPump(complete, fail, runtime, error);
|
|
923
|
+
return;
|
|
924
|
+
}
|
|
925
|
+
this.finishPump(complete, fail);
|
|
926
|
+
}
|
|
927
|
+
async resumePump(runtime, batch, complete, fail) {
|
|
928
|
+
try {
|
|
929
|
+
for (;;) {
|
|
930
|
+
const more = batch instanceof Promise ? await batch : batch;
|
|
873
931
|
if (more) {
|
|
874
932
|
// Yield only after actual progress, retaining readiness across the
|
|
875
933
|
// existing batch limits until receive reports no data.
|
|
876
934
|
this.readable |= 1;
|
|
877
935
|
await (0, promises_1.setImmediate)();
|
|
878
936
|
}
|
|
879
|
-
|
|
937
|
+
if (!this.hasPumpReadiness())
|
|
938
|
+
break;
|
|
939
|
+
batch = this.pumpReceiveBatch(runtime);
|
|
940
|
+
}
|
|
880
941
|
}
|
|
881
942
|
catch (error) {
|
|
882
|
-
|
|
943
|
+
this.finishPump(complete, fail, runtime, error);
|
|
944
|
+
return;
|
|
945
|
+
}
|
|
946
|
+
this.finishPump(complete, fail);
|
|
947
|
+
}
|
|
948
|
+
pumpReceiveBatch(runtime) {
|
|
949
|
+
const ready = this.readable;
|
|
950
|
+
this.readable = 0;
|
|
951
|
+
return runtime.pumpBatch((ready & 1) !== 0, (ready & 2) !== 0, (ready & 4) !== 0);
|
|
952
|
+
}
|
|
953
|
+
hasPumpReadiness() {
|
|
954
|
+
return !this.closed && this.readable !== 0;
|
|
955
|
+
}
|
|
956
|
+
finishPump(complete, fail, failedRuntime, error) {
|
|
957
|
+
try {
|
|
958
|
+
try {
|
|
959
|
+
if (failedRuntime !== undefined)
|
|
960
|
+
failedRuntime.reportInfrastructureFailure(error);
|
|
961
|
+
}
|
|
962
|
+
finally {
|
|
963
|
+
this.pumpTask = undefined;
|
|
964
|
+
this.scheduleMaintenance();
|
|
965
|
+
}
|
|
966
|
+
complete();
|
|
883
967
|
}
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
968
|
+
catch (error) {
|
|
969
|
+
// Forward reporting and maintenance failures to the published join owner.
|
|
970
|
+
fail(error);
|
|
887
971
|
}
|
|
888
972
|
}
|
|
889
973
|
notifyReady() {
|
|
@@ -899,31 +983,59 @@ class ZLinkNodeRawMeshBackend {
|
|
|
899
983
|
this.readyHandler?.(domains);
|
|
900
984
|
}
|
|
901
985
|
/**
|
|
902
|
-
*
|
|
903
|
-
*
|
|
986
|
+
* Publishes native results after submission returns and the completion slot has its id.
|
|
987
|
+
* A caller-owned entry is completed after the result is mapped.
|
|
904
988
|
*/
|
|
905
989
|
requestObserver = {
|
|
906
|
-
operationCompleted: (id, result, operationKind) => this.deliverCompletion({ high: 1n, low: id }, operationKind ?? 0, result),
|
|
907
|
-
operationFailed: (id, error, operationKind) => this.deliverCompletion({ high: 1n, low: id }, operationKind ?? 0, requestFailureResult(error))
|
|
990
|
+
operationCompleted: (id, result, operationKind) => queueMicrotask(() => this.deliverCompletion({ high: 1n, low: id }, operationKind ?? 0, result)),
|
|
991
|
+
operationFailed: (id, error, operationKind) => queueMicrotask(() => this.deliverCompletion({ high: 1n, low: id }, operationKind ?? 0, requestFailureResult(error)))
|
|
908
992
|
};
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
993
|
+
requestObserverFor(completion) {
|
|
994
|
+
if (completion === undefined)
|
|
995
|
+
return this.requestObserver;
|
|
996
|
+
return {
|
|
997
|
+
operationCompleted: (id, result, operationKind) => queueMicrotask(() => this.deliverCompletion({ high: 1n, low: id }, operationKind ?? 0, result, completion)),
|
|
998
|
+
operationFailed: (id, error, operationKind) => queueMicrotask(() => this.deliverCompletion({ high: 1n, low: id }, operationKind ?? 0, requestFailureResult(error), completion))
|
|
999
|
+
};
|
|
913
1000
|
}
|
|
914
|
-
|
|
915
|
-
const id = { high: 1n, low };
|
|
916
|
-
|
|
917
|
-
|
|
1001
|
+
observedOperation(pending, operationKind) {
|
|
1002
|
+
const id = { high: 1n, low: pending.id };
|
|
1003
|
+
if (pending.promise !== undefined && !pending.hasObserver()) {
|
|
1004
|
+
void pending.promise.then((result) => this.deliverCompletion(id, operationKind, result), (error) => this.deliverCompletion(id, operationKind, requestFailureResult(error)));
|
|
1005
|
+
}
|
|
1006
|
+
return this.requestSubmission(id, pending);
|
|
1007
|
+
}
|
|
1008
|
+
observeStatefulRequest(kind, entry, submit, completion) {
|
|
1009
|
+
if (entry === undefined)
|
|
1010
|
+
return this.observeStateful(kind, submit(), completion);
|
|
1011
|
+
const id = { high: operation_identity_1.ZLINK_NATIVE_CORRELATION_OPERATION_NAMESPACE, low: entry.id };
|
|
1012
|
+
const receiver = {
|
|
1013
|
+
operationCompleted: (_operationId, value) => queueMicrotask(() => this.deliverCompletion(id, kind, value, completion)),
|
|
1014
|
+
operationFailed: (_operationId, error) => queueMicrotask(() => this.deliverCompletion(id, kind, requestFailureResult(error), completion))
|
|
1015
|
+
};
|
|
1016
|
+
if (completion === undefined) {
|
|
1017
|
+
entry.setObserver(receiver);
|
|
1018
|
+
submit();
|
|
1019
|
+
}
|
|
1020
|
+
else
|
|
1021
|
+
submit(receiver);
|
|
1022
|
+
return this.requestSubmission(id, entry);
|
|
918
1023
|
}
|
|
919
|
-
observeStateful(operationKind, pending) {
|
|
1024
|
+
observeStateful(operationKind, pending, completion) {
|
|
920
1025
|
const id = { high: operation_identity_1.ZLINK_NATIVE_CORRELATION_OPERATION_NAMESPACE, low: pending.id };
|
|
921
|
-
void pending.promise.then((result) => this.deliverCompletion(id, operationKind, result), (error) => this.deliverCompletion(id, operationKind, requestFailureResult(error)));
|
|
922
|
-
return id;
|
|
1026
|
+
void pending.promise.then((result) => this.deliverCompletion(id, operationKind, result, completion), (error) => this.deliverCompletion(id, operationKind, requestFailureResult(error), completion));
|
|
1027
|
+
return this.requestSubmission(id, pending);
|
|
923
1028
|
}
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
1029
|
+
requestSubmission(id, requestOperation) {
|
|
1030
|
+
return Object.defineProperty({ ...id }, 'requestOperation', {
|
|
1031
|
+
value: requestOperation,
|
|
1032
|
+
configurable: true
|
|
1033
|
+
});
|
|
1034
|
+
}
|
|
1035
|
+
deliverCompletion(operationId, operationKind, result, completion = this
|
|
1036
|
+
.completionHandler) {
|
|
1037
|
+
if (completion !== undefined) {
|
|
1038
|
+
completion({ operationId, terminalResult: result.terminalResult }, () => completionRecord(operationId, operationKind, result));
|
|
927
1039
|
return;
|
|
928
1040
|
}
|
|
929
1041
|
// The raw pull contract uses the existing infrastructure mailbox. A
|
|
@@ -1004,10 +1116,15 @@ class RawServiceSpot {
|
|
|
1004
1116
|
lifecycleGeneration: this.lifecycleGeneration
|
|
1005
1117
|
};
|
|
1006
1118
|
}
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1119
|
+
sendToChannel(channelName, parts, options) {
|
|
1120
|
+
try {
|
|
1121
|
+
this.requireOpen();
|
|
1122
|
+
void options;
|
|
1123
|
+
return this.backend.sendToChannel(channelName, parts);
|
|
1124
|
+
}
|
|
1125
|
+
catch (error) {
|
|
1126
|
+
return Promise.reject(error);
|
|
1127
|
+
}
|
|
1011
1128
|
}
|
|
1012
1129
|
requestToChannel(channelName, parts, options) {
|
|
1013
1130
|
this.requireOpen();
|
|
@@ -1020,12 +1137,12 @@ class RawServiceSpot {
|
|
|
1020
1137
|
: undefined);
|
|
1021
1138
|
return this.backend.sendFromSpot(this.state, routeFence, parts);
|
|
1022
1139
|
}
|
|
1023
|
-
requestToSpot(targetNodeRid, targetSpotId, targetSpotGeneration, parts, options) {
|
|
1140
|
+
requestToSpot(targetNodeRid, targetSpotId, targetSpotGeneration, parts, options, completion) {
|
|
1024
1141
|
this.requireOpen();
|
|
1025
1142
|
const routeFence = requireDirectSpotRouteFence(options?.routeFence, String(targetNodeRid), String(targetSpotId), targetSpotGeneration, options?.entrySpot === true
|
|
1026
1143
|
? this.backend.entrySpotRouteFence(String(targetNodeRid), String(targetSpotId))
|
|
1027
1144
|
: undefined);
|
|
1028
|
-
return this.backend.requestFromSpot(this.state, routeFence, parts, options?.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, options?.onAdmitted);
|
|
1145
|
+
return this.backend.requestFromSpot(this.state, routeFence, parts, options?.timeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, options?.onAdmitted, options?.requestOperation, completion);
|
|
1029
1146
|
}
|
|
1030
1147
|
async publish(channelName, topic, parts, options) {
|
|
1031
1148
|
this.requireOpen();
|
|
@@ -1331,13 +1448,16 @@ function completionRecord(operationId, operationKind, result) {
|
|
|
1331
1448
|
kindData: 'kindData' in result ? (result.kindData ?? null) : null,
|
|
1332
1449
|
terminalResult: result.terminalResult,
|
|
1333
1450
|
failureErrno: result.failureCode,
|
|
1451
|
+
...('failureMessage' in result && result.failureMessage !== undefined
|
|
1452
|
+
? { failureMessage: result.failureMessage }
|
|
1453
|
+
: {}),
|
|
1334
1454
|
parts: payload === undefined
|
|
1335
1455
|
? []
|
|
1336
1456
|
: payload.contentType === MULTIPART_CONTENT_TYPE
|
|
1337
1457
|
? decodeMultipart(payload.payload)
|
|
1338
1458
|
: [runtime_message_1.ZLinkBufferMessage.from(payload.payload)],
|
|
1339
|
-
reply:
|
|
1340
|
-
replyActorJoin:
|
|
1459
|
+
reply: replyInvalidState,
|
|
1460
|
+
replyActorJoin: replyActorJoinNotSupported
|
|
1341
1461
|
};
|
|
1342
1462
|
}
|
|
1343
1463
|
function decodeMultipartRecord(runtime, record) {
|
|
@@ -1386,15 +1506,10 @@ function decodeMultipartRecord(runtime, record) {
|
|
|
1386
1506
|
const values = Array.isArray(parts) ? parts : [parts];
|
|
1387
1507
|
if (values.length === 0)
|
|
1388
1508
|
return zlink_1.SubmitResult.InvalidState;
|
|
1389
|
-
runtime.replyService(
|
|
1390
|
-
sourceRoutingId: record.sourceRoutingId,
|
|
1391
|
-
...(record.sourceRoute === undefined ? {} : { sourceRoute: record.sourceRoute }),
|
|
1392
|
-
requestSequence: record.requestSequence,
|
|
1393
|
-
...(record.reply === undefined ? {} : { reply: record.reply })
|
|
1394
|
-
}, values.map((value) => Buffer.from(messageBytesView(value))));
|
|
1509
|
+
runtime.replyService(record, values.map(messagePayloadView));
|
|
1395
1510
|
return zlink_1.SubmitResult.Ok;
|
|
1396
1511
|
},
|
|
1397
|
-
replyActorJoin:
|
|
1512
|
+
replyActorJoin: replyActorJoinNotSupported
|
|
1398
1513
|
};
|
|
1399
1514
|
}
|
|
1400
1515
|
const header = record.parts[0];
|
|
@@ -1453,6 +1568,9 @@ function decodeMultipartRecord(runtime, record) {
|
|
|
1453
1568
|
function releaseRecordApplicationJob() {
|
|
1454
1569
|
this.applicationJobPermit?.close();
|
|
1455
1570
|
}
|
|
1571
|
+
function replyInvalidState() {
|
|
1572
|
+
return zlink_1.SubmitResult.InvalidState;
|
|
1573
|
+
}
|
|
1456
1574
|
function replyActorJoinNotSupported() {
|
|
1457
1575
|
return zlink_1.SubmitResult.NotSupported;
|
|
1458
1576
|
}
|
|
@@ -1553,10 +1671,10 @@ function decodeStatefulRecord(record, stateful) {
|
|
|
1553
1671
|
});
|
|
1554
1672
|
return accepted ? zlink_1.SubmitResult.Ok : zlink_1.SubmitResult.InvalidState;
|
|
1555
1673
|
},
|
|
1556
|
-
replyFailure(terminalResult, failureCode) {
|
|
1674
|
+
replyFailure(terminalResult, failureCode, tail) {
|
|
1557
1675
|
if (stateful.reply === undefined)
|
|
1558
1676
|
return zlink_1.SubmitResult.InvalidState;
|
|
1559
|
-
return stateful.reply(terminalResult, failureCode)
|
|
1677
|
+
return stateful.reply(terminalResult, failureCode, undefined, tail)
|
|
1560
1678
|
? zlink_1.SubmitResult.Ok
|
|
1561
1679
|
: zlink_1.SubmitResult.InvalidState;
|
|
1562
1680
|
}
|
|
@@ -1564,12 +1682,15 @@ function decodeStatefulRecord(record, stateful) {
|
|
|
1564
1682
|
}
|
|
1565
1683
|
function receiveIngressLifecycle(record) {
|
|
1566
1684
|
const applicationJob = record.applicationJob;
|
|
1567
|
-
return
|
|
1568
|
-
? {}
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1685
|
+
return {
|
|
1686
|
+
...(record.receivedAt === undefined ? {} : { receivedAt: record.receivedAt }),
|
|
1687
|
+
...(applicationJob === undefined
|
|
1688
|
+
? {}
|
|
1689
|
+
: {
|
|
1690
|
+
applicationJobPermit: applicationJob,
|
|
1691
|
+
releaseRetainedIngress: () => applicationJob.close()
|
|
1692
|
+
})
|
|
1693
|
+
};
|
|
1573
1694
|
}
|
|
1574
1695
|
function prepareStatefulMailboxDispatch(signal) {
|
|
1575
1696
|
const mailboxRecord = this.statefulMailboxRecord;
|
|
@@ -1660,32 +1781,17 @@ function encodeMultipart(parts) {
|
|
|
1660
1781
|
const values = Array.isArray(parts) ? parts : [parts];
|
|
1661
1782
|
if (values.length === 0)
|
|
1662
1783
|
throw new TypeError('Multipart payload must contain at least one part.');
|
|
1663
|
-
// messageBytesView aliases the caller's buffer; the parts are consumed
|
|
1664
|
-
// synchronously by the copy loop below and never retained.
|
|
1665
|
-
const bytes = values.map(messageBytesView);
|
|
1666
|
-
let size = 4;
|
|
1667
|
-
for (const part of bytes)
|
|
1668
|
-
size += 4 + part.byteLength;
|
|
1669
|
-
const payload = Buffer.alloc(size);
|
|
1670
|
-
payload.writeUInt32BE(bytes.length, 0);
|
|
1671
|
-
let offset = 4;
|
|
1672
|
-
for (const part of bytes) {
|
|
1673
|
-
payload.writeUInt32BE(part.byteLength, offset);
|
|
1674
|
-
offset += 4;
|
|
1675
|
-
payload.set(part, offset);
|
|
1676
|
-
offset += part.byteLength;
|
|
1677
|
-
}
|
|
1678
1784
|
return {
|
|
1679
1785
|
packetName: MULTIPART_PACKET_NAME,
|
|
1680
1786
|
contentType: MULTIPART_CONTENT_TYPE,
|
|
1681
|
-
payload
|
|
1787
|
+
payload: (0, service_wire_m6a_codec_1.encodeMultipartPayload)(values.map(messagePayloadView))
|
|
1682
1788
|
};
|
|
1683
1789
|
}
|
|
1684
1790
|
function encodeMultipartApplicationFrame(parts) {
|
|
1685
1791
|
const values = Array.isArray(parts) ? parts : [parts];
|
|
1686
1792
|
if (values.length === 0)
|
|
1687
1793
|
throw new TypeError('Multipart payload must contain at least one part.');
|
|
1688
|
-
return (0, service_wire_m6a_codec_1.encodeMultipartApplicationPayload)(values.map(
|
|
1794
|
+
return (0, service_wire_m6a_codec_1.encodeMultipartApplicationPayload)(values.map(messagePayloadView), MULTIPART_PACKET_NAME, MULTIPART_CONTENT_TYPE);
|
|
1689
1795
|
}
|
|
1690
1796
|
function decodeMultipart(payload) {
|
|
1691
1797
|
return (0, service_wire_m6a_codec_1.decodeMultipartParts)(payload, runtime_message_1.ZLinkBufferMessage.fromOwned, closeMultipartMessage);
|
|
@@ -1696,12 +1802,10 @@ function closeMultipartMessage(part) {
|
|
|
1696
1802
|
function borrowMultipartPart(part) {
|
|
1697
1803
|
return part;
|
|
1698
1804
|
}
|
|
1699
|
-
function
|
|
1805
|
+
function messagePayloadView(value) {
|
|
1700
1806
|
if (typeof value === 'object' && 'data' in value) {
|
|
1701
1807
|
return value.data();
|
|
1702
1808
|
}
|
|
1703
|
-
if (typeof value === 'string')
|
|
1704
|
-
return Buffer.from(value);
|
|
1705
1809
|
return value;
|
|
1706
1810
|
}
|
|
1707
1811
|
function requireRawReadyBatch(batch) {
|
|
@@ -4,6 +4,7 @@ exports.wrapSocket = wrapSocket;
|
|
|
4
4
|
exports.nodeEventLoopPollerOf = nodeEventLoopPollerOf;
|
|
5
5
|
exports.disconnectSocketPeer = disconnectSocketPeer;
|
|
6
6
|
exports.isEndpointCloseIgnorableError = isEndpointCloseIgnorableError;
|
|
7
|
+
const request_runtime_1 = require("../../foundation/request-runtime");
|
|
7
8
|
const RegistrationBuilderPolicy_1 = require("../../../contracts/Configuration/RegistrationBuilderPolicy");
|
|
8
9
|
const node_backend_adapter_support_1 = require("./node-backend-adapter-support");
|
|
9
10
|
const node_event_loop_poller_1 = require("./node-event-loop-poller");
|
|
@@ -18,10 +19,23 @@ function wrapSocket(nativeInstance, pollCompletion) {
|
|
|
18
19
|
const eventLoopPoller = pollCompletion === undefined
|
|
19
20
|
? undefined
|
|
20
21
|
: new node_event_loop_poller_1.ZLinkNodeEventLoopPoller(nativeInstance, pollCompletion, () => { });
|
|
22
|
+
const requests = new request_runtime_1.RequestRuntime();
|
|
23
|
+
const submitSocketRequest = (operation, payload, timeoutMs, recordReceived, onAdmitted, requestOperation, receiver) => {
|
|
24
|
+
const pending = requests.begin(timeoutMs, undefined, requestOperation);
|
|
25
|
+
(0, node_backend_adapter_support_1.submitBindingRequest)(operation, payload, timeoutMs, recordReceived, onAdmitted, pending, receiver ?? {
|
|
26
|
+
operationCompleted: (_id, parts) => {
|
|
27
|
+
if (!pending.reply(parts))
|
|
28
|
+
(0, node_backend_adapter_support_1.closeBindingReply)(parts);
|
|
29
|
+
},
|
|
30
|
+
operationFailed: (_id, error) => pending.replyFailure(error)
|
|
31
|
+
});
|
|
32
|
+
return pending.promise;
|
|
33
|
+
};
|
|
21
34
|
const adapter = {
|
|
22
35
|
nativeInstance,
|
|
23
36
|
receiveAdmission: undefined,
|
|
24
37
|
async dispose() {
|
|
38
|
+
requests.close();
|
|
25
39
|
eventLoopPoller?.dispose();
|
|
26
40
|
(0, node_backend_adapter_support_1.closeBindingHandle)(nativeInstance);
|
|
27
41
|
},
|
|
@@ -144,12 +158,12 @@ function wrapSocket(nativeInstance, pollCompletion) {
|
|
|
144
158
|
},
|
|
145
159
|
request(...args) {
|
|
146
160
|
if (hasRoutedPeer) {
|
|
147
|
-
const [routingId, payload, timeoutMs, onAdmitted] = args;
|
|
148
|
-
return (
|
|
161
|
+
const [routingId, payload, timeoutMs, onAdmitted, requestOperation, receiver] = args;
|
|
162
|
+
return submitSocketRequest(nativeInstance.request((0, node_backend_adapter_support_1.toNativeRoutingId)(routingId)), payload, timeoutMs, undefined, onAdmitted, requestOperation, receiver);
|
|
149
163
|
}
|
|
150
164
|
if (hasRequest) {
|
|
151
|
-
const [payload, timeoutMs, onAdmitted] = args;
|
|
152
|
-
return (
|
|
165
|
+
const [payload, timeoutMs, onAdmitted, requestOperation, receiver] = args;
|
|
166
|
+
return submitSocketRequest(nativeInstance.request(), payload, timeoutMs, adapter.receiveAdmission?.recordReceived, onAdmitted, requestOperation, receiver);
|
|
153
167
|
}
|
|
154
168
|
throw new TypeError('Backend request requires a DEALER or ROUTER socket.');
|
|
155
169
|
},
|
|
@@ -201,8 +215,8 @@ function wrapSocket(nativeInstance, pollCompletion) {
|
|
|
201
215
|
const operation = nativeInstance.sendToSpot((0, node_backend_adapter_support_1.toNativeRoutingId)(targetRid), (0, node_backend_adapter_support_1.toNativeRoutingId)(targetSpot));
|
|
202
216
|
await (0, node_backend_adapter_support_1.submitBindingAsyncSend)(operation, payload);
|
|
203
217
|
},
|
|
204
|
-
requestToSpot(targetRid, targetSpot, payload, timeoutMs, onAdmitted) {
|
|
205
|
-
return (
|
|
218
|
+
requestToSpot(targetRid, targetSpot, payload, timeoutMs, onAdmitted, requestOperation, receiver) {
|
|
219
|
+
return submitSocketRequest(nativeInstance.requestToSpot((0, node_backend_adapter_support_1.toNativeRoutingId)(targetRid), (0, node_backend_adapter_support_1.toNativeRoutingId)(targetSpot)), payload, timeoutMs, undefined, onAdmitted, requestOperation, receiver);
|
|
206
220
|
},
|
|
207
221
|
disconnectPeer(routingId) {
|
|
208
222
|
disconnectSocketPeer(nativeInstance, (0, node_backend_adapter_support_1.toNativeRoutingId)(routingId));
|