Annotation of embedaddon/miniupnpd/minissdpd/asyncsendto.h, revision 1.1
1.1 ! misho 1: /* $Id: asyncsendto.h,v 1.3 2017/11/02 15:48:29 nanard Exp $ */
! 2: /* MiniUPnP project
! 3: * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
! 4: * (c) 2006-2017 Thomas Bernard
! 5: * This software is subject to the conditions detailed
! 6: * in the LICENCE file provided within the distribution */
! 7:
! 8: #ifndef ASYNCSENDTO_H_INCLUDED
! 9: #define ASYNCSENDTO_H_INCLUDED
! 10: /* for fd_set */
! 11: #include <sys/select.h>
! 12:
! 13: /* sendto_schedule() : see sendto(2)
! 14: * schedule sendto() call after delay (milliseconds) */
! 15: ssize_t
! 16: sendto_schedule2(int sockfd, const void *buf, size_t len, int flags,
! 17: const struct sockaddr *dest_addr, socklen_t addrlen,
! 18: const struct sockaddr_in6 *src_addr,
! 19: unsigned int delay);
! 20:
! 21: #define sendto_schedule(sockfd, buf, len, flags, dest_addr, addrlen, delay) \
! 22: sendto_schedule2(sockfd, buf, len, flags, dest_addr, addrlen, NULL, delay)
! 23:
! 24: /* sendto_schedule() : see sendto(2)
! 25: * try sendto() at once and schedule if EINTR/EAGAIN/EWOULDBLOCK */
! 26: ssize_t
! 27: sendto_or_schedule(int sockfd, const void *buf, size_t len, int flags,
! 28: const struct sockaddr *dest_addr, socklen_t addrlen);
! 29:
! 30: /* same as sendto_schedule() except it will try to set source address
! 31: * (for IPV6 only) */
! 32: ssize_t
! 33: sendto_or_schedule2(int sockfd, const void *buf, size_t len, int flags,
! 34: const struct sockaddr *dest_addr, socklen_t addrlen,
! 35: const struct sockaddr_in6 *src_addr);
! 36:
! 37: /* get_next_scheduled_send()
! 38: * return number of scheduled sendto
! 39: * set next_send to timestamp to send next packet */
! 40: int get_next_scheduled_send(struct timeval * next_send);
! 41:
! 42: /* execute sendto() for needed packets */
! 43: int try_sendto(fd_set * writefds);
! 44:
! 45: /* set writefds before select() */
! 46: int get_sendto_fds(fd_set * writefds, int * max_fd, const struct timeval * now);
! 47:
! 48: /* empty the list */
! 49: void finalize_sendto(void);
! 50:
! 51: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>