Формат сообщений протокола GIOP.
Перед тем, как описывать сообщения протокола GIOP, необходимо определить понятие клиента и сервера. Под клиентом далее понимается агент, который открыл соединение и инициировал запрос. Сервер - это агент, который принял соединение и этот запрос получил. Протокол GIOP определяет семь сообщений, список которых приведен далее в таблице вместе с указанием того, какая сторона какие сообщения может посылать.
Значение, соответствующее типу сообщения | Тип сообщения | Кто может посылать сообщение | |
Клиент | Сервер | ||
0 | Request | Да | - |
1 | Reply | - | Да |
2 | CancelRequest | Да | - |
3 | LocateRequest | Да | - |
4 | LocateReply | - | Да |
5 | CloseConnection | - | Да |
6 | MessageError | Да | Да |
Заголовок сообщения однозначно определяет его тип. Заголовок определен таким образом, чтобы не зависеть от порядка байт в представлении базовых типов данных. Элементами заголовка являются:
- Поле magic, которое состоит из четырех символов "GIOP", идентифицирующих все сообщения протокола GIOP.
- Поле GIOP_version, которое состоит из двух полей major
и minor, идентифицирующих старший и младший номера версии используемого протокола. Текущая спецификация определяет версию 1.0. Приложение должно поддерживать взаимодействие в рамках протокола только если номер, содержащийся в поле major равен, а в поле minor - больше или равен номерам версии, используемой при разработке приложения.
- Поле byte_order. Значение 0 в этом поле определяет, что в сообщении принято кодирование данных с лидирующим наиболее значащим байтом, 1 - наименее значащим. В настоящее время подавляющее большинство процессоров, в том числе и серия Intel x86 используется представление с лидирующим наименее значащим байтом.
- Поле message_type
содержит значение от 0 до 6, определяющее тип сообщения.
- Поле message_size
содержит длину оставшейся части сообщения (0 если больше ничего нет).
За общим заголовком каждого сообщения в зависимости от его типа может идти заголовок и тело конкретного сообщения. Структура каждого заголовка специфична для каждого типа сообщения и представляет особенного интереса для рассмотрения.