[vlc-commits] input: add vlc_accept_i11e() for the sake of completeness
Rémi Denis-Courmont
git at videolan.org
Wed Jul 1 18:22:13 CEST 2015
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Tue Jun 30 23:52:51 2015 +0300| [5a68ec400b9386cbbc9fcb42ab0884b9b93b6919] | committer: Rémi Denis-Courmont
input: add vlc_accept_i11e() for the sake of completeness
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5a68ec400b9386cbbc9fcb42ab0884b9b93b6919
---
include/vlc_interrupt.h | 2 ++
src/libvlccore.sym | 1 +
src/misc/interrupt.c | 32 ++++++++++++++++++++++++++++++++
3 files changed, 35 insertions(+)
diff --git a/include/vlc_interrupt.h b/include/vlc_interrupt.h
index 4e3ed26..7cc528b 100644
--- a/include/vlc_interrupt.h
+++ b/include/vlc_interrupt.h
@@ -103,6 +103,8 @@ ssize_t vlc_send_i11e(int fd, const void *buf, size_t len, int flags)
return vlc_sendto_i11e(fd, buf, len, flags, NULL, 0);
}
+VLC_API int vlc_accept_i11e(int fd, struct sockaddr *, socklen_t *, bool);
+
/**
* @}
* @defgroup interrupt_context Interrupt context signaling and manipulation
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index a0a794c..18805a2 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -548,6 +548,7 @@ vlc_recvmsg_i11e
vlc_recvfrom_i11e
vlc_sendmsg_i11e
vlc_sendto_i11e
+vlc_accept_i11e
vlc_sem_wait_i11e
vlc_interrupt_create
vlc_interrupt_destroy
diff --git a/src/misc/interrupt.c b/src/misc/interrupt.c
index a202740..0b84f1b 100644
--- a/src/misc/interrupt.c
+++ b/src/misc/interrupt.c
@@ -38,6 +38,7 @@
#include <vlc_common.h>
#include <vlc_fs.h> /* vlc_pipe */
+#include <vlc_network.h> /* vlc_accept */
#include "interrupt.h"
#include "libvlc.h"
@@ -489,6 +490,20 @@ ssize_t vlc_sendto_i11e(int fd, const void *buf, size_t len, int flags,
return vlc_sendmsg_i11e(fd, &msg, flags);
}
+int vlc_accept_i11e(int fd, struct sockaddr *addr, socklen_t *addrlen,
+ bool blocking)
+{
+ struct pollfd ufd;
+
+ ufd.fd = fd;
+ ufd.events = POLLIN;
+
+ if (vlc_poll_i11e(&ufd, 1, -1) < 0)
+ return -1;
+
+ return vlc_accept(fd, addr, addrlen, blocking);
+}
+
#else /* _WIN32 */
static void CALLBACK vlc_poll_i11e_wake_self(ULONG_PTR data)
@@ -620,4 +635,21 @@ ssize_t vlc_sendto_i11e(int fd, const void *buf, size_t len, int flags,
return ret;
}
+int vlc_accept_i11e(int fd, struct sockaddr *addr, socklen_t *addrlen,
+ bool blocking)
+{
+ struct pollfd ufd;
+
+ ufd.fd = fd;
+ ufd.events = POLLIN;
+
+ if (vlc_poll_i11e(&ufd, 1, -1) < 0)
+ return -1;
+
+ int cfd = vlc_accept(fd, addr, addrlen, blocking);
+ if (cfd < 0 && WSAGetLastError() == WSAEWOULDBLOCK)
+ errno = EAGAIN;
+ return cfd;
+}
+
#endif
More information about the vlc-commits
mailing list