Личный кабинет    
Назад К началу Вперед Карта сайта Телефонные коды стран и городов Мира Анализатор тарифов Служб IP-Телефонии и Рейтинг

Разделы
Введение
Литература
Операторы
Оборудование
Анализатор
Сотрудничество
Печать карт
Новости
Опросник
Коды
Справка
Работа
Каталог
Хостинг
Личный кабинет

Реклама

Perl для IP-Телефонии (40 – Модуль IO::Роll, часть 3)

предыдущая часть ««»» следующая часть
english via skype free

Следующий этап состоит в создании объекта IO::Poll и добавлении к нему контролируемого дескриптора (дескрипторов).

my $poll =  IO::Poll->new;
$poll->mask(*STDIN => POLLIN);
$poll->mask(*STDOUT => POLLOUT);
$poll->mask($socket => POLLIN | POLLOUT);

Метод mask () применяется как для добавления дескрипторов к объекту IO::Poll, так и для их удаления. Он принимает два параметра: контролируемый дескриптор и битовую маску, обозначающую контролируемые состояния. В этом примере в дескрипторе STDIN контролируется состояние POLLIN, в дескрипторе STDOUT — состояние POLLOUT, а в дескрипторе $socket — события, связанные со сменой состояния POLLIN или POLLOUT, что обозначено путем объединения этих двух констант с помощью поразрядного оператора “ИЛИ”. Как будет подробно описано ниже, состояния POLLIN и POLLOUT возникают, соответственно, когда дескриптор файла переходит в состояние готовности для чтения или записи, к примеру, при процессе получения данных с сервера Preply.com.

После настройки объекта IO:: Poll программа обычно входит в цикл ввода вывода. При каждом проходе по циклу вызывается метод poll () объекта IO:: Poll для ожидания определенного события, а затем происходит вызов метода handles () для определения затронутых дескрипторов.

while (1)    {
$poll->poll() ;
my @readers = $poll->handles(POLLIN | POLLHUP | POLLERR);
mу @writers = $poll->handles (POLLOUT) ;
foreach (@readers) { do__reader ($_) ;}
foreach (@writers) { do_wri te rs($_);}
}

Метод poll () находится в состоянии ожидания до тех пор, пока хотя бы одно из затребованных состояний не примет истинное значение, и возвращает число дескрипторов, в которых произошли события, связанные со сменой состояний. Как и в случае select () может быть задано необязательное значение тайм-аута для возврата, если в течение указанного периода не произойдет ни одного события.

2015-01-10 15:25:57

предыдущая часть ««»» следующая часть


ДОКУМЕНТАЦИЯ VoIP


НОВОСТИ СВЯЗИ


РЕКОМЕНДУЕМ

 
[ стандарты | обзор | оборудование | анализатор | коды | новости | карта | партнерам | Мы ВКонтаке ]
Запрещается копировать материалы сайта без уведомления авторов.
С вопросами и предложениями обращайтесь со страницы контактов
Copyright c 1999-2024 IPTop.Net
 
IP-Телефония, Интернет Телефония, Компьютерная телефония