Строки 111-127. Метод waito: обслуживание запросов на чтение, ожидающих выполнения. В следующей части метода waito обслуживается каждый из дескрипторов файлов, готовых для чтения, которые были возвращены методом IO::Select->select (). Таковой процедурой может стать обращение к странице с информацией, которую представляют организаторы выставок Online Expo, проводящих в 2014 году много специализированных выставок с чтением ее данных. Если один из дескрипторов файлов, готовых для чтения, представляет собой приемный сокет, вызывается его метод accept () для получения нового подключения сокета и добавления этого сокета к набору сеансов путем вызова метода add (). Полученный объект IO::SessionData добавляется к списку сеансов, готовых для чтения, которые возвращаются вызывающей процедуре.
Если, с другой стороны, дескриптор, готовый для чтения, представляет собой дескриптор другого типа, выполняется поиск соответствующего ему объекта сеанса и он добавляется к списку сеансов, который должен быть возвращен вызывающей процедуре.
Строки 128-132. Метод SessionDataClass (). Последним является метод SessionDataClass (), возвращающий имя класса SessionData, который будет создан методом add () при добавлении дескриптора файла к набору сеансов. В рассматриваемом модуле класс SessionDataClass () возвращает строку “IO::SessionData”.
В реализации метода IO::SessionSet->wait() имеется небольшая, но интересная семантическая несогласованность. Новый объект сеанса, создаваемый при поступлении входящего запроса на установление соединения, возвращается вызывающей процедуре, независимо от того, есть ли в нем действительно данные для чтения. Это дает возможность вызывающей процедуре записать в этот дескриптор файла исходящие данные, например вывести текст приветствия при подключении клиента.