storageserver.ReadBucketProxy: break out _parse_offsets, for debug tools

This commit is contained in:
Brian Warner 2007-07-13 16:52:17 -07:00
parent 7589a8ee82
commit 35117d77a0

View File

@ -302,24 +302,27 @@ class ReadBucketProxy:
def start(self):
# TODO: for small shares, read the whole bucket in start()
d = self._read(0, 8*4)
self._offsets = {}
def _got_offsets(data):
self._segment_size = struct.unpack(">L", data[0:4])[0]
self._data_size = struct.unpack(">L", data[4:8])[0]
x = 0x08
for field in ( 'data',
'plaintext_hash_tree',
'crypttext_hash_tree',
'block_hashes',
'share_hashes',
'uri_extension',
):
offset = struct.unpack(">L", data[x:x+4])[0]
x += 4
self._offsets[field] = offset
d.addCallback(_got_offsets)
d.addCallback(self._parse_offsets)
return d
def _parse_offsets(self, data):
precondition(len(data) == 8*4)
self._offsets = {}
self._segment_size = struct.unpack(">L", data[0:4])[0]
self._data_size = struct.unpack(">L", data[4:8])[0]
x = 0x08
for field in ( 'data',
'plaintext_hash_tree',
'crypttext_hash_tree',
'block_hashes',
'share_hashes',
'uri_extension',
):
offset = struct.unpack(">L", data[x:x+4])[0]
x += 4
self._offsets[field] = offset
return self._offsets
def get_block(self, blocknum):
num_segments = mathutil.div_ceil(self._data_size, self._segment_size)
if blocknum < num_segments-1: