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.

Public Instance Methods

kgio_read(maxlen) → buffer click to toggle source
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_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(maxlen) → buffer click to toggle source
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(str) → nil, String or :wait_writable click to toggle source

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_write(str) → nil click to toggle source

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);
}