asyncmsg_put(), asyncmsg_putv()

Отправить асинхронное сообщение по соединению

Прототип:

#include <sys/asyncmsg.h>
int asyncmsg_put( int coid,
const void *buff,
size_t size,
unsigned handle),
int (*call_back)( int err,
void *buf,
unsigned handle ) );
int asyncmsg_putv( int coid,
const iov_t* iov,
int parts,
unsigned handle,
int (*call_back)( int err,
void *buf,
unsigned handle ) );

Аргументы:

coid
Идентификатор соединения, на которое нужно отправить сообщение.
buff
(только для asyncmsg_put()) Указатель на буфер, содержащий сообщение.
size
(только для asyncmsg_put()) Размер сообщения.
iov
(только для asyncmsg_putv()) Указатель на массив объектов iov_t, содержащих сообщение.
parts
(только для asyncmsg_putv()) Количество элементов в массиве IOV.
handle
Определяемый пользователем обработчик, который передается в функцию call_back для быстрой идентификации пакета сообщения.
call_back
NULL, или функция, которую вызвать при обработке сообщения. Если этот аргумент равен NULL, вызывается call_back заданный в _asyncmsg_connection_attr которая передается в asyncmsg_connect_attach().

Библиотека:

libasyncmsg

Описание:

Данные функции отправляют асинхронное сообщение соединению coid:

Возможно использование handle, который передается в функцию call_back, чтобы было легче идентифицировать пользовательское сообщение.

Возвращаемое значение:

EOK
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EBADF
Соединение coid не существует.
EFAULT
Произошла ошибка при попытке получить доступ к предоставленным буферам.
EAGAIN
Очередь отправки заполнена.

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

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

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

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

iov_t, asyncmsg_channel_create(), asyncmsg_channel_destroy(), asyncmsg_connect_attach(), asyncmsg_connect_attr(), _asyncmsg_connection_attr, asyncmsg_connect_detach(), asyncmsg_flush(), asyncmsg_free(), asyncmsg_get(), asyncmsg_malloc()

Примеры использования и сведения об архитектуре библиотеки доступны в разделе общие сведения.




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