io-dispatcher 0.2 → 0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Rakefile +1 -3
- data/io-dispatcher.gemspec +2 -2
- data/lib/io-dispatcher/version.rb +1 -1
- data/lib/io-dispatcher.rb +28 -19
- metadata +8 -11
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 7cf9d9de60880260030d029b5edb48f3e2253dbf4235f827a2a94359b7af32bb
         | 
| 4 | 
            +
              data.tar.gz: a4f40be71cf6bca0bb480d0b30796035e45ebad8994c3e11c40c1a633bdc4b38
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f93a3387eb61cbe05ca524376ea2dfaf9f17c002847d8b8da0b10357d061b0751221d49643d43672abb9bb04014fcd9ee71434cebaf4e174b75882fac0f9b6ed
         | 
| 7 | 
            +
              data.tar.gz: 22b07858ad4012bbb29598594002b21b45b36c427329c501c9d8ea408ad6906a209264a823fe71d3a35e2fd6f7a84f4690f0da0bd1bcad84bf7d4df3c89bf249
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/Rakefile
    CHANGED
    
    
    
        data/io-dispatcher.gemspec
    CHANGED
    
    | @@ -16,6 +16,6 @@ Gem::Specification.new do |s| | |
| 16 16 | 
             
              s.executables   = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
         | 
| 17 17 | 
             
              s.require_path  = 'lib'
         | 
| 18 18 |  | 
| 19 | 
            -
              s.add_development_dependency 'rake', '~>  | 
| 20 | 
            -
              s.add_development_dependency ' | 
| 19 | 
            +
              s.add_development_dependency 'rake', '~> 13.3'
         | 
| 20 | 
            +
              s.add_development_dependency 'simple-rake-tasks', '~> 0.1'
         | 
| 21 21 | 
             
            end
         | 
    
        data/lib/io-dispatcher.rb
    CHANGED
    
    | @@ -8,25 +8,24 @@ class IO | |
| 8 8 | 
             
                end
         | 
| 9 9 |  | 
| 10 10 | 
             
                def add_io_handler(input: nil, output: nil, exception: nil, handler: nil, &block)
         | 
| 11 | 
            -
                   | 
| 12 | 
            -
             | 
| 13 | 
            -
                   | 
| 14 | 
            -
             | 
| 15 | 
            -
                  elsif exception
         | 
| 16 | 
            -
                    [2, exception]
         | 
| 17 | 
            -
                  end
         | 
| 18 | 
            -
                  @io_handlers[mode][io] = handler || block
         | 
| 11 | 
            +
                  handler ||= block
         | 
| 12 | 
            +
                  set_io_handler(0, input, handler)     if input
         | 
| 13 | 
            +
                  set_io_handler(1, output, handler)    if output
         | 
| 14 | 
            +
                  set_io_handler(2, exception, handler) if exception
         | 
| 19 15 | 
             
                end
         | 
| 20 16 |  | 
| 21 17 | 
             
                def remove_io_handler(input: nil, output: nil, exception: nil)
         | 
| 22 | 
            -
                   | 
| 23 | 
            -
             | 
| 24 | 
            -
                   | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 18 | 
            +
                  set_io_handler(0, input, nil)     if input
         | 
| 19 | 
            +
                  set_io_handler(1, output, nil)    if output
         | 
| 20 | 
            +
                  set_io_handler(2, exception, nil) if exception
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                def set_io_handler(mode, io, handler)
         | 
| 24 | 
            +
                  if handler
         | 
| 25 | 
            +
                    @io_handlers[mode][io] = handler
         | 
| 26 | 
            +
                  else
         | 
| 27 | 
            +
                    @io_handlers[mode].delete(io)
         | 
| 28 28 | 
             
                  end
         | 
| 29 | 
            -
                  @io_handlers[mode].delete(io)
         | 
| 30 29 | 
             
                end
         | 
| 31 30 |  | 
| 32 31 | 
             
                def set_timeout_handler(timeout, &block)
         | 
| @@ -34,11 +33,17 @@ class IO | |
| 34 33 | 
             
                  @timeout_handler = block
         | 
| 35 34 | 
             
                end
         | 
| 36 35 |  | 
| 37 | 
            -
                def run
         | 
| 38 | 
            -
                   | 
| 39 | 
            -
             | 
| 36 | 
            +
                def run(&block)
         | 
| 37 | 
            +
                  @stop = false
         | 
