Шрифт:
Дополнительную информацию об интерфейсе диспетчеризации (т.е., о функции dispatch_create), см. в справочном руководстве по Си-библиотеке (С Library Reference).
Здесь мы используем функции пула потоков для создания пула, который должен будет обслуживать сообщения в нашем администраторе ресурсов. Вообще говоря, я бы рекомендовал вам начать однопоточного администратора ресурсов, как мы это делали ранее в примере с администратором
Здесь мы дополняем администратор ресурсов нашими функциями. Эти функции представляют собой функции- обработчики сообщений, о которых мы только что говорили (например, io_read, io_devctl, и т.п.). Например, чтобы добавить свой собственный обработчиком для сообщения _IO_READ, указывающий на функцию my_io_read, мы должны были бы добавить в программу такую строчку:
Это переопределит элемент таблицы, инициализированный вызовом iofunc_func_init и содержавший функцию POSIX-уровня по умолчанию, заменив его указателем на вашу функцию my_io_read.
Вы, вероятно, не захотите, чтобы ваш администратор ресурсов назывался
Простой пример функции io_read
Чтобы проиллюстрировать, как ваш администратор ресурса мог бы возвращать клиенту данные, рассмотрим простейший администратор ресурса, который всегда возвращает одну и ту же строковую константу «
• согласование размера клиентской области данных с количеством данных, подлежащих возврату;
• обработка EOF;