Строки 117-130. Метод choke (). Следующим методом является choke (), который вызывается, если объем данных в выходном буфере превышает лимит данных или меньше этого лимита. Подобное может происходить при избыточных или недостаточных данных полученных. Выполнение метода начинается с поиска ссылки на код обратного вызова. Если эта ссылка определена, вызывается код и ему передается ссылка на текущий объект SessionData а также флажок, указывающий, должен ли быть сеанс поставлен под контроль или выпущен из-под контроля с помощью метода choke (). Если подпрограмма обратного вызова не определена, то просто вызывается метод readable () сеанса с ложным флажком для отмены дальнейшего ввода в этом сеансе, при этом буфер записи снова не будет иметь достаточный объем свободного места.
Строки 131-145. Методы readable () и writable (). Следующими двумя методами являются readable () и writable (). Они представляют собой внешний интерфейс к методу activate () объекта IO::SessionSet. Как будет показано в следующем разделе, первым параметром метода activate () является текущий объект IO::SessionData, вторым — строка “read” или “write”, а третьим — флажок, указывающий, должен ли быть заданный тип ввода-вывода активизирован или переведен в неактивное состояние.
Однако если сеанс отмечен как предназначенный только для записи, то метод readable () не пытается его активизировать.
Строки 146-157. Метод bail_out(). Последним методом в этом модуле является bail_out(), который вызывается при возникновении ошибок записи. В данной реализации метод bail_out( ) удаляет все буферизованные исходящие данные и закрывает сеанс. Причина удаления необработанных данных состоит в том, что нужно немедленно выполнить закрытие, а не ждать неопределенно долго возможности выполнить запись, которая теперь, как известно, вполне может закончиться аварийно.