code wiki / _hdl_build / nx_room_stream_gate.nx

nx_room_stream_gate.nx source

↩ module page · 96 lines · 4414 B

1// nx_room_stream_gate.nx -- T4: proves the SOVEREIGN no-WebSocket media down-channel. 2// Composes nx_room_stream (HTTP/1.1 chunked transfer wire) + nx_video_client_wasm 3// (vc_wire room-frame format the browser client core packs/parses). Proves: 4// 1) raw payloads round-trip byte-exact through chunked encode->decode (1- & multi-digit hex) 5// 2) terminator chunk (len 0) ends the stream 6// 3) malformed chunk length is REJECTED (neg-control = no false-green) 7// 4) a real vc_wire media frame survives the chunked stream, kind/seq/payload byte-exact 8// All built nx_cc_sovereign -> nxasm_x86 (no gcc, no .sh, no WebSocket, no WebRTC). 9// license_tier: ORIGINAL 10import "nx_syscalls.nx" 11import "nx_gate_emit_lib.nx" 12import "nx_room_stream.nx" 13import "nx_video_client_wasm.nx" 14 15func main() -> i64 { 16 g_puts("nx_room_stream gate (sovereign HTTP chunked transfer, NO WebSocket)\n" as *u8) 17 var pass: i64 = 0; var total: i64 = 0 18 19 let p1: *u8 = sys_mmap(16); var i: i64=0; while i<5 { p1[i]=(65+i) as u8; i=i+1 } // len 5 -> "5" 20 let p2: *u8 = sys_mmap(512); i=0; while i<300 { p2[i]=((i*7+1)&255) as u8; i=i+1 } // len 300 -> "12c" 21 let p3: *u8 = sys_mmap(40); i=0; while i<16 { p3[i]=((i*3)&255) as u8; i=i+1 } // len 16 -> "10" 22 23 let stream: *u8 = sys_mmap(4096) 24 var o: i64 = 0 25 o = rs_chunk_encode(stream, o, p1, 5) 26 o = rs_chunk_encode(stream, o, p2, 300) 27 o = rs_chunk_encode(stream, o, p3, 16) 28 o = rs_chunk_encode(stream, o, p1, 0) 29 let streamlen: i64 = o 30 31 let info: *i64 = sys_mmap(64) as *i64 32 var doff: i64 = 0 33 var ok: i64 = 1 34 var nx: i64 = 0 35 36 nx = rs_chunk_decode(stream, streamlen, doff, info) 37 if nx <= 0 { ok = 0 } else { 38 if info[1] != 5 { ok = 0 } 39 var k: i64=0; while k<5 { if stream[info[0]+k] != p1[k] { ok=0 } k=k+1 } 40 doff = nx 41 } 42 nx = rs_chunk_decode(stream, streamlen, doff, info) 43 if nx <= 0 { ok = 0 } else { 44 if info[1] != 300 { ok = 0 } 45 var k2: i64=0; while k2<300 { if stream[info[0]+k2] != p2[k2] { ok=0 } k2=k2+1 } 46 doff = nx 47 } 48 nx = rs_chunk_decode(stream, streamlen, doff, info) 49 if nx <= 0 { ok = 0 } else { 50 if info[1] != 16 { ok = 0 } 51 var k3: i64=0; while k3<16 { if stream[info[0]+k3] != p3[k3] { ok=0 } k3=k3+1 } 52 doff = nx 53 } 54 pass = pass + g_check("3 frames round-trip byte-exact through chunked encode->decode" as *u8, ok); total=total+1 55 56 nx = rs_chunk_decode(stream, streamlen, doff, info) 57 pass = pass + g_check("terminator chunk (len 0) ends the stream" as *u8, nx == 0); total=total+1 58 59 let bs: *u8 = sys_mmap(4096) 60 i=0; while i<streamlen { bs[i]=stream[i]; i=i+1 } 61 bs[0] = 90 62 let neg: i64 = rs_chunk_decode(bs, streamlen, 0, info) 63 pass = pass + g_check("malformed chunk length rejected (neg-control, no false-green)" as *u8, neg < 0); total=total+1 64 65 // ---- a real vc_wire media frame rides the chunked stream ---- 66 let id: *u8 = "vidcall1" as *u8 67 let vpay: *u8 = sys_mmap(2048); var vp: i64=0; while vp<1000 { vpay[vp]=((vp*5+9)&255) as u8; vp=vp+1 } 68 let vframe: *u8 = sys_mmap(2048) 69 let vlen: i64 = vc_wire_pack(vframe, 86, id, 4242, vpay, 1000) 70 let vs: *u8 = sys_mmap(4096) 71 var vo: i64 = 0 72 vo = rs_chunk_encode(vs, vo, vframe, vlen) 73 vo = rs_chunk_encode(vs, vo, vframe, 0) 74 let ci: *i64 = sys_mmap(64) as *i64 75 let fb: *u8 = sys_mmap(2048) 76 let wi: *i64 = sys_mmap(64) as *i64 77 var vok: i64 = 1 78 var prc: i64 = 0 79 let vnx: i64 = rs_chunk_decode(vs, vo, 0, ci) 80 if vnx <= 0 { vok = 0 } 81 if vnx > 0 { 82 if ci[1] != vlen { vok = 0 } 83 var m: i64 = 0; while m < ci[1] { fb[m] = vs[ci[0]+m]; m = m+1 } 84 prc = vc_wire_parse(fb, ci[1], wi) 85 if prc != 0 { vok = 0 } 86 if wi[0] != 86 { vok = 0 } 87 if wi[1] != 4242 { vok = 0 } 88 if wi[3] != 1000 { vok = 0 } 89 var q: i64 = 0; while q < 1000 { if fb[wi[2]+q] != vpay[q] { vok = 0 } q=q+1 } 90 } 91 pass = pass + g_check("vc_wire media frame survives the chunked stream (kind/seq/payload byte-exact)" as *u8, vok); total=total+1 92 93 g_puts("---- room-stream gate: passed " as *u8); g_pn(pass); g_puts(" / " as *u8); g_pn(total); g_puts(" ----\n" as *u8) 94 if pass == total { g_puts("verdict=GREEN\n" as *u8); sys_exit(0); return 0 } 95 g_puts("verdict=RED\n" as *u8); sys_exit(1); return 1 96}