net.h 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /** @file net.h
  2. * @brief Public interface for faux net functions.
  3. */
  4. #ifndef _faux_net_h
  5. #define _faux_net_h
  6. #include <faux/faux.h>
  7. typedef struct faux_net_s faux_net_t;
  8. typedef struct faux_pollfd_s faux_pollfd_t;
  9. typedef int faux_pollfd_iterator_t;
  10. C_DECL_BEGIN
  11. // Network base I/O functions
  12. ssize_t faux_send(int fd, const void *buf, size_t n,
  13. const struct timespec *timeout, const sigset_t *sigmask);
  14. ssize_t faux_send_block(int fd, const void *buf, size_t n,
  15. const struct timespec *timeout, const sigset_t *sigmask,
  16. int (*isbreak_func)(void));
  17. ssize_t faux_sendv(int fd, const struct iovec *iov, int iovcnt,
  18. const struct timespec *timeout, const sigset_t *sigmask);
  19. ssize_t faux_sendv_block(int fd, const struct iovec *iov, int iovcnt,
  20. const struct timespec *timeout, const sigset_t *sigmask,
  21. int (*isbreak_func)(void));
  22. ssize_t faux_recv(int fd, void *buf, size_t n,
  23. const struct timespec *timeout, const sigset_t *sigmask);
  24. ssize_t faux_recv_block(int fd, void *buf, size_t n,
  25. const struct timespec *timeout, const sigset_t *sigmask,
  26. int (*isbreak_func)(void));
  27. ssize_t faux_recvv(int fd, struct iovec *iov, int iovcnt,
  28. const struct timespec *timeout, const sigset_t *sigmask);
  29. ssize_t faux_recvv_block(int fd, struct iovec *iov, int iovcnt,
  30. const struct timespec *timeout, const sigset_t *sigmask,
  31. int (*isbreak_func)(void));
  32. // Network class
  33. faux_net_t *faux_net_new(void);
  34. void faux_net_free(faux_net_t *faux_net);
  35. void faux_net_set_fd(faux_net_t *faux_net, int fd);
  36. void faux_net_unset_fd(faux_net_t *faux_net);
  37. int faux_net_get_fd(faux_net_t *faux_net);
  38. void faux_net_set_send_timeout(faux_net_t *faux_net, struct timespec *send_timeout);
  39. void faux_net_set_recv_timeout(faux_net_t *faux_net, struct timespec *recv_timeout);
  40. void faux_net_set_timeout(faux_net_t *faux_net, struct timespec *timeout);
  41. void faux_net_set_isbreak_func(faux_net_t *faux_net, int (*isbreak_func)(void));
  42. void faux_net_sigmask_empty(faux_net_t *faux_net);
  43. void faux_net_sigmask_fill(faux_net_t *faux_net);
  44. void faux_net_sigmask_add(faux_net_t *faux_net, int signum);
  45. void faux_net_sigmask_del(faux_net_t *faux_net, int signum);
  46. ssize_t faux_net_send(faux_net_t *faux_net, const void *buf, size_t n);
  47. ssize_t faux_net_sendv(faux_net_t *faux_net,
  48. const struct iovec *iov, int iovcnt);
  49. ssize_t faux_net_recv(faux_net_t *faux_net, void *buf, size_t n);
  50. ssize_t faux_net_recvv(faux_net_t *faux_net, struct iovec *iov, int iovcnt);
  51. // Pollfd class
  52. faux_pollfd_t *faux_pollfd_new(void);
  53. void faux_pollfd_free(faux_pollfd_t *faux_pollfd);
  54. struct pollfd *faux_pollfd_vector(faux_pollfd_t *faux_pollfd);
  55. size_t faux_pollfd_len(faux_pollfd_t *faux_pollfd);
  56. struct pollfd *faux_pollfd_item(faux_pollfd_t *faux_pollfd, unsigned int index);
  57. struct pollfd *faux_pollfd_find(faux_pollfd_t *faux_pollfd, int fd);
  58. struct pollfd *faux_pollfd_add(faux_pollfd_t *faux_pollfd, int fd, short events);
  59. bool_t faux_pollfd_del_by_fd(faux_pollfd_t *faux_pollfd, int fd);
  60. bool_t faux_pollfd_del_by_index(faux_pollfd_t *faux_pollfd, unsigned int index);
  61. void faux_pollfd_init_iterator(faux_pollfd_t *faux_pollfd, faux_pollfd_iterator_t *iterator);
  62. struct pollfd *faux_pollfd_each(faux_pollfd_t *faux_pollfd, faux_pollfd_iterator_t *iterator);
  63. struct pollfd *faux_pollfd_each_active(faux_pollfd_t *faux_pollfd, faux_pollfd_iterator_t *iterator);
  64. bool_t faux_pollfd_del_all(faux_pollfd_t *faux_pollfd);
  65. C_DECL_END
  66. #endif