def determine_shard_size(self, file_size, accumulator):
# Based on <https://github.com/aleitner/shard-size-calculator/blob/master/src/shard_size.c>
hops = 0
if (file_size <= 0):
return 0
# if accumulator != True:
# accumulator = 0
self.__logger.debug(accumulator)
# Determine hops back by accumulator
if ((accumulator - self.SHARD_MULTIPLES_BACK) < 0):
hops = 0
else:
hops = accumulator - self.SHARD_MULTIPLES_BACK
# accumulator = 10
byte_multiple = self.shard_size(accumulator)
check = file_size / byte_multiple
# print_(check)
if (check > 0 and check <= 1):
while (hops > 0 and self.shard_size(hops) > self.MAX_SHARD_SIZE):
if hops - 1 <= 0:
hops = 0
else:
hops = hops - 1
return self.shard_size(hops)
# Maximum of 2 ^ 41 * 8 * 1024 * 1024
if (accumulator > 41):
return 0
# return self.determine_shard_size(file_size, ++accumulator)
评论列表
文章目录