import logging
import sys
logger = logging.getLogger('server')


class ValidatePort:
    '''
    Класс - дескриптор для номера порта. Позволяет использовать только порты
     с 1023 по 65536. При попытке установить неподходящий номер порта
     генерирует исключение.
     '''
    def __set__(self, instance, value):
        if not 1023 < value < 65536:
            logger.critical(
                f'Попытка запуска клиента с неподходящим номером порта:'
                f' {value}. Допустимы адреса с 1024 до 65535. '
                f'Клиент завершается.')
            sys.exit(1)
        instance.__dict__[self.my_attr] = value

    def __set_name__(self, owner, my_attr):
        self.my_attr = my_attr
