Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Буферизация сообщений.




Типы сообщений и буфферизация сообщений (“The X protocol” and “Buffering”).

X протокол определяет что делает каждый пакет с данными, который был перемещен между Xlib И сервером в обоих направлениях. Даже когда сервер и клиент выполняются на одной и той же машине, весь обмен идет через этот протокол, но уже по внутреннему каналу вместо внешней сети. Существуют 4 типа пакетов, которые используются протоколом, это:

· Запросы (requests)

· Ответы (replies)

· События (events)

· Ошибки (errors)

Запросы. Пакет типа «запрос» посылается от клиента к серверу. Запрос может нести большую объем информации, например, сменить цвет или же нарисовать линию. Большинство процедур клиента генерируют запросы.

Ответы. Пакет типа «ответ» посылается от сервера клиенту в качестве отклика на некоторые запросы. Не все запросы сопровождаются ответами, только те, которые запрашивают информацию. Например, запросы, которые определяют отрисовку какого либо объекта не генерируют «ответа». Запросы, которые требуют ответа называются возвратный запрос (не знаю как перевести лучше “round-trip request”, если дословно, то запрос туда и обратно). Разработчики должны минимизировать количество возвратных запросов, так как при наличии задержках в сети они начинают медленнее работать.

События. Пакет типа "событие" посылается от сервера к клиенту (асинхронно, без предварительного запроса). Содержимое такого пакета может принимать множество различных значений и оно зависит от типа события, так как этот тип пакета является принципиальным способом получения информации клиентами; например, для события "нажата кнопка мыши" нужно обозначить, какая именно кнопка нажата и где при этом находился курсор. Разнообразие типом «событий» определяется прежде всего клиентом.

Ошибки. Пакет типа "ошибка" посылается от сервера к клиенту в ответ на неправильный запрос. В отличие от "событий", которые локально буферизуются бибилиотекой Xlib и затем выбираются приложением, "ошибки" в буфер не помещаются. Вместо этого вызывается обработчик ошибок (стандартный или заданный приложением).

Буферизация сообщений.

При отправке запросов Xlib с целью увеличения производительности осуществляет их буферизацию. Т.е вместо того чтобы каждый раз ожидать освобождения сети для отсылки следующего запроса, клиент формирует группы, для того чтобы отправить их в дальнейшем. Это возможно благодаря тому, что, как уже говорилось, не каждый запрос требует ответа. Отсылка запросов группами уменьшает накладные расходы на передачи пакетов по сети. Клиент отсылает буфер заполненный запросами в сторону сервера в следующих 3 случаях:

· приложение ожидает события, а его еще нет в буфере событий

· запрос требует ответа

· принудительно по желанию приложения (полезно, например, для игр, где картинка на экране должна меняться и без действий пользователя)

Поскольку Xlib буферизует как входящие (ответы и события), так и исходящие (запросы) пакеты, то при отладке надо иметь ввиду, что какие-то функции Xlib могут быть вызваны до того, как сервер обнаружит ошибку в запросе, предшествующем этим вызовам.



Поделиться:

Дата добавления: 2015-09-13; просмотров: 80; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты