[前][次][番号順一覧][スレッド一覧]

ruby-changes:38166

From: nobu <ko1@a...>
Date: Sun, 12 Apr 2015 09:53:56 +0900 (JST)
Subject: [ruby-changes:38166] nobu:r50247 (trunk): wait.c: wait_for_single_fd

nobu	2015-04-12 09:53:28 +0900 (Sun, 12 Apr 2015)

  New Revision: 50247

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=50247

  Log:
    wait.c: wait_for_single_fd
    
    * ext/io/wait/wait.c (wait_for_single_fd): extract wrapper
      function of rb_wait_for_single_fd().

  Modified files:
    trunk/ext/io/wait/wait.c
Index: ext/io/wait/wait.c
===================================================================
--- ext/io/wait/wait.c	(revision 50246)
+++ ext/io/wait/wait.c	(revision 50247)
@@ -58,6 +58,16 @@ get_timeout(int argc, VALUE *argv, struc https://github.com/ruby/ruby/blob/trunk/ext/io/wait/wait.c#L58
     }
 }
 
+static int
+wait_for_single_fd(rb_io_t *fptr, int events, struct timeval *tv)
+{
+    int i = rb_wait_for_single_fd(fptr->fd, events, tv);
+    if (i < 0)
+	rb_sys_fail(0);
+    rb_io_check_closed(fptr);
+    return (i & events);
+}
+
 /*
  * call-seq:
  *   io.nread -> int
@@ -121,7 +131,6 @@ static VALUE https://github.com/ruby/ruby/blob/trunk/ext/io/wait/wait.c#L131
 io_wait_readable(int argc, VALUE *argv, VALUE io)
 {
     rb_io_t *fptr;
-    int i;
     ioctl_arg n;
     struct timeval timerec;
     struct timeval *tv;
@@ -131,10 +140,7 @@ io_wait_readable(int argc, VALUE *argv, https://github.com/ruby/ruby/blob/trunk/ext/io/wait/wait.c#L140
     tv = get_timeout(argc, argv, &timerec);
     if (rb_io_read_pending(fptr)) return Qtrue;
     if (!FIONREAD_POSSIBLE_P(fptr->fd)) return Qfalse;
-    i = rb_wait_for_single_fd(fptr->fd, RB_WAITFD_IN, tv);
-    if (i < 0)
-	rb_sys_fail(0);
-    rb_io_check_closed(fptr);
+    wait_for_single_fd(fptr, RB_WAITFD_IN, tv);
     if (ioctl(fptr->fd, FIONREAD, &n)) rb_sys_fail(0);
     if (n > 0) return io;
     return Qnil;
@@ -152,19 +158,15 @@ static VALUE https://github.com/ruby/ruby/blob/trunk/ext/io/wait/wait.c#L158
 io_wait_writable(int argc, VALUE *argv, VALUE io)
 {
     rb_io_t *fptr;
-    int i;
     struct timeval timerec;
     struct timeval *tv;
 
     GetOpenFile(io, fptr);
     rb_io_check_writable(fptr);
     tv = get_timeout(argc, argv, &timerec);
-    i = rb_wait_for_single_fd(fptr->fd, RB_WAITFD_OUT, tv);
-    if (i < 0)
-	rb_sys_fail(0);
-    rb_io_check_closed(fptr);
-    if (i & RB_WAITFD_OUT)
+    if (wait_for_single_fd(fptr, RB_WAITFD_OUT, tv)) {
 	return io;
+    }
     return Qnil;
 }
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]