def run(): rp = lib.rp_init( window_size, avg_block_size, min_block_size, max_block_size) rpc = rp.contents buf = create_string_buffer(buf_size) fh = fopen(fn, "rb") total_size = 0 while True: if rpc.state & lib.RP_IN: fread_size = fread(buf, 1, buf_size, fh) rc = lib.rp_in(rp, buf, fread_size) assert rc == 1 if rpc.state & lib.RP_OUT: rc = lib.rp_out(rp) assert rc == 1 total_size += rpc.frag_size if rpc.state & lib.RP_RESET: assert feof(fh) break lib.rp_free(rp) print total_size
def run(): rp = lib.rp_init(window_size, avg_block_size, min_block_size, max_block_size) rpc = rp.contents buf = create_string_buffer(buf_size) fh = fopen(fn, "rb") total_size = 0 while True: if rpc.state & lib.RP_IN: fread_size = fread(buf, 1, buf_size, fh) rc = lib.rp_in(rp, buf, fread_size) assert rc == 1 if rpc.state & lib.RP_OUT: rc = lib.rp_out(rp) assert rc == 1 total_size += rpc.frag_size if rpc.state & lib.RP_RESET: assert feof(fh) break lib.rp_free(rp) print total_size
for i in range(buf_size): buf[i] = chr(0) # buf[0] = chr(0x01); lib.rp_from_buffer(rp, buf, buf_size) i = 0 while True: rc = lib.rp_block_next(rp) if (rc): break assert rpc.block_size == max_segment_size, rpc.block_size # http://blogs.skicelab.com/maurizio/ctypes-and-pointer-arithmetics.html block_addr = cast(rpc.block_addr, c_void_p).value inbuf = cast(rpc.inbuf, c_void_p).value block_start = block_addr - inbuf block_end = block_start + rpc.block_size print block_start, block_end block = rpc.inbuf[block_start:block_end] block = ''.join(map(chr, block)) h = hashlib.md5(block).hexdigest() print h assert h == 'fcd6bcb56c1689fcef28b57c22475bad' i += 1 print i assert i == 8 lib.rp_free(rp)
for i in range(buf_size): buf[i] = chr(0) # buf[0] = chr(0x01); lib.rp_from_buffer(rp, buf, buf_size) i = 0 while True: rc = lib.rp_block_next(rp) if (rc): break assert rpc.block_size == max_segment_size, rpc.block_size # http://blogs.skicelab.com/maurizio/ctypes-and-pointer-arithmetics.html block_addr = cast(rpc.block_addr, c_void_p).value inbuf = cast(rpc.inbuf, c_void_p).value block_start = block_addr - inbuf block_end = block_start + rpc.block_size print block_start, block_end block = rpc.inbuf[block_start:block_end] block = ''.join(map(chr,block)) h = hashlib.md5(block).hexdigest() print h assert h == 'fcd6bcb56c1689fcef28b57c22475bad' i += 1 print i assert i == 8 lib.rp_free(rp)