from dataclasses import dataclass from typing import Optional from frostfs_sdk.models.dto.version import Version, DEFAULT_MAJOR_VERSION, DEFAULT_MINOR_VERSION class MetaHeader: def __init__(self, version=None, epoch: int = 0, ttl: int = 2): """ Initializes a MetaHeader object. :param version: A Version object representing the version. :param epoch: An integer representing the epoch (default: 0). :param ttl: An integer representing the time-to-live (default: 2). """ self._version = None self._epoch = None self._ttl = None # Set default values if not provided self.set_version(version or Version(DEFAULT_MAJOR_VERSION, DEFAULT_MINOR_VERSION)) self.set_epoch(epoch) self.set_ttl(ttl) def get_version(self): return self._version def get_epoch(self): return self._epoch def get_ttl(self): return self._ttl def set_version(self, version): if version is None: raise ValueError(f"Input parameter is missing: {Version.__name__}") self._version = version def set_epoch(self, epoch: int): if epoch < 0: raise ValueError("Epoch must be greater than or equal to zero") self._epoch = epoch def set_ttl(self, ttl: int): if ttl <= 0: raise ValueError("TTL must be greater than zero") self._ttl = ttl