add new pa_socket_udp_low_delay() API

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1860 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
Lennart Poettering 2007-09-18 22:24:45 +00:00
parent 6b2fd2328a
commit f44ddd1052
2 changed files with 36 additions and 1 deletions

View file

@ -144,13 +144,16 @@ void pa_socket_peer_to_string(int fd, char *c, size_t l) {
} }
int pa_socket_low_delay(int fd) { int pa_socket_low_delay(int fd) {
#ifdef SO_PRIORITY #ifdef SO_PRIORITY
int priority; int priority;
pa_assert(fd >= 0); pa_assert(fd >= 0);
priority = 7; priority = 7;
if (setsockopt(fd, SOL_SOCKET, SO_PRIORITY, (void*)&priority, sizeof(priority)) < 0) if (setsockopt(fd, SOL_SOCKET, SO_PRIORITY, (void*)&priority, sizeof(priority)) < 0) {
pa_log_warn("SO_PRIORITY failed: %s", pa_cstrerror(errno));
return -1; return -1;
}
#endif #endif
return 0; return 0;
@ -172,7 +175,10 @@ int pa_socket_tcp_low_delay(int fd) {
#else #else
if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (void*)&on, sizeof(on)) < 0) if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (void*)&on, sizeof(on)) < 0)
#endif #endif
{
pa_log_warn("TCP_NODELAY failed: %s", pa_cstrerror(errno));
ret = -1; ret = -1;
}
#endif #endif
#if defined(IPTOS_LOWDELAY) && defined(IP_TOS) && (defined(SOL_IP) || defined(IPPROTO_IP)) #if defined(IPTOS_LOWDELAY) && defined(IP_TOS) && (defined(SOL_IP) || defined(IPPROTO_IP))
@ -182,7 +188,35 @@ int pa_socket_tcp_low_delay(int fd) {
#else #else
if (setsockopt(fd, IPPROTO_IP, IP_TOS, (void*)&tos, sizeof(tos)) < 0) if (setsockopt(fd, IPPROTO_IP, IP_TOS, (void*)&tos, sizeof(tos)) < 0)
#endif #endif
{
pa_log_warn("IP_TOS failed: %s", pa_cstrerror(errno));
ret = -1; ret = -1;
}
#endif
return ret;
}
int pa_socket_udp_low_delay(int fd) {
int ret, tos;
pa_assert(fd >= 0);
ret = pa_socket_low_delay(fd);
tos = 0;
#if defined(IPTOS_LOWDELAY) && defined(IP_TOS) && (defined(SOL_IP) || defined(IPPROTO_IP))
tos = IPTOS_LOWDELAY;
#ifdef SOL_IP
if (setsockopt(fd, SOL_IP, IP_TOS, (void*)&tos, sizeof(tos)) < 0)
#else
if (setsockopt(fd, IPPROTO_IP, IP_TOS, (void*)&tos, sizeof(tos)) < 0)
#endif
{
ret = -1;
pa_log_warn("IP_TOS failed: %s", pa_cstrerror(errno));
}
#endif #endif
return ret; return ret;

View file

@ -31,6 +31,7 @@ void pa_socket_peer_to_string(int fd, char *c, size_t l);
int pa_socket_low_delay(int fd); int pa_socket_low_delay(int fd);
int pa_socket_tcp_low_delay(int fd); int pa_socket_tcp_low_delay(int fd);
int pa_socket_udp_low_delay(int fd);
int pa_socket_set_sndbuf(int fd, size_t l); int pa_socket_set_sndbuf(int fd, size_t l);
int pa_socket_set_rcvbuf(int fd, size_t l); int pa_socket_set_rcvbuf(int fd, size_t l);