Sha256: 65f0da41691260d217fce38471b028cba82d9061ed7882b0063164d63b08b3c3

Contents?: true

Size: 1.27 KB

Versions: 12

Compression:

Stored size: 1.27 KB

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

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

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

    # set the interests set
    def interests=(interests)
      fail TypeError, "monitor is already closed" if closed?
      fail ArgumentError, "bad interests: #{interests}" unless [:r, :w, :rw].include?(interests)

      @interests = interests
    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 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

12 entries across 12 versions & 3 rubygems

Version Path
autocompl-0.2.2 test/dummy/vendor/bundle/ruby/2.3.0/gems/nio4r-1.2.1/lib/nio/monitor.rb
autocompl-0.2.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/nio4r-1.2.1/lib/nio/monitor.rb
autocompl-0.2.0 test/dummy/vendor/bundle/ruby/2.3.0/gems/nio4r-1.2.1/lib/nio/monitor.rb
autocompl-0.1.2 test/dummy/vendor/bundle/ruby/2.3.0/gems/nio4r-1.2.1/lib/nio/monitor.rb
autocompl-0.1.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/nio4r-1.2.1/lib/nio/monitor.rb
autocompl-0.1.0 test/dummy/vendor/bundle/ruby/2.3.0/gems/nio4r-1.2.1/lib/nio/monitor.rb
autocompl-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/nio4r-1.2.1/lib/nio/monitor.rb
abaci-0.3.0 vendor/bundle/gems/nio4r-1.2.1/lib/nio/monitor.rb
nio4r-2.0.0.pre-java lib/nio/monitor.rb
nio4r-2.0.0.pre lib/nio/monitor.rb
nio4r-1.2.1-java lib/nio/monitor.rb
nio4r-1.2.1 lib/nio/monitor.rb