Sha256: cb80c00e3ca4cfc17ebf96dbd55d604855e9d4982bc8e1061b44cf7bf2a221a5

Contents?: true

Size: 1.11 KB

Versions: 26

Compression:

Stored size: 1.11 KB

Contents

module Ragweed
  class Device
    def initialize(path, options={})
      @path = path
      @options = options
      @h = Ragweed::Wrap32::create_file(@path, :flags => Ragweed::Wrap32::FileAttributes::OVERLAPPED|Ragweed::Wrap32::FileAttributes::NORMAL)
    end

    def ioctl(code, inbuf, outbuf)
      overlap(lambda do |o|
        Ragweed::Wrap32::device_io_control(@h, code, inbuf, outbuf, o)
      end) do |ret, count|
        outbuf[0..count]
      end  
    end
    
    def read(sz)
      overlap(lambda do |o|
        Ragweed::Wrap32::read_file(@h, sz, o)
      end) do |ret, count|
        ret[0..count]
      end
    end
    
    def write(buf)
      overlap(lambda do |o|
        Ragweed::Wrap32::write_file(@h, buf, o)
      end) do |ret, count|
        count
      end
    end 
    
    def release
      Ragweed::Wrap32::close_handle(@h)
      @h = nil
    end

    private

    def overlap(proc)
      o = Ragweed::Wrap32::Overlapped.get
      ret = proc.call(o)
      count = o.wait(@h)
      r = yield ret, count
      o.release
      ret = r if r
    end
  end
end

Version data entries

26 entries across 26 versions & 2 rubygems

Version Path
tduehr-ragweed-0.1.7.1 lib/ragweed/wrap32/device.rb
tduehr-ragweed-0.1.7.2 lib/ragweed/wrap32/device.rb
ragweed-0.2.9 lib/ragweed/wrap32/device.rb
ragweed-0.2.8 lib/ragweed/wrap32/device.rb
ragweed-0.2.7 lib/ragweed/wrap32/device.rb
ragweed-0.2.6-java lib/ragweed/wrap32/device.rb
ragweed-0.2.6 lib/ragweed/wrap32/device.rb
ragweed-0.2.5-java lib/ragweed/wrap32/device.rb
ragweed-0.2.5 lib/ragweed/wrap32/device.rb
ragweed-0.2.4-java lib/ragweed/wrap32/device.rb
ragweed-0.2.4 lib/ragweed/wrap32/device.rb
ragweed-0.2.3-java lib/ragweed/wrap32/device.rb
ragweed-0.2.3 lib/ragweed/wrap32/device.rb
ragweed-0.2.2 lib/ragweed/wrap32/device.rb
ragweed-0.2.1-java lib/ragweed/wrap32/device.rb
ragweed-0.2.1 lib/ragweed/wrap32/device.rb
ragweed-0.2.0-java lib/ragweed/wrap32/device.rb
ragweed-0.2.0 lib/ragweed/wrap32/device.rb
ragweed-0.2.0.pre3-java lib/ragweed/wrap32/device.rb
ragweed-0.2.0.pre3 lib/ragweed/wrap32/device.rb