Module coio | Tarantool
Документация на русском языке
поддерживается сообществом

Module coio

enum COIO_EVENT
enumerator ::COIO_READ

событие чтения READ

enumerator ::COIO_WRITE

событие записи WRITE

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)

Нашли ответ на свой вопрос?
Обратная связь