| 38 | 
            +
                  until @stop
         | 
| 39 | 
            +
                    yield if block_given?
         | 
| 40 | 
            +
                    arrays = @io_handlers.map(&:keys)
         | 
| 41 | 
            +
                    break if !@timeout && arrays.flatten.empty?
         | 
| 42 | 
            +
                    if (ready = IO.select(*arrays, @timeout))
         | 
| 40 43 | 
             
                      ready.each_with_index do |mode, i|
         | 
| 41 | 
            -
                        mode.each  | 
| 44 | 
            +
                        mode.each do |io|
         | 
| 45 | 
            +
                          (handler = @io_handlers[i][io]) && handler.call(io)
         | 
| 46 | 
            +
                        end
         | 
| 42 47 | 
             
                      end
         | 
| 43 48 | 
             
                    else
         | 
| 44 49 | 
             
                      @timeout_handler.call if @timeout_handler
         | 
| @@ -46,6 +51,10 @@ class IO | |
| 46 51 | 
             
                  end
         | 
| 47 52 | 
             
                end
         | 
| 48 53 |  | 
| 54 | 
            +
                def stop
         | 
| 55 | 
            +
                  @stop = true
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 49 58 | 
             
              end
         | 
| 50 59 |  | 
| 51 60 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: io-dispatcher
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: '0. | 
| 4 | 
            +
              version: '0.7'
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - John Labovitz
         | 
| 8 | 
            -
            autorequire: 
         | 
| 9 8 | 
             
            bindir: bin
         | 
| 10 9 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 10 | 
            +
            date: 1980-01-02 00:00:00.000000000 Z
         | 
| 12 11 | 
             
            dependencies:
         | 
| 13 12 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 13 | 
             
              name: rake
         | 
| @@ -16,28 +15,28 @@ dependencies: | |
| 16 15 | 
             
                requirements:
         | 
| 17 16 | 
             
                - - "~>"
         | 
| 18 17 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: ' | 
| 18 | 
            +
                    version: '13.3'
         | 
| 20 19 | 
             
              type: :development
         | 
| 21 20 | 
             
              prerelease: false
         | 
| 22 21 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 22 | 
             
                requirements:
         | 
| 24 23 | 
             
                - - "~>"
         | 
| 25 24 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: ' | 
| 25 | 
            +
                    version: '13.3'
         | 
| 27 26 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            -
              name:  | 
| 27 | 
            +
              name: simple-rake-tasks
         | 
| 29 28 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 29 | 
             
                requirements:
         | 
| 31 30 | 
             
                - - "~>"
         | 
| 32 31 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: '0. | 
| 32 | 
            +
                    version: '0.1'
         | 
| 34 33 | 
             
              type: :development
         | 
| 35 34 | 
             
              prerelease: false
         | 
| 36 35 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 36 | 
             
                requirements:
         | 
| 38 37 | 
             
                - - "~>"
         | 
| 39 38 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: '0. | 
| 39 | 
            +
                    version: '0.1'
         | 
| 41 40 | 
             
            description: "\n    IO::Dispatcher is a simple dispatcher for IO objects.\n  "
         | 
| 42 41 | 
             
            email: johnl@johnlabovitz.com
         | 
| 43 42 | 
             
            executables: []
         | 
| @@ -54,7 +53,6 @@ homepage: http://github.com/jslabovitz/io-dispatcher | |
| 54 53 | 
             
            licenses:
         | 
| 55 54 | 
             
            - MIT
         | 
| 56 55 | 
             
            metadata: {}
         | 
| 57 | 
            -
            post_install_message: 
         | 
| 58 56 | 
             
            rdoc_options: []
         | 
| 59 57 | 
             
            require_paths:
         | 
| 60 58 | 
             
            - lib
         | 
| @@ -69,8 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 69 67 | 
             
                - !ruby/object:Gem::Version
         | 
| 70 68 | 
             
                  version: '0'
         | 
| 71 69 | 
             
            requirements: []
         | 
| 72 | 
            -
            rubygems_version: 3. | 
| 73 | 
            -
            signing_key: 
         | 
| 70 | 
            +
            rubygems_version: 3.7.2
         | 
| 74 71 | 
             
            specification_version: 4
         | 
| 75 72 | 
             
            summary: Simple dispatcher for IO objects.
         | 
| 76 73 | 
             
            test_files: []
         |