Class: IO (Ruby 2.2.4)
Description: Class : IO - Ruby 2.2.4

- Home
- Core 2.2.4
- Std-lib 2.2.4
- Downloads

Support for the Ruby 2.2 series has ended. See here for reference.

### Home Classes Methods

### In Files

- io/nonblock/nonblock.c

### Parent

Object

### Methods

- #nonblock
- #nonblock=
- #nonblock?

### Class/Module Index

Quicksearch

- IO

No matching classes.

# IO

### Public Instance Methods

nonblock {|io| } → io click to toggle source
nonblock(boolean) {|io| } → io

Yields `self` in non-blocking mode.

When `false` is given as an argument, `self` is yielded in blocking mode. The original mode is restored after the block is executed.

                   static VALUE
    rb_io_nonblock_block(int argc, VALUE *argv, VALUE io)
    {
        int nb = 1;
        rb_io_t *fptr;
        int f, restore[2];

        GetOpenFile(io, fptr);
        if (argc > 0) {
            VALUE v;
            rb_scan_args(argc, argv, "01", &v);
            nb = RTEST(v);
        }
        f = io_nonblock_mode(fptr->fd);
        restore[0] = fptr->fd;
        restore[1] = f;
        io_nonblock_set(fptr->fd, f, nb);
        return rb_ensure(rb_yield, io, io_nonblock_restore, (VALUE)restore);
    }

nonblock = boolean → boolean click to toggle source

Enables non-blocking mode on a stream when set to `true`, and blocking mode when set to `false`.

                   static VALUE
    rb_io_nonblock_set(VALUE io, VALUE nb)
    {
        rb_io_t *fptr;
        GetOpenFile(io, fptr);
        if (RTEST(nb))
            rb_io_set_nonblock(fptr);
        else
            io_nonblock_set(fptr->fd, io_nonblock_mode(fptr->fd), RTEST(nb));
        return io;
    }

nonblock? → boolean click to toggle source

Returns `true` if an IO object is in non-blocking mode.

                   static VALUE
    rb_io_nonblock_p(VALUE io)
    {
        rb_io_t *fptr;
        GetOpenFile(io, fptr);
        if (io_nonblock_mode(fptr->fd) & O_NONBLOCK)
            return Qtrue;
        return Qfalse;
    }