#ifndef LIO_H
#define LIO_H
#include <stddef.h>
#include <stdint.h>
#include <sys/socket.h>
#ifndef __cplusplus
typedef struct sockaddr sockaddr;
typedef struct sockaddr_storage sockaddr_storage;
#endif
typedef struct lio_handle_t lio_handle_t;
#ifdef __cplusplus
extern "C" {
#endif
struct lio_handle_t *lio_create(unsigned int capacity);
void lio_destroy(struct lio_handle_t *lio);
int lio_tick(struct lio_handle_t *lio);
void lio_shutdown(struct lio_handle_t *lio, intptr_t fd, int how, void (*callback)(int));
void lio_fsync(struct lio_handle_t *lio, intptr_t fd, void (*callback)(int));
void lio_truncate(struct lio_handle_t *lio, intptr_t fd, uint64_t len, void (*callback)(int));
void lio_write_at(struct lio_handle_t *lio,
intptr_t fd,
uint8_t *buf,
uintptr_t buf_len,
int64_t offset,
void (*callback)(int, uint8_t*, uintptr_t));
void lio_read_at(struct lio_handle_t *lio,
intptr_t fd,
uint8_t *buf,
uintptr_t buf_len,
int64_t offset,
void (*callback)(int, uint8_t*, uintptr_t));
void lio_socket(struct lio_handle_t *lio,
int domain,
int ty,
int proto,
void (*callback)(intptr_t));
void lio_bind(struct lio_handle_t *lio,
intptr_t fd,
const sockaddr *sock,
socklen_t sock_len,
void (*callback)(int));
void lio_accept(struct lio_handle_t *lio, intptr_t fd, void (*callback)(intptr_t,
const sockaddr_storage*));
void lio_listen(struct lio_handle_t *lio, intptr_t fd, int backlog, void (*callback)(int));
void lio_send(struct lio_handle_t *lio,
intptr_t fd,
uint8_t *buf,
uintptr_t buf_len,
int flags,
void (*callback)(int, uint8_t*, uintptr_t));
void lio_recv(struct lio_handle_t *lio,
intptr_t fd,
uint8_t *buf,
uintptr_t buf_len,
int flags,
void (*callback)(int, uint8_t*, uintptr_t));
void lio_close(struct lio_handle_t *lio, intptr_t fd, void (*callback)(int));
void lio_timeout(struct lio_handle_t *lio, unsigned int millis, void (*callback)(int));
#ifdef __cplusplus
} #endif
#endif