code wiki / (root) / nx_fetch_default_decode_gate_t253.nx

nx_fetch_default_decode_gate_t253.nx source

↩ module page · 16 lines · 994 B

1// Exercise the shared default decoded API; caller supplies admitted output budget. 2// Only status, framing and byte counts are emitted. No session headers or body. 3import "nx_fetch_status_live_gate_t252.nx" 4func main(argc:i64,argv:*i64)->i64{ 5 if argc!=3{return 2};let cap:i64=hsl_size(argv[2] as *u8);if cap<=0{return 2} 6 let store:i64=hf_store_load();if store<=0{return 3} 7 let out:*u8=sys_mmap_try(cap);if (out as i64)==0{return 4} 8 let n:i64=hf_fetch(store,argv[1] as *u8,0,0,out,cap) 9 fa_puts("default_decoded_result=");fa_putn(n);fa_puts(" caller_budget=");fa_putn(cap);fa_puts("\n") 10 if n<=0{return 5} 11 let he:i64=hf_body_off(out,n);if he<0{return 6} 12 let st:i64=nx_http_resp_status_code(out,n);let enc:i64=hfd_hdr_enc(out,he) 13 fa_puts("status=");fa_putn(st);fa_puts(" header_bytes=");fa_putn(he);fa_puts(" decoded_body_bytes=");fa_putn(n-he);fa_puts(" content_encoding_enum=");fa_putn(enc);fa_puts("\n") 14 sys_munmap_direct(out,cap) 15 if st!=200{return 7};if enc!=0{return 8};return 0 16}