Annotation of embedaddon/miniupnpd/minissdpd/asyncsendto.h, revision 1.1.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>