Module: SocketKeepalive
- Defined in:
- ext/socket_keepalive.c
Defined Under Namespace
Classes: Error
Class Method Summary collapse
-
.get_keepalive(vSockfd) ⇒ Object
get SO_KEEPALIVE.
-
.get_keepcnt(vSockfd) ⇒ Object
get TCP_KEEPCNT.
-
.get_keepidle(vSockfd) ⇒ Object
get TCP_KEEPIDLE.
-
.get_keepintvl(vSockfd) ⇒ Object
get TCP_KEEPINTVL.
-
.set_keepalive(vSockfd, vOptval) ⇒ Object
set SO_KEEPALIVE.
-
.set_keepcnt(vSockfd, vOptval) ⇒ Object
set TCP_KEEPCNT.
-
.set_keepidle(vSockfd, vOptval) ⇒ Object
set TCP_KEEPIDLE.
-
.set_keepintvl(vSockfd, vOptval) ⇒ Object
set TCP_KEEPINTVL.
Class Method Details
.get_keepalive(vSockfd) ⇒ Object
get SO_KEEPALIVE
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'ext/socket_keepalive.c', line 7
static VALUE rb_sk_get_keepalive(VALUE self, VALUE vSockfd) {
int sockfd, optval, rv;
socklen_t optlen;
sockfd = NUM2INT(vSockfd);
optlen = sizeof(optval);
rv = getsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, (void*) &optval, &optlen);
if (rv != 0) {
rb_raise(rb_eSocketKeepaliveError, "%s", strerror(errno));
}
return(optval ? Qtrue : Qfalse);
}
|
.get_keepcnt(vSockfd) ⇒ Object
get TCP_KEEPCNT
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'ext/socket_keepalive.c', line 131
static VALUE rb_sk_get_keepcnt(VALUE self, VALUE vSockfd) {
#ifdef TCP_KEEPCNT
int sockfd, optval, rv;
socklen_t optlen;
sockfd = NUM2INT(vSockfd);
optlen = sizeof(optval);
rv = getsockopt(sockfd, IPPROTO_TCP, TCP_KEEPCNT, (void*) &optval, &optlen);
if (rv != 0) {
rb_raise(rb_eSocketKeepaliveError, "%s", strerror(errno));
}
return INT2NUM(optval);
#else
return Qnil;
#endif
}
|
.get_keepidle(vSockfd) ⇒ Object
get TCP_KEEPIDLE
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'ext/socket_keepalive.c', line 53
static VALUE rb_sk_get_keepidle(VALUE self, VALUE vSockfd) {
#ifdef TCP_KEEPIDLE
int sockfd, optval, rv;
socklen_t optlen;
sockfd = NUM2INT(vSockfd);
optlen = sizeof(optval);
rv = getsockopt(sockfd, IPPROTO_TCP, TCP_KEEPIDLE, (void*) &optval, &optlen);
if (rv != 0) {
rb_raise(rb_eSocketKeepaliveError, "%s", strerror(errno));
}
return INT2NUM(optval);
#else
return Qnil;
#endif
}
|
.get_keepintvl(vSockfd) ⇒ Object
get TCP_KEEPINTVL
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'ext/socket_keepalive.c', line 92
static VALUE rb_sk_get_keepintvl(VALUE self, VALUE vSockfd) {
#ifdef TCP_KEEPINTVL
int sockfd, optval, rv;
socklen_t optlen;
sockfd = NUM2INT(vSockfd);
optlen = sizeof(optval);
rv = getsockopt(sockfd, IPPROTO_TCP, TCP_KEEPINTVL, (void*) &optval, &optlen);
if (rv != 0) {
rb_raise(rb_eSocketKeepaliveError, "%s", strerror(errno));
}
return INT2NUM(optval);
#else
return Qnil;
#endif
}
|
.set_keepalive(vSockfd, vOptval) ⇒ Object
set SO_KEEPALIVE
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'ext/socket_keepalive.c', line 24
static VALUE rb_sk_set_keepalive(VALUE self, VALUE vSockfd, VALUE vOptval) {
int sockfd, optval, rv;
const char *classname;
sockfd = NUM2INT(vSockfd);
switch (TYPE(vOptval)) {
case T_TRUE:
optval = 1;
break;
case T_FALSE:
optval = 0;
break;
default:
classname = rb_class2name(CLASS_OF(vOptval));
rb_raise(rb_eTypeError, "wrong argument type %s (expected TrueClass or FalseClass)", classname);
break;
}
rv = setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, (void*) &optval, sizeof(optval));
if (rv != 0) {
rb_raise(rb_eSocketKeepaliveError, "%s", strerror(errno));
}
return Qnil;
}
|
.set_keepcnt(vSockfd, vOptval) ⇒ Object
set TCP_KEEPCNT
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'ext/socket_keepalive.c', line 152
static VALUE rb_sk_set_keepcnt(VALUE self, VALUE vSockfd, VALUE vOptval) {
#ifdef TCP_KEEPCNT
int sockfd, optval, rv;
sockfd = NUM2INT(vSockfd);
optval = NUM2INT(vOptval);
rv = setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPCNT, (void*) &optval, sizeof(optval));
if (rv != 0) {
rb_raise(rb_eSocketKeepaliveError, "%s", strerror(errno));
}
return Qnil;
#endif
}
|
.set_keepidle(vSockfd, vOptval) ⇒ Object
set TCP_KEEPIDLE
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'ext/socket_keepalive.c', line 74
static VALUE rb_sk_set_keepidle(VALUE self, VALUE vSockfd, VALUE vOptval) {
#ifdef TCP_KEEPIDLE
int sockfd, optval, rv;
sockfd = NUM2INT(vSockfd);
optval = NUM2INT(vOptval);
rv = setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPIDLE, (void*) &optval, sizeof(optval));
if (rv != 0) {
rb_raise(rb_eSocketKeepaliveError, "%s", strerror(errno));
}
#endif
return Qnil;
}
|
.set_keepintvl(vSockfd, vOptval) ⇒ Object
set TCP_KEEPINTVL
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'ext/socket_keepalive.c', line 113
static VALUE rb_sk_set_keepintvl(VALUE self, VALUE vSockfd, VALUE vOptval) {
#ifdef TCP_KEEPINTVL
int sockfd, optval, rv;
sockfd = NUM2INT(vSockfd);
optval = NUM2INT(vOptval);
rv = setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPINTVL, (void*) &optval, sizeof(optval));
if (rv != 0) {
rb_raise(rb_eSocketKeepaliveError, "%s", strerror(errno));
}
#endif
return Qnil;
}
|