За кулисами библиотеки
За кулисами библиотеки
Вы уже видели, что наша программа ответственна за предоставление основного рабочего цикла приема сообщений:
while (1) {
// Здесь ждем сообщения
if ((ctp = resmgr_block(ctp)) == NULL) {
perror("Unable to resmgr_block ");
exit(EXIT_FAILURE);
}
// Обработать сообщение
resmgr_handler(ctp);
}
Это очень удобно, поскольку позволяет вам помещать точки останова на принимающей функции и перехватывать сообщения (например, с помощью отладчика) в процессе работы.
Библиотека осуществляет все магические манипуляции внутри функции resmgr_handler(), потому что это как раз то самое место, где сообщение анализируется и обрабатывается в соответствии с таблицами функций установления соединения и ввода/вывода, о которых мы уже говорили ранее.
В действительности, библиотека состоит из двух взаимодействующих уровней — базового, который обеспечивает «сырую» функциональность администратора ресурсов, и уровня POSIX, который содержит вспомогательные функции POSIX и обработчики по умолчанию. Сейчас мы кратко обрисуем эти два уровня, а затем в разделе «Структура администратора ресурсов» рассмотрим все в подробностях.
Базовый уровень
Самый нижний, базовый, уровень состоит из функций, имена которых начинаются с «resmgr_». Этот класс функций относится к низкоуровневым механизмам функционирования администратора ресурсов.
Здесь я только кратко приведу описание этих функций, которые являются доступными и которые мы будем использовать. Затем я отправлю вас к изучению QSSL документации для получения более подробных сведений об этих функциях.
К функциям базового уровня относятся:
resmgr_msgreadv() и resmgr_msgread()
Считывают данных из адресного пространства клиента при помощи обмена сообщениями.
resmgr_msgwritev() и resmgr_msgwrite()
Записывают данные в адресное пространство клиента при помощи обмена сообщениями.
resmgr_open_bind()
Связывает контекст с запросом на установление соединения, поступившим от соответствующей клиентской функции. Этот контекст далее будет использоваться функциями ввода/вывода.
resmgr_attach()
Создает канал и связывает воедино имя пути, дескриптор диспетчера, функции установления соединения, функции ввода/вывода и другие параметры. Посылает сообщение администратору процессов для регистрации имени пути (префикса).
resmgr_detach()
Противоположна функции resmgr_attach(). Уничтожает связь между именем пути и администратором ресурса.
pulse_attach()
Связывает код импульса с функцией. Поскольку приема сообщений реализуется библиотекой, это удобный способ «перехватывать управление» для обработки импульсов.
pulse_detach()
Отвязывает код импульса от функции.
В дополнение к функциям, перечисленным выше, есть также множество функций, посвященных интерфейсу диспетчеризации.
Одна функция из вышеупомянутого списка заслуживает особого упоминания — функция resmgr_open_bind(). Данная функция, когда приходит сообщение установления соединения (обычно это происходит в результате клиентского вызова open() или fopen()), создает некую контекстную информацию, чтобы она была готов к моменту прихода сообщения ввода/вывода. Почему ее не быт администраторе /dev/null? Потому что POSIX-функции обработки сообщений, принятые по умолчанию, сами вызывают для нас эту функцию. Если бы мы обрабатывали все сообщения самостоятельно, нам, конечно, пришлось бы вызвать данную функцию.
Функция resmgr_open_bind() не только формирует контекстный блок для последующих сообщений ввода/вывода, но также инициализирует и другие структуры данных, используемые непосредственно библиотекой администратора ресурсов.
Остальные функции из вышеупомянутого списка достаточно интуитивны, так что отложим их обсуждение до тех пор, пока не дойдем до их явного применения.
Уровень POSIX
Второй уровень библиотеки администратора ресурсов является POSIX-уровнем. Как и в случае с базовым уровнем, вы могли бы написать администратор ресурсов и без использования этих функций, но это отняло бы уйму трудов! Прежде чем обсуждать функции уровня POSIX в подробностях, мы должны рассмотреть ряд структур данных базового уровня, приходящие от клиентуры сообщения, а также общую структуру и сферу ответственности администратора ресурсов.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Библиотеки
Библиотеки В OS/400 библиотека — объект, который используется для поиска других объектов в базе данных. В отличие от многоуровневой иерархии каталогов в ОС ПК и Unix, библиотека OS/400 имеет одноуровневую иерархию. Для иллюстрации рассмотрим структуру имен объектов OS/400.Чтобы
Библиотеки
Библиотеки Библиотеки являются новинкой для операционных систем Windows. Библиотеки упрощают поиск, упорядочивание файлов, распределенных на компьютере или в сети. Библиотека объединяет содержимое в одном месте независимо от того, где оно фактически хранится. В левой
Библиотеки
Библиотеки Польза следующего нововведения явно очевидна. В Windows 7 существуют специальные папки Документы, Изображения, Музыка и Видео, с которыми пользователи работают достаточно часто. Если раньше, в Windows Vista или Windows ХР, каждая подобная папка ссылалась на одну реальную
Библиотеки
Библиотеки Библиотеки — это специальные файлы с расширением DLL, описывающие все функции, применяемые программой, для которой данная библиотека написана.Именно библиотеки содержат большинство функций, используемых операционной системой или программой. При этом
Библиотеки доступа
Библиотеки доступа В мире приложений баз данных сложилось несколько устоявшихся подходов к работе с базами данных. Для InterBase можно выделить около пяти таких подходов: это работа с базой данных через BDE (Borland Database Engine, см. глоссарий), использование ODBC, применение OLE DB (ADO),
Установка библиотеки Qt
Установка библиотеки Qt Вам понадобится приблизительно 2 ГиБ на диске, каталог для установки выбирайте так, чтобы путь не содержал пробелов и кириллицы.Распакуйте архив с исходниками в каталог, например disk:QTQTVER, где QTVER - версия библиотек (например, 4.3.4).Далее этот каталог мы
10.2. Виртуальные библиотеки
10.2. Виртуальные библиотеки Интернет, являющийся гигантским хранилищем всевозможных сведений, представляет собой уникальный источник информации. Наряду с другими, библиографические ресурсы Сети помогут в поиске необходимой информации. Они представлены, прежде всего,
Бесплатные библиотеки
Бесплатные библиотеки Перечисленные выше библиотеки и приложения – это далеко не все, с помощью чего система КОМПАС-3D облегчает жизнь инженеру. Есть еще много других утилит, которые входят в стандартную поставку или распространяются отдельно и предназначены для
4.4. Библиотеки
4.4. Библиотеки Одним из последствий того влияния, которое стиль Unix-программирования оказал на модульность и четко определенные API-интерфейсы, является устойчивая тенденция к разложению программ на фрагменты связующего уровня, объединяющего семейства библиотек,
4.4. Библиотеки
4.4. Библиотеки Одним из последствий того влияния, которое стиль Unix-программирования оказал на модульность и четко определенные API-интерфейсы, является устойчивая тенденция к разложению программ на фрагменты связующего уровня, объединяющего семейства библиотек,
Библиотеки dll
Библиотеки dll Библиотеки dll (dynamically linked libraries):* содержат группу взаимосвязанных подпрограмм* находятся в откомпилированном файле* предназначены для обращения к ним из различных программОни находятся в файле с расширением .dll либо в текущем каталоге приложения (локальные),
1.5. Библиотеки
1.5. Библиотеки Впервые библиотеки (виртуальные папки) появились еще в Windows Vista Beta 1, но почему-то эту функцию не включили в состав релиза Vista. В Windows 7 данная функция появилась вновь. Виртуальная папка (библиотека) объединяет несколько обычных папок, возможно, расположенных на
Библиотеки
Библиотеки Один из характерных аспектов разработки ПО ОО-способом - возможность создавать его на основе существующих библиотек. ОО-среда должна обеспечивать хорошие библиотеки и механизмы создания новых
Библиотеки и библиотеки
Библиотеки и библиотеки Известно, что большие собрания пополняются за счет малых. Небезынтересно узнать — на каких условиях? Наверняка ведь считается неэтичным просто скачать текст у другого библиотекаря и выложить в своей библиотеке. А как они это делают?Известно, что
Кивино гнездо: За кулисами кибервойны Берд Киви
Кивино гнездо: За кулисами кибервойны Берд Киви Опубликовано 03 декабря 2010 года Сеймур Херш, ветеран американской публицистики и признанный ас журналистских расследований, своими статьями не раз сумел заметно повлиять на политическую обстановку