Exemplo n.º 1
0
VALUE io_spec_rb_io_wait_readable(VALUE self, VALUE io, VALUE read_p) {
  int fd = io_spec_get_fd(io);
  set_non_blocking(fd);
  char buf[RB_IO_WAIT_READABLE_BUF];
  wait_bool ret;

  if(RTEST(read_p)) {
    rb_ivar_set(self, rb_intern("@write_data"), Qtrue);
    if(read(fd, buf, RB_IO_WAIT_READABLE_BUF) != -1) {
      return Qnil;
    }
  }

  ret = rb_io_wait_readable(fd);

  if(RTEST(read_p)) {
    if(read(fd, buf, RB_IO_WAIT_READABLE_BUF) != 13) {
      return Qnil;
    }
    rb_ivar_set(self, rb_intern("@read_data"),
        rb_str_new(buf, RB_IO_WAIT_READABLE_BUF));
  }

  return wait_bool_to_ruby_bool(ret);
}
Exemplo n.º 2
0
VALUE io_spec_rb_io_wait_readable(VALUE self, VALUE io) {
  int fd = io_spec_get_fd(io);
  set_non_blocking(fd);
  char buf[256];
  int ret;

  ret = read(fd, buf, 256);
  if (ret < 1)
    return rb_io_wait_readable(fd) ? Qtrue : Qfalse;
  else
    return Qnil;
}
Exemplo n.º 3
0
VALUE io_spec_rb_io_wait_writable(VALUE self, VALUE io) {
  return rb_io_wait_writable(io_spec_get_fd(io));
}
Exemplo n.º 4
0
VALUE io_spec_GetOpenFile_fd(VALUE self, VALUE io) {
  return INT2NUM(io_spec_get_fd(io));
}
Exemplo n.º 5
0
VALUE io_spec_rb_io_wait_writable(VALUE self, VALUE io) {
  wait_bool ret;
  ret = rb_io_wait_writable(io_spec_get_fd(io));
  return wait_bool_to_ruby_bool(ret);
}