module Gio::PollableInputStream

Public Instance Methods

create_source(&block) click to toggle source
# File lib/gio2/pollable-input-stream.rb, line 20
def create_source(&block)
  source = create_source_raw
  source.extend(PollableSource)
  source.set_callback(&block)
  source
end
Also aliased as: create_source_raw
create_source_raw(&block)
Alias for: create_source
read_nonblocking(size=nil) click to toggle source
# File lib/gio2/pollable-input-stream.rb, line 28
def read_nonblocking(size=nil)
  if size.nil?
    all = "".force_encoding("ASCII-8BIT")
    buffer_size = 8192
    buffer = " ".force_encoding("ASCII-8BIT") * buffer_size
    loop do
      begin
        read_bytes = read_nonblocking_raw_compatible(buffer)
      rescue IOError::WouldBlock
        break
      end
      all << buffer.byteslice(0, read_bytes)
      break if read_bytes != buffer_size
    end
    all
  else
    buffer = " " * size
    read_bytes = read_nonblocking_raw_compatible(buffer)
    buffer.replace(buffer.byteslice(0, read_bytes))
    buffer
  end
end
Also aliased as: read_nonblocking_raw
read_nonblocking_raw(size=nil)
Alias for: read_nonblocking

Private Instance Methods

read_nonblocking_raw_compatible(buffer) click to toggle source
# File lib/gio2/pollable-input-stream.rb, line 52
def read_nonblocking_raw_compatible(buffer)
  if (GLib::VERSION <=> [2, 42, 0]) >= 0
    read_nonblocking_raw(buffer)
  else
    read_nonblocking_raw(buffer, buffer.bytesize)
  end
end