. */ namespace SP\Domain\ItemPreset\Models; use SP\Domain\Core\Exceptions\InvalidArgumentException; use SP\Domain\Http\Adapters\Address; /** * Class SessionTimeout * * TODO: serde using JSON */ readonly class SessionTimeout { private string $address; private string $mask; /** * SessionTimeout constructor. * * @param string $address IP address and/or mask * @param int $timeout Timeout in seconds * * @throws InvalidArgumentException */ public function __construct(string $address, private int $timeout) { $parse = Address::parse4($address); $this->address = $parse['address']; $this->setMask($parse); } /** * @param array $parse */ private function setMask(array $parse): void { if (isset($parse['cidr'])) { $this->mask = Address::cidrToDec($parse['cidr']); } elseif (isset($parse['mask'])) { $this->mask = $parse['mask']; } else { $this->mask = '255.255.255.255'; } } public function getAddress(): string { return $this->address; } public function getMask(): string { return $this->mask; } public function getTimeout(): int { return $this->timeout; } }