from hashtree import HashTree
BLOCK_SIZE = HashTree.BLOCK_SIZE
class DataFile:
def __init__(self, file_handle):
self._last_index = 0
self._f = file_handle
@staticmethod
def open(filename, mode="rb"):
return DataFile(open(filename, mode=mode))
def write_at(self, i, block_data):
if i!=self._last_index+1:
self._f.seek(i*BLOCK_SIZE)
self._f.write(block_data)
self._last_index = i
def read_from(self, i, byte_count=BLOCK_SIZE):
if i!=self._last_index+1:
self._f.seek(i*BLOCK_SIZE)
self._last_index = i
return self._f.read(byte_count)
def close(self):
self._f.close()