Ruby  1.9.3p551(2014-11-13revision48407)
wait_for_single_fd.c
Go to the documentation of this file.
1 #include "ruby/ruby.h"
2 #include "ruby/io.h"
3 
4 static VALUE
5 wait_for_single_fd(VALUE ign, VALUE fd, VALUE events, VALUE timeout)
6 {
7  struct timeval tv;
8  struct timeval *tvp = NULL;
9  int rc;
10 
11  if (!NIL_P(timeout)) {
12  tv = rb_time_timeval(timeout);
13  tvp = &tv;
14  }
15 
16  rc = rb_wait_for_single_fd(NUM2INT(fd), NUM2INT(events), tvp);
17  if (rc == -1)
18  rb_sys_fail("rb_wait_for_single_fd");
19  return INT2NUM(rc);
20 }
21 
22 void
24 {
26  rb_define_const(rb_cObject, "RB_WAITFD_OUT", INT2NUM(RB_WAITFD_OUT));
27  rb_define_const(rb_cObject, "RB_WAITFD_PRI", INT2NUM(RB_WAITFD_PRI));
28  rb_define_singleton_method(rb_cIO, "wait_for_single_fd",
30 }
#define NUM2INT(x)
Definition: ruby.h:536
void rb_define_singleton_method(VALUE obj, const char *name, VALUE(*func)(ANYARGS), int argc)
Defines a singleton method for obj.
Definition: class.c:1343
static VALUE wait_for_single_fd(VALUE ign, VALUE fd, VALUE events, VALUE timeout)
unsigned long VALUE
Definition: ruby.h:88
static VALUE INT2NUM(int v)
Definition: ruby.h:981
#define RB_WAITFD_OUT
Definition: io.h:39
n NULL
Definition: yaml2byte.c:134
RUBY_EXTERN VALUE rb_cObject
Definition: ruby.h:1246
#define RB_WAITFD_PRI
Definition: io.h:38
#define NIL_P(v)
Definition: ruby.h:374
void rb_define_const(VALUE, const char *, VALUE)
Definition: variable.c:1923
RUBY_EXTERN VALUE rb_cIO
Definition: ruby.h:1262
int rb_wait_for_single_fd(int fd, int events, struct timeval *tv)
Definition: thread.c:2965
void rb_sys_fail(const char *mesg)
Definition: error.c:1671
void Init_wait_for_single_fd(void)
#define RB_WAITFD_IN
Definition: io.h:37
struct timeval rb_time_timeval(VALUE)
Definition: time.c:2475