Example #1
0
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
Example #2
0
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
Example #3
0
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)
Example #4
0
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)