aboutsummaryrefslogtreecommitdiffstats
path: root/docs/research/068-opaque-app-core.md
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-09-27 08:22:21 +0100
committereunhhu <[email protected]>2026-09-27 08:22:21 +0100
commitddff7e15d1d0e90a5f5a52fcc93828c8ef0bbd5c (patch)
tree525426cea636be02a2f9c5c83df60ca8067c5c90 /docs/research/068-opaque-app-core.md
parent25397ebb79fb554f4fa795603ee84d2aede83594 (diff)
downloadpure-ddff7e15d1d0e90a5f5a52fcc93828c8ef0bbd5c.tar.gz
pure-ddff7e15d1d0e90a5f5a52fcc93828c8ef0bbd5c.zip
Make an API's answers the app's events (--reply OUTPUT=INPUT)
The final answer to each send of a wired output (a 2xx, or a 4xx but 408 and 429) becomes a message event of the given input: fields from the answer's JSON object by name, other members skipped; a field the answer lacks from the send's field of that name and type, so the request's own id is there; a u32 http_status field is the status. It is applied with the send's number from the wire's source, before the send is trimmed and in the same save, so an answer that comes again after a restart (the API repeating itself for the Idempotency-Key) applies once. Sends that wait for answers go one per request; answers are saved with the next round, or at once when none waits. A server that writes an answer in pieces holds the second until the first is acknowledged, and a delayed acknowledgement stalled every answer 40 ms: the client now acknowledges at once (TCP_QUICKACK) after each read. Against a payments API that answers 200 or 402, with the sender killed (-9) midway, paid and declined orders matched the API's answers one to one.
Diffstat (limited to 'docs/research/068-opaque-app-core.md')
0 files changed, 0 insertions, 0 deletions