Метод bail_out ( ) получает копию кода ошибки, которая возникла во время операции записи, завершившейся неудачей. В текущей реализации данного метода этот код ошибки игнорируется, но может потребоваться при создании подкласса класса IO:: SessionData.
Это— очень большой объем кода! Но мы еще не закончили работу. Модуль IO::SessionData составляет только часть картины. Другую часть образует модуль IO::SessionSet, который управляет набором неблокирующих сеансов.
Модуль IO::SessionSet
Модуль IO::SessionSet отвечает за управление набором объектом IO::SessionData. Он вызывает метод select () для сеансов, готовых к вводу выводу, и функцию accept () от имени приемных сокетов; кроме того, он обеспечивает вызов метода write ( ) для каждого сеанса, в котором присутствую выходные данные, ждущие обработки.
Ниже описан API-интерфейс модуля IO::SessionSet, который является довольно несложным.
$set = IO::SessionSet->new([$listen])
Создается новый объект IO::SessionSet. Если в параметре $listen представлен приемный сокет, то модуль автоматически принимает входящие соединения.
$ session = $set->add($handle [, $writeonly])
Добавляет дескриптор файла к списку дескрипторов, контролируемых объектом SessionSet. Если необязательный флажок $writeonly имеет истинное значение, то этот дескриптор предназначен только для чтения. Эта опция применима к дескриптору stdout и к другим дескрипторам файлов, предназначенных только для вывода. Метод add () заключает дескриптор файла в оболочку объекта IO::SessionData и возвращает этот объект как результат своего выполнения.