Ruby  1.9.3p484(2013-11-22revision43786)
fd_setsize.c
Go to the documentation of this file.
1 #undef FD_SETSIZE
2 /* redefine smaller size then default 64 */
3 #define FD_SETSIZE 32
4 #include <ruby.h>
5 
6 static VALUE
8 {
9  int sd = socket(AF_INET, SOCK_DGRAM, 0);
10  struct timeval zero;
11  fd_set read;
12  fd_set write;
13  fd_set error;
14 
15  zero.tv_sec = 0;
16  zero.tv_usec = 0;
17 
18  FD_ZERO(&read);
19  FD_ZERO(&write);
20  FD_ZERO(&error);
21 
22  FD_SET(sd, &read);
23  FD_SET(sd, &write);
24  FD_SET(sd, &error);
25 
26  select(sd+1, &read, &write, &error, &zero);
27 
28  return Qtrue;
29 }
30 
31 static VALUE
33 {
34  int i;
35  fd_set set;
36 
37  FD_ZERO(&set);
38 
39  for (i = 0; i < FD_SETSIZE * 2; i++) {
40  int sd = socket(AF_INET, SOCK_DGRAM, 0);
41  FD_SET(sd, &set);
42  if (set.fd_count > FD_SETSIZE) {
43  return Qfalse;
44  }
45  }
46  return Qtrue;
47 }
48 
49 void
51 {
52  VALUE m = rb_define_module_under(rb_define_module("Bug"), "Win32");
53  rb_define_module_function(m, "test_select", test_select, 0);
54  rb_define_module_function(m, "test_fdset", test_fdset, 0);
55 }
56