module Kgio::PipeMethods

This module may be used used to create classes that respond to various Kgio methods for reading and writing. This is included in Kgio::Pipe by default.

This module may be used used to create classes that respond to various Kgio methods for reading and writing. This is included in Kgio::Pipe by default.

Public Instance Methods

kgio_read(*args) click to toggle source
io.kgio_read(maxlen)           ->  buffer
io.kgio_read(maxlen, buffer)   ->  buffer

Reads at most maxlen bytes from the stream socket. Returns with a newly allocated buffer, or may reuse an existing buffer if supplied.

This may block and call any method defined to kgio_wait_readable for the class.

Returns nil on EOF.

This behaves like read(2) and IO#readpartial, NOT fread(3) or IO#read which possess read-in-full behavior.

static VALUE kgio_read(int argc, VALUE *argv, VALUE io)
{
        return my_read(1, argc, argv, io);
}
kgio_read!(*args) click to toggle source

Same as Kgio::PipeMethods#kgio_read, except EOFError is raised on EOF without a backtrace. This method is intended as a drop-in replacement for places where IO#readpartial is used, and may be aliased as such.

static VALUE kgio_read_bang(int argc, VALUE *argv, VALUE io)
{
        VALUE rv = my_read(1, argc, argv, io);

        if (NIL_P(rv)) my_eof_error();
        return rv;
}
kgio_tryread(*args) click to toggle source
io.kgio_tryread(maxlen)           ->  buffer
io.kgio_tryread(maxlen, buffer)   ->  buffer

Reads at most maxlen bytes from the stream socket. Returns with a newly allocated buffer, or may reuse an existing buffer if supplied.

Returns nil on EOF.

Returns :wait_readable if EAGAIN is encountered.

static VALUE kgio_tryread(int argc, VALUE *argv, VALUE io)
{
        return my_read(0, argc, argv, io);
}
kgio_trywrite(p1) click to toggle source
io.kgio_trywrite(str)        -> nil, String or :wait_writable

Returns nil if the write was completed in full.

Returns a String containing the unwritten portion if EAGAIN was encountered, but some portion was successfully written.

Returns :wait_writable if EAGAIN is encountered and nothing was written.

static VALUE kgio_trywrite(VALUE io, VALUE str)
{
        return my_write(io, str, 0);
}
kgio_trywritev(p1) click to toggle source
io.kgio_trywritev(array)     -> nil, Array or :wait_writable

Returns nil if the write was completed in full.

Returns an Array of strings containing the unwritten portion if EAGAIN was encountered, but some portion was successfully written.

Returns :wait_writable if EAGAIN is encountered and nothing was written.

Note: it uses +Array()+ semantic for converting argument, so that it will succeed if you pass something else.

static VALUE kgio_trywritev(VALUE io, VALUE ary)
{
        return my_writev(io, ary, 0);
}
kgio_write(p1) click to toggle source
io.kgio_write(str)   -> nil

Returns nil when the write completes.

This may block and call any method defined to kgio_wait_writable for the class.

static VALUE kgio_write(VALUE io, VALUE str)
{
        return my_write(io, str, 1);
}
kgio_writev(p1) click to toggle source
io.kgio_writev(array)        -> nil

Returns nil when the write completes.

This may block and call any method defined to kgio_wait_writable for the class.

Note: it uses +Array()+ semantic for converting argument, so that it will succeed if you pass something else.

static VALUE kgio_writev(VALUE io, VALUE ary)
{
        return my_writev(io, ary, 1);
}