code wiki / (root) / probe_blob_journal.nx

probe_blob_journal.nx source

↩ module page · 59 lines · 1683 B

1// Minimal probe: verify blob_store + journal_log APIs 2import "nx_syscalls.nx" 3import "nx_blob_store.nx" 4import "nx_journal_log.nx" 5 6func main() -> i64 { 7 // Test blob store 8 let bs: *NxBlobStore = nx_blob_store_new() 9 10 // Put a simple byte string 11 let data: *u8 = sys_mmap(10) 12 data[0] = 72 13 data[1] = 105 14 data[2] = 0 15 16 let hash: *NxBlobHash = nx_blob_hash_new() 17 let rc_put: i64 = nx_blob_store_put(bs, data, 3, hash) 18 if rc_put != 0 { return 1 } 19 20 // Verify get works 21 let buf: *u8 = sys_mmap(10) 22 let rc_get: i64 = nx_blob_store_get(bs, hash, buf, 10) 23 if rc_get != 3 { return 2 } 24 if buf[0] != 72 { return 3 } 25 26 // Test journal log 27 let jl: *NxJournalLog = nx_journal_log_new(bs) 28 29 // Append an entry 30 let payload: *u8 = sys_mmap(5) 31 payload[0] = 70 32 payload[1] = 97 33 payload[2] = 99 34 payload[3] = 116 35 36 let seq: i64 = nx_journal_log_append(jl, payload, 4, 42) 37 if seq < 0 { return 4 } 38 39 // Read it back 40 let read_buf: *u8 = sys_mmap(10) 41 let read_schema: *i64 = sys_mmap(8) as *i64 42 let rc_read: i64 = nx_journal_log_read(jl, 0, read_buf, 10, read_schema) 43 if rc_read != 4 { return 5 } 44 if *read_schema != 42 { return 6 } 45 46 // Verify chain 47 let rc_verify: i64 = nx_journal_log_verify_chain(jl) 48 if rc_verify != -1 { return 7 } 49 50 // Get latest hash 51 let w0: *i64 = sys_mmap(8) as *i64 52 let w1: *i64 = sys_mmap(8) as *i64 53 let w2: *i64 = sys_mmap(8) as *i64 54 let w3: *i64 = sys_mmap(8) as *i64 55 let rc_latest: i64 = nx_journal_log_latest_hash(jl, w0, w1, w2, w3) 56 if rc_latest != 0 { return 8 } 57 58 return 0 59}