| 123456789101112131415161718192021222324252627282930313233343536373839 |
- import math
- import hashlib
- from package import package
- class package_spliter:
- def __init__(self, target: package, mtu: int = 256) -> None:
- self.__target = target
- self.__mtu = mtu
- @property
- def mtu(self) -> int:
- return self.__mtu
-
- def __get_number_size(self) -> int:
- return 4
- def __get_header_size(self) -> int:
- return self.__get_number_size() * 3 + self.__get_crc_size()
- def __get_crc_size(self) -> int:
- return 20
- def __convert_number(self, number: int) -> bytes:
- return number.to_bytes(self.__get_number_size(), "big")
- def __calc_crc(self, part: bytes) -> bytes:
- return hashlib.sha1(part, usedforsecurity = False).digest()
- def __count_parts(self) -> int:
- single_package = self.mtu - self.__count_header_size()
- if single_package <= 0:
- raise RuntimeError("Package size is lower than zero.")
- return math.ceil(len(self.__content) / single_package)
|