code wiki / (root) / nx_tg_wanted_gate.nx

nx_tg_wanted_gate.nx source

↩ module page · 28 lines · 1934 B

1// nx_tg_wanted_gate.nx -- proves tg_build_wanted (selective download) marks the actual content wanted and the 2// junk skippable. Metadata = 2 files: vid.mp4 (30 MB) + cover.jpg (1 KB), plen=1 MB -> npc=31. Expect the video 3// pieces [0..29] WANTED, the junk-only last piece [30] NOT wanted, wanted_count=30. license_tier: ORIGINAL 4import "nx_torrent_get.nx" 5import "nx_gate_verdict.nx" 6 7func wg_p(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 8func wg_n(v: i64) -> i64 { if v==0 { sys_write(1,"0" as *u8,1); return 0 } var m: i64=v; let t: *u8=sys_mmap(28); var k: i64=0; while m>0 { t[k]=(48+(m%10)) as u8; m=m/10; k=k+1 } while k>0 { k=k-1; sys_write(1,(((t as i64)+k) as *u8),1) } return 0 } 9 10func main() -> i64 { 11 wg_p("TG-WANTED-GATE authored=organ\n" as *u8) 12 // files: vid.mp4 length=31457280 (30MB), cover.jpg length=1024 13 let meta: *u8 = "d5:filesld6:lengthi31457280e4:pathl7:vid.mp4eed6:lengthi1024e4:pathl9:cover.jpgeee" as *u8 14 var msize: i64=0; while meta[msize]!=(0 as u8) { msize=msize+1 } 15 let wanted: *u8 = sys_mmap(64) 16 let wc: i64 = tg_build_wanted(meta, msize, 31, 1048576, wanted, 15728640) // npc=31, plen=1MB, min=15MB 17 wg_p(" wanted_count="); wg_n(wc); wg_p(" (expect 30) p0="); wg_n(wanted[0] as i64) 18 wg_p(" p29="); wg_n(wanted[29] as i64); wg_p(" p30(junk)="); wg_n(wanted[30] as i64); wg_p("\n" as *u8) 19 // MIGRATED onto nx_gate_verdict by nx_gate_dry_apply (D001, minimal form): every check 20 // row above is untouched, so the PASS/FAIL vector cannot change; only the hand-rolled 21 // verdict emission is replaced by the ONE shared base class. Proven by nx_gate_migrate verify. 22 let ctr__dry: *i64 = gv_ctr() 23 ctr__dry[0] = wc 24 ctr__dry[1] = 30 25 let rc__dry: i64 = gv_verdict("TG-WANTED-GATE" as *u8, ctr__dry, "video pieces wanted, junk-only last piece skipped)" as *u8) 26 sys_exit(rc__dry) 27 return rc__dry 28}