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); }
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; }
VALUE io_spec_rb_io_wait_writable(VALUE self, VALUE io) { return rb_io_wait_writable(io_spec_get_fd(io)); }
VALUE io_spec_GetOpenFile_fd(VALUE self, VALUE io) { return INT2NUM(io_spec_get_fd(io)); }
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); }