1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#ifndef NAUNET_ON_WINDOWS
#include <netinet/tcp.h>
#include <netinet/in.h>
#endif
#include "socket.h"
void nn_socket_set_nodelay(struct nn_socket *sock, s32 nodelay)
{
al_assert(sock->type == NNWT_SOCKET_TCP);
setsockopt(sock->fd, IPPROTO_TCP, TCP_NODELAY, (char *)&nodelay, sizeof(nodelay));
}
u32 nn_socket_get_send_buf(struct nn_socket *sock)
{
u32 send_queue_size;
socklen_t optlen = sizeof(send_queue_size);
getsockopt(sock->fd, SOL_SOCKET, SO_SNDBUF, (char *)&send_queue_size, &optlen);
return send_queue_size;
}
void nn_socket_set_send_buf(struct nn_socket *sock, u32 sndbuf)
{
u32 send_queue_size = sndbuf;
setsockopt(sock->fd, SOL_SOCKET, SO_SNDBUF, (char *)&send_queue_size, sizeof(send_queue_size));
}
u32 nn_socket_get_recv_buf(struct nn_socket *sock)
{
u32 receive_queue_size;
socklen_t optlen = sizeof(receive_queue_size);
getsockopt(sock->fd, SOL_SOCKET, SO_RCVBUF, (char *)&receive_queue_size, &optlen);
return receive_queue_size;
}
void nn_socket_set_recv_buf(struct nn_socket *sock, u32 rcvbuf)
{
u32 receive_queue_size = rcvbuf;
setsockopt(sock->fd, SOL_SOCKET, SO_RCVBUF, (char *)&receive_queue_size, sizeof(receive_queue_size));
}
|