blob: 6d30ee16c9c9ca8b5247667ed2adf7b9a2445d9e (
plain)
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
|
// (C) 2013 Cybozu et al.
#include "yrmcds.h"
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/time.h>
yrmcds_error yrmcds_shutdown(yrmcds* c) {
if( c == NULL )
return YRMCDS_BAD_ARGUMENT;
if( shutdown(c->sock, SHUT_RD) == -1 ) {
return YRMCDS_SYSTEM_ERROR;
}
return YRMCDS_OK;
}
int yrmcds_fileno(yrmcds* c) {
return c->sock;
}
yrmcds_error yrmcds_set_timeout(yrmcds* c, int timeout) {
if( c == NULL || timeout < 0 )
return YRMCDS_BAD_ARGUMENT;
struct timeval tv;
tv.tv_sec = timeout;
tv.tv_usec = 0;
if( setsockopt(c->sock, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)) == -1 )
return YRMCDS_SYSTEM_ERROR;
if( setsockopt(c->sock, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)) == -1 )
return YRMCDS_SYSTEM_ERROR;
return YRMCDS_OK;
}
|