struct _msg_info

Информация о сообщении

Прототип:

#include <sys/neutrino.h>
struct _msg_info { /* _msg_info _server_info */
_Uint32t nd; /* client server */
_Uint32t srcnd; /* server - */
pid_t pid; /* client server */
_Int32t tid; /* thread - */
_Int32t chid; /* server server */
_Int32t scoid; /* server server */
_Int32t coid; /* client client */
_Int32t msglen; /* msg - */
_Int32t srcmsglen; /* thread - */
_Int32t dstmsglen; /* thread - */
_Int16t priority; /* thread - */
_Int16t flags; /* - client */
_Uint32t reserved;
};

Описание:

Структура _msg_info содержит информацию о сообщении. Включает следующие поля:

nd
Дескриптор узла клиентской машины со стороны сервера. Смотрите “Дескрипторы узлов” ниже.
srcnd
Декскриптор узла сервера со стороны клиента.
pid
ID процесса отправляющего потока.
tid
ID отправляющего потока.
chid
ID канала, по которому получено сообщение.
scoid
ID соединения сервера. Это уникальный идентификатор клиентского процесса на стороне сервера, соответствующий конкретному идентификатору процесса на конкретном узле.
coid
ID соединения клиента.
msglen
Размер пришедших данных в байтах.
srcmsglen
Размер изначального сообщения в байтах, отправленного с помощью MsgSend*(). Значение может быть больше msglen. Поле действительно только в случае, если был установлен флаг _NTO_CHF_SENDER_LEN в аргументе flags функции ChannelCreate() при создании канала, по которому было получено сообщение.
dstmsglen
Размер буфера клиента для получения ответа в байтах после отправки сообщения функцией MsgSend*(). Поле действительно только в случае, если был установлен флаг _NTO_CHF_REPLY_LEN в аргумент flags функции ChannelCreate() при создании канал, по которому было получено сообщение.
priority
Приоритет отправляющего потока.
flags
Флаги, предоставляющие информацию об отправителе и сообщении:
_NTO_MI_ENDIAN_BIG
отправляющая машина использует прямой порядок байт.
_NTO_MI_ENDIAN_DIFF
машина отправитель имеет порядок байт, отличный от машины-получателя.
_NTO_MI_NET_CRED_DIRTY
используется внутри.
_NTO_MI_UNBLOCK_REQ
клиент ожидает разблокировку (т.е. произошёл таймаут при отправке, либо был доставлен сигнал и установлен флаг _NTO_CHF_UNBLOCK для канала).


Note: Поля msglen и srcmsglen действительны только до следующего вызова MsgRead*() или MsgWrite*().

Если значение поля msglen меньше srcmsglen и меньше размера полусенного буфера, сообщения представляет собой сетевую транзакцию, которая требует дополнительного чтения данных функцией MsgRead*().

Дескрипторы узлов

Дескриптор узла nd - это временное числовое описание удалённого узла; ND_LOCAL_NODE (или 0) - это дескриптор локального узла.

Для: Использовать функцию:
Сравнения двух nd объектов ND_NODE_CMP()
Преобразования nd в текст netmgr_ndtostr()
Преобразования текста в nd netmgr_strtond()

Классификация:

ЗОСРВ «Нейтрино»

Тематические ссылки:

struct _server_info, MsgInfo(), MsgRead*(), MsgReceive(), MsgReceivev(), MsgSend*(), MsgWrite*(), ND_NODE_CMP(), netmgr_ndtostr(), netmgr_remote_nd(), netmgr_strtond()




Предыдущий раздел: Описание API системной библиотеки