Версия:

Модуль coio

Модуль 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), ...)

Create new eio task with specified function and arguments. Yield and wait until the task is complete. This function may use the worker_pool_threads configuration parameter.

Во избежание двойной проверки ошибок функция не выбрасывает исключения. В большинстве случаев также необходимо проверять возвращаемое значение вызванной функции и выполнить необходимые действия. Если функция определяет номер ошибки errno, этот номер ошибки сохраняется в течение вызова.

Результат:-1 и errno = ENOMEM, если задача не была создана
Результат:the function’s return (errno is preserved).

Пример:

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)
    // handle errors.
...
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)