Module coio
-
enum
COIO_EVENT
¶ -
enumerator ::
COIO_READ
¶ событие чтения READ
-
enumerator ::
COIO_WRITE
¶ событие записи WRITE
-
enumerator ::
-
int
coio_wait
(int fd, int event, double timeout)¶ Ожидание события чтения или записи (READ / WRITE) на сокете (
fd
) с передачей управления.Параметры: - fd (int) – дескриптор файла сокета без блокировки
- event (int) – запрашиваемые события. Комбинация битовых флагов
COIO_READ | COIO_WRITE
. - timeout (double) – время ожидания в секундах.
Результат: 0 - время ожидания
Результат: >0 - возвращаемые события. Комбинация битовых флагов
TNT_IO_READ | TNT_IO_WRITE
.
-
ssize_t
coio_call
(ssize_t (*func)(va_list), ...)¶ Создание новой задачи для eio с указанной функцией и аргументами. Передает управление и ожидает окончания задачи. Функция может использовать конфигурационный параметр worker_pool_threads.
Во избежание двойной проверки ошибок функция не выбрасывает исключения. В большинстве случаев также необходимо проверять возвращаемое значение вызванной функции и выполнить необходимые действия. Если функция определяет номер ошибки errno, этот номер ошибки сохраняется в течение вызова.
Результат: -1 и errno
= ENOMEM, если задача не была созданаРезультат: возврат функции ( errno
сохраняется).Пример:
static ssize_t openfile_cb(va_list ap) { const char* filename = va_arg(ap); int flags = va_arg(ap); return open(filename, flags); } if (coio_call(openfile_cb, "/tmp/file", 0) == -1) // обработка ошибок. ...
-
int
coio_getaddrinfo
(const char *host, const char *port, const struct addrinfo *hints, struct addrinfo **res, double timeout)¶ Вариант функции getaddrinfo(3), совместимый с файберами.
-
int
coio_close
(int fd)¶ Закрытие
fd
и пробуждение любого файбера, заблокированного в вызове coio_wait() на данном сокетеfd
.Параметры: - fd (int) – дескриптор файла сокета без блокировки
Результат: результат
close(fd)
, см. close(2)