Sha256: 793327b4c1d2006df753f2dcb1df9f1a781aa570c61b20b35f91a933517f3dcd

Contents?: true

Size: 1021 Bytes

Versions: 30

Compression:

Stored size: 1021 Bytes

Contents

module NIO
  # Monitors watch IO objects for specific events
  class Monitor
    attr_reader :io, :interests, :selector
    attr_accessor :value, :readiness

    # :nodoc
    def initialize(io, interests, selector)
      unless io.is_a?(IO)
        if IO.respond_to? :try_convert
          io = IO.try_convert(io)
        elsif io.respond_to? :to_io
          io = io.to_io
        end

        raise TypeError, "can't convert #{io.class} into IO" unless io.is_a? IO
      end

      @io, @interests, @selector = io, interests, selector
      @closed = false
    end

    # Is the IO object readable?
    def readable?
      readiness == :r || readiness == :rw
    end

    # Is the IO object writable?
    def writable?
      readiness == :w || readiness == :rw
    end
    alias_method :writeable?, :writable?

    # Is this monitor closed?
    def closed?; @closed; end

    # Deactivate this monitor
    def close(deregister = true)
      @closed = true
      @selector.deregister(io) if deregister
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
nio4r-1.1.0 lib/nio/monitor.rb
nio4r-1.1.0-java lib/nio/monitor.rb
nio4r-1.0.1-java lib/nio/monitor.rb
nio4r-1.0.1 lib/nio/monitor.rb
nio4r-1.0.0-java lib/nio/monitor.rb
nio4r-1.0.0 lib/nio/monitor.rb
nio4r-0.5.0-java lib/nio/monitor.rb
nio4r-0.5.0 lib/nio/monitor.rb
nio4r-0.4.6-java lib/nio/monitor.rb
nio4r-0.4.6 lib/nio/monitor.rb
nio4r-0.4.5-java lib/nio/monitor.rb
nio4r-0.4.5 lib/nio/monitor.rb
nio4r-0.4.4-java lib/nio/monitor.rb
nio4r-0.4.4 lib/nio/monitor.rb
nio4r-0.4.3 lib/nio/monitor.rb
nio4r-0.4.3-java lib/nio/monitor.rb
nio4r-0.4.2 lib/nio/monitor.rb
nio4r-0.4.2-java lib/nio/monitor.rb
nio4r-0.4.1-java lib/nio/monitor.rb
nio4r-0.4.1 lib/nio/monitor.rb