code wiki / (root) / nx_lib_probe.nx

nx_lib_probe.nx source

↩ module page · 42 lines · 1822 B

1// nx_lib_probe.nx -- sovereign HTTP CLIENT that hits the live nx_lib_httpd 2// (127.0.0.1:8095) and prints the response. Proves the read API serves over 3// real TCP, all .nx -- no curl, no python. Reuses the socket syscalls via 4// nx_lib_serve's nx_syscalls import. 5import "nx_lib_serve.nx" 6import "nx_connect.nx" // bounded connect: a raw sys_connect hangs ~127s on a black-holed host 7const K_MAGIC_8095: i64 = 8095 8const K_MAGIC_262144: i64 = 262144 9 10func lp_sockaddr(addr: *u8, port: i64) -> i64 { 11 addr[0] = 2 as u8 // AF_INET 12 addr[1] = 0 as u8 13 addr[2] = ((port / 256) & 255) as u8 // port hi (network order) 14 addr[3] = (port & 255) as u8 // port lo 15 addr[4] = 127 as u8 // 127.0.0.1 16 addr[5] = 0 as u8 17 addr[6] = 0 as u8 18 addr[7] = 1 as u8 19 var i: i64 = 8 20 while i < 16 { addr[i] = 0 as u8; i = i + 1 } 21 return 0 22} 23 24func main() -> i64 { 25 let fd: i64 = sys_socket(2, 1, 0) 26 if fd < 0 { sys_write(1, "probe: socket fail\n" as *u8, 19); return 1 } 27 let addr: *u8 = sys_mmap(16) 28 lp_sockaddr(addr, K_MAGIC_8095) 29 if nx_connect_bounded(fd, addr, 16, NX_CONN_DEFAULT_MS) < 0 { 30 sys_write(1, "probe: connect FAIL (daemon not listening on :8095)\n" as *u8, 51) 31 return 2 32 } 33 let req: *u8 = "GET /work/GBIF_1000003 HTTP/1.0\r\nHost: nishi\r\n\r\n" as *u8 34 sys_write(fd, req, ls_strlen(req)) 35 let buf: *u8 = sys_mmap(K_MAGIC_262144) 36 let n: i64 = sys_read(fd, buf, K_MAGIC_262144) 37 sys_close(fd) 38 sys_write(1, "=== live reader page over TCP (:8095 GET /work/GBIF_1000003, a REAL taxon) ===\n" as *u8, 78) 39 if n > 0 { sys_write(1, buf, n) } 40 sys_write(1, "\n=== end (real 16K-taxon catalog, server-rendered by nx_lib_httpd; no python/curl) ===\n" as *u8, 87) 41 return 0 42}