async.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /** @file async.h
  2. * @brief Public interface for ASYNChronous I/O class.
  3. */
  4. #ifndef _faux_async_h
  5. #define _faux_async_h
  6. #include <faux/faux.h>
  7. #include <faux/buf.h>
  8. #include <faux/sched.h>
  9. #define FAUX_ASYNC_UNLIMITED 0
  10. // Default overflow limit for out buffer ~ 10M
  11. #define FAUX_ASYNC_OUT_OVERFLOW 10000000l
  12. // Default overflow limit for in buffer ~ 10M
  13. #define FAUX_ASYNC_IN_OVERFLOW 10000000l
  14. typedef struct faux_async_s faux_async_t;
  15. // Callback function prototypes
  16. typedef bool_t (*faux_async_read_cb_fn)(faux_async_t *async,
  17. faux_buf_t *buf, size_t len, void *user_data);
  18. typedef bool_t (*faux_async_stall_cb_fn)(faux_async_t *async,
  19. size_t len, void *user_data);
  20. C_DECL_BEGIN
  21. faux_async_t *faux_async_new(int fd);
  22. void faux_async_free(faux_async_t *async);
  23. int faux_async_fd(const faux_async_t *async);
  24. void faux_async_set_read_cb(faux_async_t *async,
  25. faux_async_read_cb_fn read_cb, void *user_data);
  26. bool_t faux_async_set_read_limits(faux_async_t *async, size_t min, size_t max);
  27. void faux_async_set_stall_cb(faux_async_t *async,
  28. faux_async_stall_cb_fn stall_cb, void *user_data);
  29. void faux_async_set_write_overflow(faux_async_t *async, size_t overflow);
  30. void faux_async_set_read_overflow(faux_async_t *async, size_t overflow);
  31. ssize_t faux_async_write(faux_async_t *async, void *data, size_t len);
  32. ssize_t faux_async_writev(faux_async_t *async,
  33. const struct iovec *iov, int iovcnt);
  34. ssize_t faux_async_out(faux_async_t *async);
  35. ssize_t faux_async_in(faux_async_t *async);
  36. C_DECL_END
  37. #endif // _faux_async_h