Библиотека осуществляет все магические манипуляции внутри функции
В действительности, библиотека состоит из двух взаимодействующих уровней — базового, который обеспечивает «сырую» функциональность администратора ресурсов, и уровня POSIX, который содержит вспомогательные функции POSIX и обработчики по умолчанию. Сейчас мы кратко обрисуем эти два уровня, а затем в разделе «Структура администратора ресурсов» рассмотрим все в подробностях.
Самый нижний, базовый, уровень состоит из функций, имена которых начинаются с «
Здесь я только кратко приведу описание этих функций, которые являются доступными и которые мы будем использовать. Затем я отправлю вас к изучению QSSL документации для получения более подробных сведений об этих функциях.
К функциям базового уровня относятся:
Считывают данных из адресного пространства клиента при помощи обмена сообщениями.
Записывают данные в адресное пространство клиента при помощи обмена сообщениями.
Связывает контекст с запросом на установление соединения, поступившим от соответствующей клиентской функции. Этот контекст далее будет использоваться функциями ввода/вывода.
Создает канал и связывает воедино имя пути, дескриптор диспетчера, функции установления соединения, функции ввода/вывода и другие параметры. Посылает сообщение администратору процессов для регистрации имени пути (префикса).
Противоположна функции
Связывает код импульса с функцией. Поскольку приема сообщений реализуется библиотекой, это удобный способ «перехватывать управление» для обработки импульсов.
Отвязывает код импульса от функции.
В дополнение к функциям, перечисленным выше, есть также множество функций, посвященных интерфейсу диспетчеризации.
Одна функция из вышеупомянутого списка заслуживает особого упоминания — функция
/dev/null
? Потому что POSIX-функции обработки сообщений, принятые по умолчанию, сами вызывают для нас эту функцию. Если бы мы обрабатывали все сообщения самостоятельно, нам, конечно, пришлось бы вызвать данную функцию.Функция
Остальные функции из вышеупомянутого списка достаточно интуитивны, так что отложим их обсуждение до тех пор, пока не дойдем до их явного применения.
Второй уровень библиотеки администратора ресурсов является POSIX-уровнем. Как и в случае с базовым уровнем, вы могли бы написать администратор ресурсов и без использования этих функций, но это отняло бы уйму трудов! Прежде чем обсуждать функции уровня POSIX в подробностях, мы должны рассмотреть ряд структур данных базового уровня, приходящие от клиентуры сообщения, а также общую структуру и сферу ответственности администратора ресурсов.
Написание администратора ресурсов
Теперь, когда мы знаем основы, — как выглядит мир глазами клиента, в каком цвете видит все администратор ресурсов, и что из себя представляют оба уровня библиотеки — пришло время сконцентрироваться на деталях.
В этом разделе мы рассмотрим следующие темы:
• структуры данных;
• структуру администратора ресурсов;
• структуры данных POSIX-уровня;
• подпрограммы обработки сообщений;
• и, конечно, множество примеров.
Постарайтесь запомнить приведенную ниже «большую картинку» — на ней изображено практически все, что имеет отношение к администратору ресурсов:
Архитектура администратора ресурсов — общая схема.
Структуры данных
Первое, в чем следует разобраться, — это структуры данных, которые управляют работой библиотеки:
• управляющая структура resmgr_attr_t
• таблица функций установления соединения resmgr_connect_funcs_t
• таблица функций ввода-вывода resmgr_io_funcs_t
• внутренний блок контекста resmgr_context_t
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT