class Midori::Contrib::File

Public Class Methods

new(*args) click to toggle source

Init File object @param [Array] args same args like File.new

# File lib/midori-contrib/file.rb, line 8
def initialize(*args)
  @file = ::File.new(*args)
end

Public Instance Methods

close() click to toggle source

Close the file

# File lib/midori-contrib/file.rb, line 50
def close
  @file.close
end
raw() click to toggle source

raw file object @return [File] file

# File lib/midori-contrib/file.rb, line 45
def raw
  @file
end
read() click to toggle source

read file @return [String] string readed

# File lib/midori-contrib/file.rb, line 14
def read
  await(Promise.new do |resolve|
    data = ''
    EventLoop.register(@file, :r) do
      if @file.eof?
        EventLoop.deregister(@file)
        resolve.call(data)
      else
        data << @file.read_nonblock(16384)
      end
    end
  end)
end
write(data) click to toggle source

write file @param [String] data string to be written

# File lib/midori-contrib/file.rb, line 30
def write(data)
  await(Promise.new do |resolve|
    written = 0
    EventLoop.register(@file, :w) do
      written += @file.write_nonblock(data[written..-1])
      if written == data.size
        EventLoop.deregister(@file)
        resolve.call(written)
      end
    end
  end)
end