Monero
Loading...
Searching...
No Matches
asyncsendto.h
Go to the documentation of this file.
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) */
15ssize_t
16sendto_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 */
26ssize_t
27sendto_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) */
32ssize_t
33sendto_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 */
40int get_next_scheduled_send(struct timeval * next_send);
41
42/* execute sendto() for needed packets */
43int try_sendto(fd_set * writefds);
44
45/* set writefds before select() */
46int get_sendto_fds(fd_set * writefds, int * max_fd, const struct timeval * now);
47
48/* empty the list */
49void finalize_sendto(void);
50
51#endif
static int flags
Definition mdb_load.c:31
int try_sendto(fd_set *writefds)
Definition asyncsendto.c:223
int get_next_scheduled_send(struct timeval *next_send)
Definition asyncsendto.c:182
int get_sendto_fds(fd_set *writefds, int *max_fd, const struct timeval *now)
Definition asyncsendto.c:201
void finalize_sendto(void)
Definition asyncsendto.c:276
ssize_t sendto_or_schedule2(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen, const struct sockaddr_in6 *src_addr)
Definition asyncsendto.c:174
ssize_t sendto_schedule2(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen, const struct sockaddr_in6 *src_addr, unsigned int delay)
Definition asyncsendto.c:94
ssize_t sendto_or_schedule(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen)
Definition asyncsendto.c:167
const char * buf
Definition slow_memmem.cpp:73