Строки 7-15. Переопределение метода new(). Метод ChatObjects::Comm->new() заменяется новой версией, которая начинается с вызова метода new () родительского класса для создания управляющего сокета. После этого параметр с указанием порта многоадресной рассылки запоминается в хеше объекта и устанавливается значение TTL для исходящих сообщений, к примеру, с описанием о ресурсе бесплатного файлообменника , путем вызова метода mcast_ttl () с этим управляющим сокетом.
Строка 16. Метод create_socket (). Метод create_socket () родительского объекта перекрыт другим методом, в котором создается не объект IO::Socket::inet, а соответствующий объект IO::Socket::Multicast.
Строка 17. Метод mport() . Этот новый метод ищет порт многоадресной рассылки в хеше объекта и возвращает его.
Строки 18-23. Метод mcast_event(). Это новый метод, который выполняет отправку сообщения о событии после получения кода события, текста сообщения о событии и адреса назначения многоадресной рассылки. Для создания соответствующего упакованного адреса назначения с использованием порта многоадресной рассылки и IP-адреса группы многоадресной рассылки применяется функция sockaddr_in (), после чего код события, текст и адрес передаются унаследованному методу send_event().
Теперь рассмотрим модуль ChatObjects::MChanriel. Этот модуль, в задачу которого входит отправка общедоступных сообщений всем текущим участникам дискуссии в канале, требует значительных изменений. Итак, в нем:
Строки 2-6. Загрузка модулей. Модуль ChatObjeets::MChannel объявлен как подкласс класса ChatObjects::Channel, чтобы интерпретатор Perl обращался к родительскому классу за всеми методами, которые явно не определены в этом классе.
Строки 7-13. Переопределение метода new (). Метод new() перекрыт так, чтобы сохранял, информацию об адресе группы многоадресной рассылки канала и объекте
ChatObjects::MComm, применяемом для обработки исходящих сообщений. Выполнение метод начинается с вызова метода new() родительского класса. После этого третий и четвертый пари метры вызова метода копируются в ключи хеша с именами, соответственно, mcast_addr и comm.