nio4r 2.5.8-java → 2.5.9-java
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/.github/workflows/workflow.yml +33 -19
 - data/CHANGES.md +19 -0
 - data/Gemfile +1 -2
 - data/README.md +0 -34
 - data/ext/nio4r/extconf.rb +4 -1
 - data/ext/nio4r/selector.c +29 -30
 - data/lib/nio/version.rb +1 -1
 - data/lib/nio4r_ext.jar +0 -0
 - data/license.md +66 -0
 - data/rakelib/extension.rake +1 -2
 - data/spec/nio/selectables/ssl_socket_spec.rb +1 -3
 - data/spec/spec_helper.rb +0 -3
 - metadata +8 -7
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 926dfd6f5d97b42c4f9123427c65d0981637bb6f20f4dc91777e1dae04b01b2d
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 0b36d60e26ef7ae81ce236ce67e22fb8572318ed51a72dcdc6f9ba20cf78b0ee
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: dd38f20089fd654f43604ce0b72a00918a0e412caf3d6ab39ce07f99635e22f597c0647db46793dda31b5b19545d36abb54241053391aba3255cd9cc9569bd76
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: af4fa2e1d9bda70ae2b9ada8a409d503fb4254acc9fcd57f212cf70549d9252cc5d95e3f80eee211a714ec897897d8e400d4655ae65f8a9028ead8fc514efd0f
         
     | 
| 
         @@ -14,34 +14,48 @@ jobs: 
     | 
|
| 
       14 
14 
     | 
    
         
             
                strategy:
         
     | 
| 
       15 
15 
     | 
    
         
             
                  fail-fast: false
         
     | 
| 
       16 
16 
     | 
    
         
             
                  matrix:
         
     | 
| 
       17 
     | 
    
         
            -
                    os:  
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
      
 17 
     | 
    
         
            +
                    os: 
         
     | 
| 
      
 18 
     | 
    
         
            +
                      - ubuntu-22.04
         
     | 
| 
      
 19 
     | 
    
         
            +
                      - macos-11
         
     | 
| 
      
 20 
     | 
    
         
            +
                      - windows-2022
         
     | 
| 
      
 21 
     | 
    
         
            +
                    ruby:
         
     | 
| 
      
 22 
     | 
    
         
            +
                      - "2.4"
         
     | 
| 
      
 23 
     | 
    
         
            +
                      - "2.5"
         
     | 
| 
      
 24 
     | 
    
         
            +
                      - "2.6"
         
     | 
| 
      
 25 
     | 
    
         
            +
                      - "2.7"
         
     | 
| 
      
 26 
     | 
    
         
            +
                      - "3.0"
         
     | 
| 
      
 27 
     | 
    
         
            +
                      - "3.1"
         
     | 
| 
      
 28 
     | 
    
         
            +
                      - "3.2"
         
     | 
| 
      
 29 
     | 
    
         
            +
                      - "head"
         
     | 
| 
      
 30 
     | 
    
         
            +
                      - "jruby"
         
     | 
| 
      
 31 
     | 
    
         
            +
                      - "truffleruby"
         
     | 
| 
       19 
32 
     | 
    
         
             
                    include:
         
     | 
| 
       20 
     | 
    
         
            -
                      - { 
     | 
| 
       21 
     | 
    
         
            -
                      - { 
     | 
| 
      
 33 
     | 
    
         
            +
                      - {os: ubuntu-20.04, ruby: "3.2"}
         
     | 
| 
      
 34 
     | 
    
         
            +
                      - {os: windows-2019, ruby: "3.2"}
         
     | 
| 
      
 35 
     | 
    
         
            +
                      - {os: windows-2022, ruby: ucrt}
         
     | 
| 
       22 
36 
     | 
    
         
             
                    exclude:
         
     | 
| 
       23 
     | 
    
         
            -
                      - { 
     | 
| 
       24 
     | 
    
         
            -
                      - { 
     | 
| 
       25 
     | 
    
         
            -
                      - { 
     | 
| 
      
 37 
     | 
    
         
            +
                      - {os: windows-2022, ruby: head}
         
     | 
| 
      
 38 
     | 
    
         
            +
                      - {os: windows-2022, ruby: jruby}
         
     | 
| 
      
 39 
     | 
    
         
            +
                      - {os: windows-2022, ruby: truffleruby}
         
     | 
| 
       26 
40 
     | 
    
         | 
| 
       27 
41 
     | 
    
         
             
                steps:
         
     | 
| 
       28 
     | 
    
         
            -
                  -  
     | 
| 
       29 
     | 
    
         
            -
                    uses: actions/checkout@v2
         
     | 
| 
      
 42 
     | 
    
         
            +
                  - uses: actions/checkout@v3
         
     | 
| 
       30 
43 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
                  - name:  
     | 
| 
       32 
     | 
    
         
            -
                     
     | 
| 
      
 44 
     | 
    
         
            +
                  - name: set JAVA_HOME
         
     | 
| 
      
 45 
     | 
    
         
            +
                    if: |
         
     | 
| 
      
 46 
     | 
    
         
            +
                      startsWith(matrix.ruby, 'jruby')
         
     | 
| 
      
 47 
     | 
    
         
            +
                    shell: bash
         
     | 
| 
      
 48 
     | 
    
         
            +
                    run:  |
         
     | 
| 
      
 49 
     | 
    
         
            +
                      echo JAVA_HOME=$JAVA_HOME_11_X64 >> $GITHUB_ENV
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                  - uses: ruby/setup-ruby@v1
         
     | 
| 
       33 
52 
     | 
    
         
             
                    with:
         
     | 
| 
       34 
53 
     | 
    
         
             
                      ruby-version: ${{matrix.ruby}}
         
     | 
| 
      
 54 
     | 
    
         
            +
                      bundler-cache: true
         
     | 
| 
       35 
55 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
                  - name:  
     | 
| 
       37 
     | 
    
         
            -
                    run: gem update --system --no-document --conservative
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                  - name: bundle install
         
     | 
| 
       40 
     | 
    
         
            -
                    run: bundle install --path .bundle/gems --without development
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
                  - name: compile
         
     | 
| 
      
 56 
     | 
    
         
            +
                  - name: Compile
         
     | 
| 
       43 
57 
     | 
    
         
             
                    run: bundle exec rake compile
         
     | 
| 
       44 
58 
     | 
    
         | 
| 
       45 
     | 
    
         
            -
                  - name:  
     | 
| 
      
 59 
     | 
    
         
            +
                  - name: Test
         
     | 
| 
       46 
60 
     | 
    
         
             
                    run: bundle exec rake spec
         
     | 
| 
       47 
61 
     | 
    
         
             
                    timeout-minutes: 10
         
     | 
    
        data/CHANGES.md
    CHANGED
    
    | 
         @@ -1,3 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ## 2.5.8 (2021-08-03)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * [#276](https://github.com/socketry/nio4r/pull/276)
         
     | 
| 
      
 4 
     | 
    
         
            +
              Fix missing return statement in function returning non-void (issue [#275](https://github.com/socketry/nio4r/pull/275))
         
     | 
| 
      
 5 
     | 
    
         
            +
              ([@ioquatix])
         
     | 
| 
      
 6 
     | 
    
         
            +
            * Remove `guard-rspec` from development dependencies ([@ioquatix])
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            ## 2.5.7 (2021-03-04)
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            * [#267](https://github.com/socketry/nio4r/pull/267)
         
     | 
| 
      
 11 
     | 
    
         
            +
              Don't try to link universal extension
         
     | 
| 
      
 12 
     | 
    
         
            +
              ([@ioquatix])
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            ## 2.5.6 (2021-03-04)
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            * [#268](https://github.com/socketry/nio4r/pull/268)
         
     | 
| 
      
 17 
     | 
    
         
            +
              Prefer kqueue when on OSX >= v10.12.2
         
     | 
| 
      
 18 
     | 
    
         
            +
              ([@jcmfernandes])
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
       1 
20 
     | 
    
         
             
            ## 2.5.5 (2021-02-05)
         
     | 
| 
       2 
21 
     | 
    
         | 
| 
       3 
22 
     | 
    
         
             
            * [#256](https://github.com/socketry/nio4r/pull/256)
         
     | 
    
        data/Gemfile
    CHANGED
    
    | 
         @@ -11,8 +11,7 @@ group :development do 
     | 
|
| 
       11 
11 
     | 
    
         
             
            end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            group :development, :test do
         
     | 
| 
       14 
     | 
    
         
            -
              gem " 
     | 
| 
       15 
     | 
    
         
            -
              gem "rake-compiler", require: false
         
     | 
| 
      
 14 
     | 
    
         
            +
              gem "rake-compiler", "~> 1.1.9", require: false
         
     | 
| 
       16 
15 
     | 
    
         
             
              gem "rspec", "~> 3.7", require: false
         
     | 
| 
       17 
16 
     | 
    
         
             
              gem "rubocop", "0.82.0", require: false
         
     | 
| 
       18 
17 
     | 
    
         
             
            end
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -3,7 +3,6 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            [](http://rubygems.org/gems/nio4r)
         
     | 
| 
       4 
4 
     | 
    
         
             
            [](https://github.com/socketry/nio4r/actions?query=workflow:nio4r)
         
     | 
| 
       5 
5 
     | 
    
         
             
            [](https://codeclimate.com/github/socketry/nio4r)
         
     | 
| 
       6 
     | 
    
         
            -
            [](https://coveralls.io/r/socketry/nio4r)
         
     | 
| 
       7 
6 
     | 
    
         
             
            [](http://www.rubydoc.info/gems/nio4r/2.2.0)
         
     | 
| 
       8 
7 
     | 
    
         | 
| 
       9 
8 
     | 
    
         
             
            **New I/O for Ruby (nio4r)**: cross-platform asynchronous I/O primitives for
         
     | 
| 
         @@ -98,36 +97,3 @@ rake clean 
     | 
|
| 
       98 
97 
     | 
    
         
             
            rake compile
         
     | 
| 
       99 
98 
     | 
    
         
             
            rake release
         
     | 
| 
       100 
99 
     | 
    
         
             
            ```
         
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
            ## License
         
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
     | 
    
         
            -
            Released under the MIT license.
         
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
       106 
     | 
    
         
            -
            Copyright, 2019, by Tony Arcieri.  
         
     | 
| 
       107 
     | 
    
         
            -
            Copyright, 2019, by [Samuel G. D. Williams](http://www.codeotaku.com/samuel-williams).
         
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
       109 
     | 
    
         
            -
            Permission is hereby granted, free of charge, to any person obtaining a copy
         
     | 
| 
       110 
     | 
    
         
            -
            of this software and associated documentation files (the "Software"), to deal
         
     | 
| 
       111 
     | 
    
         
            -
            in the Software without restriction, including without limitation the rights
         
     | 
| 
       112 
     | 
    
         
            -
            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
         
     | 
| 
       113 
     | 
    
         
            -
            copies of the Software, and to permit persons to whom the Software is
         
     | 
| 
       114 
     | 
    
         
            -
            furnished to do so, subject to the following conditions:
         
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
       116 
     | 
    
         
            -
            The above copyright notice and this permission notice shall be included in
         
     | 
| 
       117 
     | 
    
         
            -
            all copies or substantial portions of the Software.
         
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
       119 
     | 
    
         
            -
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
         
     | 
| 
       120 
     | 
    
         
            -
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
         
     | 
| 
       121 
     | 
    
         
            -
            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
         
     | 
| 
       122 
     | 
    
         
            -
            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
         
     | 
| 
       123 
     | 
    
         
            -
            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
         
     | 
| 
       124 
     | 
    
         
            -
            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
         
     | 
| 
       125 
     | 
    
         
            -
            THE SOFTWARE.
         
     | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
       127 
     | 
    
         
            -
            ### libev
         
     | 
| 
       128 
     | 
    
         
            -
             
     | 
| 
       129 
     | 
    
         
            -
            Released under the BSD license. See [ext/libev/LICENSE] for details.
         
     | 
| 
       130 
     | 
    
         
            -
             
     | 
| 
       131 
     | 
    
         
            -
            Copyright, 2007-2019, by Marc Alexander Lehmann.
         
     | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
       133 
     | 
    
         
            -
            [ext/libev/LICENSE]: https://github.com/socketry/nio4r/blob/master/ext/libev/LICENSE
         
     | 
    
        data/ext/nio4r/extconf.rb
    CHANGED
    
    | 
         @@ -4,7 +4,10 @@ require "rubygems" 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            # Write a dummy Makefile on Windows because we use the pure Ruby implementation there
         
     | 
| 
       6 
6 
     | 
    
         
             
            if Gem.win_platform?
         
     | 
| 
       7 
     | 
    
         
            -
               
     | 
| 
      
 7 
     | 
    
         
            +
              begin
         
     | 
| 
      
 8 
     | 
    
         
            +
                require "devkit" if RUBY_PLATFORM.include?("mingw")
         
     | 
| 
      
 9 
     | 
    
         
            +
              rescue LoadError => e
         
     | 
| 
      
 10 
     | 
    
         
            +
              end
         
     | 
| 
       8 
11 
     | 
    
         
             
              File.write("Makefile", "all install::\n")
         
     | 
| 
       9 
12 
     | 
    
         
             
              File.write("nio4r_ext.so", "")
         
     | 
| 
       10 
13 
     | 
    
         
             
              exit
         
     | 
    
        data/ext/nio4r/selector.c
    CHANGED
    
    | 
         @@ -43,13 +43,13 @@ static VALUE NIO_Selector_closed(VALUE self); 
     | 
|
| 
       43 
43 
     | 
    
         
             
            static VALUE NIO_Selector_is_empty(VALUE self);
         
     | 
| 
       44 
44 
     | 
    
         | 
| 
       45 
45 
     | 
    
         
             
            /* Internal functions */
         
     | 
| 
       46 
     | 
    
         
            -
            static VALUE NIO_Selector_synchronize(VALUE self, VALUE (*func)(VALUE  
     | 
| 
      
 46 
     | 
    
         
            +
            static VALUE NIO_Selector_synchronize(VALUE self, VALUE (*func)(VALUE arg), VALUE arg);
         
     | 
| 
       47 
47 
     | 
    
         
             
            static VALUE NIO_Selector_unlock(VALUE lock);
         
     | 
| 
       48 
     | 
    
         
            -
            static VALUE NIO_Selector_register_synchronized(VALUE  
     | 
| 
       49 
     | 
    
         
            -
            static VALUE NIO_Selector_deregister_synchronized(VALUE  
     | 
| 
       50 
     | 
    
         
            -
            static VALUE NIO_Selector_select_synchronized(VALUE  
     | 
| 
       51 
     | 
    
         
            -
            static VALUE NIO_Selector_close_synchronized(VALUE  
     | 
| 
       52 
     | 
    
         
            -
            static VALUE NIO_Selector_closed_synchronized(VALUE  
     | 
| 
      
 48 
     | 
    
         
            +
            static VALUE NIO_Selector_register_synchronized(VALUE arg);
         
     | 
| 
      
 49 
     | 
    
         
            +
            static VALUE NIO_Selector_deregister_synchronized(VALUE arg);
         
     | 
| 
      
 50 
     | 
    
         
            +
            static VALUE NIO_Selector_select_synchronized(VALUE arg);
         
     | 
| 
      
 51 
     | 
    
         
            +
            static VALUE NIO_Selector_close_synchronized(VALUE arg);
         
     | 
| 
      
 52 
     | 
    
         
            +
            static VALUE NIO_Selector_closed_synchronized(VALUE arg);
         
     | 
| 
       53 
53 
     | 
    
         | 
| 
       54 
54 
     | 
    
         
             
            static int NIO_Selector_run(struct NIO_Selector *selector, VALUE timeout);
         
     | 
| 
       55 
55 
     | 
    
         
             
            static void NIO_Selector_timeout_callback(struct ev_loop *ev_loop, struct ev_timer *timer, int revents);
         
     | 
| 
         @@ -62,7 +62,7 @@ static void NIO_Selector_wakeup_callback(struct ev_loop *ev_loop, struct ev_io * 
     | 
|
| 
       62 
62 
     | 
    
         
             
            #define BUSYWAIT_INTERVAL 0.01
         
     | 
| 
       63 
63 
     | 
    
         | 
| 
       64 
64 
     | 
    
         
             
            /* Selectors wait for events */
         
     | 
| 
       65 
     | 
    
         
            -
            void Init_NIO_Selector()
         
     | 
| 
      
 65 
     | 
    
         
            +
            void Init_NIO_Selector(void)
         
     | 
| 
       66 
66 
     | 
    
         
             
            {
         
     | 
| 
       67 
67 
     | 
    
         
             
                mNIO = rb_define_module("NIO");
         
     | 
| 
       68 
68 
     | 
    
         
             
                cNIO_Selector = rb_define_class_under(mNIO, "Selector", rb_cObject);
         
     | 
| 
         @@ -285,7 +285,7 @@ static VALUE NIO_Selector_backend(VALUE self) 
     | 
|
| 
       285 
285 
     | 
    
         
             
            }
         
     | 
| 
       286 
286 
     | 
    
         | 
| 
       287 
287 
     | 
    
         
             
            /* Synchronize around a reentrant selector lock */
         
     | 
| 
       288 
     | 
    
         
            -
            static VALUE NIO_Selector_synchronize(VALUE self, VALUE (*func)(VALUE  
     | 
| 
      
 288 
     | 
    
         
            +
            static VALUE NIO_Selector_synchronize(VALUE self, VALUE (*func)(VALUE arg), VALUE arg)
         
     | 
| 
       289 
289 
     | 
    
         
             
            {
         
     | 
| 
       290 
290 
     | 
    
         
             
                VALUE current_thread, lock_holder, lock;
         
     | 
| 
       291 
291 
     | 
    
         | 
| 
         @@ -298,10 +298,10 @@ static VALUE NIO_Selector_synchronize(VALUE self, VALUE (*func)(VALUE *args), VA 
     | 
|
| 
       298 
298 
     | 
    
         
             
                    rb_ivar_set(self, rb_intern("lock_holder"), current_thread);
         
     | 
| 
       299 
299 
     | 
    
         | 
| 
       300 
300 
     | 
    
         
             
                    /* We've acquired the lock, so ensure we unlock it */
         
     | 
| 
       301 
     | 
    
         
            -
                    return rb_ensure(func, (VALUE) 
     | 
| 
      
 301 
     | 
    
         
            +
                    return rb_ensure(func, (VALUE)arg, NIO_Selector_unlock, self);
         
     | 
| 
       302 
302 
     | 
    
         
             
                } else {
         
     | 
| 
       303 
303 
     | 
    
         
             
                    /* We already hold the selector lock, so no need to unlock it */
         
     | 
| 
       304 
     | 
    
         
            -
                    return func( 
     | 
| 
      
 304 
     | 
    
         
            +
                    return func(arg);
         
     | 
| 
       305 
305 
     | 
    
         
             
                }
         
     | 
| 
       306 
306 
     | 
    
         
             
            }
         
     | 
| 
       307 
307 
     | 
    
         | 
| 
         @@ -321,17 +321,18 @@ static VALUE NIO_Selector_unlock(VALUE self) 
     | 
|
| 
       321 
321 
     | 
    
         
             
            /* Register an IO object with the selector for the given interests */
         
     | 
| 
       322 
322 
     | 
    
         
             
            static VALUE NIO_Selector_register(VALUE self, VALUE io, VALUE interests)
         
     | 
| 
       323 
323 
     | 
    
         
             
            {
         
     | 
| 
       324 
     | 
    
         
            -
                VALUE args[3] = { 
     | 
| 
       325 
     | 
    
         
            -
                return NIO_Selector_synchronize(self, NIO_Selector_register_synchronized, args);
         
     | 
| 
      
 324 
     | 
    
         
            +
                VALUE args[3] = {self, io, interests};
         
     | 
| 
      
 325 
     | 
    
         
            +
                return NIO_Selector_synchronize(self, NIO_Selector_register_synchronized, (VALUE)args);
         
     | 
| 
       326 
326 
     | 
    
         
             
            }
         
     | 
| 
       327 
327 
     | 
    
         | 
| 
       328 
328 
     | 
    
         
             
            /* Internal implementation of register after acquiring mutex */
         
     | 
| 
       329 
     | 
    
         
            -
            static VALUE NIO_Selector_register_synchronized(VALUE  
     | 
| 
      
 329 
     | 
    
         
            +
            static VALUE NIO_Selector_register_synchronized(VALUE _args)
         
     | 
| 
       330 
330 
     | 
    
         
             
            {
         
     | 
| 
       331 
331 
     | 
    
         
             
                VALUE self, io, interests, selectables, monitor;
         
     | 
| 
       332 
332 
     | 
    
         
             
                VALUE monitor_args[3];
         
     | 
| 
       333 
333 
     | 
    
         
             
                struct NIO_Selector *selector;
         
     | 
| 
       334 
334 
     | 
    
         | 
| 
      
 335 
     | 
    
         
            +
                VALUE *args = (VALUE *)_args;
         
     | 
| 
       335 
336 
     | 
    
         
             
                self = args[0];
         
     | 
| 
       336 
337 
     | 
    
         
             
                io = args[1];
         
     | 
| 
       337 
338 
     | 
    
         
             
                interests = args[2];
         
     | 
| 
         @@ -361,15 +362,16 @@ static VALUE NIO_Selector_register_synchronized(VALUE *args) 
     | 
|
| 
       361 
362 
     | 
    
         
             
            /* Deregister an IO object from the selector */
         
     | 
| 
       362 
363 
     | 
    
         
             
            static VALUE NIO_Selector_deregister(VALUE self, VALUE io)
         
     | 
| 
       363 
364 
     | 
    
         
             
            {
         
     | 
| 
       364 
     | 
    
         
            -
                VALUE args[2] = { 
     | 
| 
       365 
     | 
    
         
            -
                return NIO_Selector_synchronize(self, NIO_Selector_deregister_synchronized, args);
         
     | 
| 
      
 365 
     | 
    
         
            +
                VALUE args[2] = {self, io};
         
     | 
| 
      
 366 
     | 
    
         
            +
                return NIO_Selector_synchronize(self, NIO_Selector_deregister_synchronized, (VALUE)args);
         
     | 
| 
       366 
367 
     | 
    
         
             
            }
         
     | 
| 
       367 
368 
     | 
    
         | 
| 
       368 
369 
     | 
    
         
             
            /* Internal implementation of register after acquiring mutex */
         
     | 
| 
       369 
     | 
    
         
            -
            static VALUE NIO_Selector_deregister_synchronized(VALUE  
     | 
| 
      
 370 
     | 
    
         
            +
            static VALUE NIO_Selector_deregister_synchronized(VALUE _args)
         
     | 
| 
       370 
371 
     | 
    
         
             
            {
         
     | 
| 
       371 
372 
     | 
    
         
             
                VALUE self, io, selectables, monitor;
         
     | 
| 
       372 
373 
     | 
    
         | 
| 
      
 374 
     | 
    
         
            +
                VALUE *args = (VALUE *)_args;
         
     | 
| 
       373 
375 
     | 
    
         
             
                self = args[0];
         
     | 
| 
       374 
376 
     | 
    
         
             
                io = args[1];
         
     | 
| 
       375 
377 
     | 
    
         | 
| 
         @@ -396,7 +398,6 @@ static VALUE NIO_Selector_is_registered(VALUE self, VALUE io) 
     | 
|
| 
       396 
398 
     | 
    
         
             
            static VALUE NIO_Selector_select(int argc, VALUE *argv, VALUE self)
         
     | 
| 
       397 
399 
     | 
    
         
             
            {
         
     | 
| 
       398 
400 
     | 
    
         
             
                VALUE timeout;
         
     | 
| 
       399 
     | 
    
         
            -
                VALUE args[2];
         
     | 
| 
       400 
401 
     | 
    
         | 
| 
       401 
402 
     | 
    
         
             
                rb_scan_args(argc, argv, "01", &timeout);
         
     | 
| 
       402 
403 
     | 
    
         | 
| 
         @@ -404,19 +405,19 @@ static VALUE NIO_Selector_select(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       404 
405 
     | 
    
         
             
                    rb_raise(rb_eArgError, "time interval must be positive");
         
     | 
| 
       405 
406 
     | 
    
         
             
                }
         
     | 
| 
       406 
407 
     | 
    
         | 
| 
       407 
     | 
    
         
            -
                args[ 
     | 
| 
       408 
     | 
    
         
            -
                 
     | 
| 
       409 
     | 
    
         
            -
             
     | 
| 
       410 
     | 
    
         
            -
                return NIO_Selector_synchronize(self, NIO_Selector_select_synchronized, args);
         
     | 
| 
      
 408 
     | 
    
         
            +
                VALUE args[2] = {self, timeout};
         
     | 
| 
      
 409 
     | 
    
         
            +
                return NIO_Selector_synchronize(self, NIO_Selector_select_synchronized, (VALUE)args);
         
     | 
| 
       411 
410 
     | 
    
         
             
            }
         
     | 
| 
       412 
411 
     | 
    
         | 
| 
       413 
412 
     | 
    
         
             
            /* Internal implementation of select with the selector lock held */
         
     | 
| 
       414 
     | 
    
         
            -
            static VALUE NIO_Selector_select_synchronized(VALUE  
     | 
| 
      
 413 
     | 
    
         
            +
            static VALUE NIO_Selector_select_synchronized(VALUE _args)
         
     | 
| 
       415 
414 
     | 
    
         
             
            {
         
     | 
| 
       416 
415 
     | 
    
         
             
                int ready;
         
     | 
| 
       417 
416 
     | 
    
         
             
                VALUE ready_array;
         
     | 
| 
       418 
417 
     | 
    
         
             
                struct NIO_Selector *selector;
         
     | 
| 
       419 
418 
     | 
    
         | 
| 
      
 419 
     | 
    
         
            +
                VALUE *args = (VALUE *)_args;
         
     | 
| 
      
 420 
     | 
    
         
            +
             
     | 
| 
       420 
421 
     | 
    
         
             
                Data_Get_Struct(args[0], struct NIO_Selector, selector);
         
     | 
| 
       421 
422 
     | 
    
         | 
| 
       422 
423 
     | 
    
         
             
                if (selector->closed) {
         
     | 
| 
         @@ -504,14 +505,13 @@ static VALUE NIO_Selector_wakeup(VALUE self) 
     | 
|
| 
       504 
505 
     | 
    
         
             
            /* Close the selector and free system resources */
         
     | 
| 
       505 
506 
     | 
    
         
             
            static VALUE NIO_Selector_close(VALUE self)
         
     | 
| 
       506 
507 
     | 
    
         
             
            {
         
     | 
| 
       507 
     | 
    
         
            -
                 
     | 
| 
       508 
     | 
    
         
            -
                return NIO_Selector_synchronize(self, NIO_Selector_close_synchronized, args);
         
     | 
| 
      
 508 
     | 
    
         
            +
                return NIO_Selector_synchronize(self, NIO_Selector_close_synchronized, self);
         
     | 
| 
       509 
509 
     | 
    
         
             
            }
         
     | 
| 
       510 
510 
     | 
    
         | 
| 
       511 
     | 
    
         
            -
            static VALUE NIO_Selector_close_synchronized(VALUE  
     | 
| 
      
 511 
     | 
    
         
            +
            static VALUE NIO_Selector_close_synchronized(VALUE self)
         
     | 
| 
       512 
512 
     | 
    
         
             
            {
         
     | 
| 
       513 
513 
     | 
    
         
             
                struct NIO_Selector *selector;
         
     | 
| 
       514 
     | 
    
         
            -
             
     | 
| 
      
 514 
     | 
    
         
            +
             
     | 
| 
       515 
515 
     | 
    
         
             
                Data_Get_Struct(self, struct NIO_Selector, selector);
         
     | 
| 
       516 
516 
     | 
    
         | 
| 
       517 
517 
     | 
    
         
             
                NIO_Selector_shutdown(selector);
         
     | 
| 
         @@ -522,14 +522,13 @@ static VALUE NIO_Selector_close_synchronized(VALUE *args) 
     | 
|
| 
       522 
522 
     | 
    
         
             
            /* Is the selector closed? */
         
     | 
| 
       523 
523 
     | 
    
         
             
            static VALUE NIO_Selector_closed(VALUE self)
         
     | 
| 
       524 
524 
     | 
    
         
             
            {
         
     | 
| 
       525 
     | 
    
         
            -
                 
     | 
| 
       526 
     | 
    
         
            -
                return NIO_Selector_synchronize(self, NIO_Selector_closed_synchronized, args);
         
     | 
| 
      
 525 
     | 
    
         
            +
                return NIO_Selector_synchronize(self, NIO_Selector_closed_synchronized, self);
         
     | 
| 
       527 
526 
     | 
    
         
             
            }
         
     | 
| 
       528 
527 
     | 
    
         | 
| 
       529 
     | 
    
         
            -
            static VALUE NIO_Selector_closed_synchronized(VALUE  
     | 
| 
      
 528 
     | 
    
         
            +
            static VALUE NIO_Selector_closed_synchronized(VALUE self)
         
     | 
| 
       530 
529 
     | 
    
         
             
            {
         
     | 
| 
       531 
530 
     | 
    
         
             
                struct NIO_Selector *selector;
         
     | 
| 
       532 
     | 
    
         
            -
             
     | 
| 
      
 531 
     | 
    
         
            +
             
     | 
| 
       533 
532 
     | 
    
         
             
                Data_Get_Struct(self, struct NIO_Selector, selector);
         
     | 
| 
       534 
533 
     | 
    
         | 
| 
       535 
534 
     | 
    
         
             
                return selector->closed ? Qtrue : Qfalse;
         
     | 
    
        data/lib/nio/version.rb
    CHANGED
    
    
    
        data/lib/nio4r_ext.jar
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/license.md
    ADDED
    
    | 
         @@ -0,0 +1,66 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # MIT License
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Copyright, 2011-2020, by Tony Arcieri.
         
     | 
| 
      
 4 
     | 
    
         
            +
            Copyright, 2012, by Logan Bowers.
         
     | 
| 
      
 5 
     | 
    
         
            +
            Copyright, 2013, by FURUHASHI Sadayuki.
         
     | 
| 
      
 6 
     | 
    
         
            +
            Copyright, 2013, by Stephen von Takach.
         
     | 
| 
      
 7 
     | 
    
         
            +
            Copyright, 2013, by Tim Carey-Smith.
         
     | 
| 
      
 8 
     | 
    
         
            +
            Copyright, 2013, by brainopia.
         
     | 
| 
      
 9 
     | 
    
         
            +
            Copyright, 2013, by Luis Lavena.
         
     | 
| 
      
 10 
     | 
    
         
            +
            Copyright, 2014, by SHIBATA Hiroshi.
         
     | 
| 
      
 11 
     | 
    
         
            +
            Copyright, 2014, by Sergey Avseyev.
         
     | 
| 
      
 12 
     | 
    
         
            +
            Copyright, 2014, by JohnnyT.
         
     | 
| 
      
 13 
     | 
    
         
            +
            Copyright, 2015-2017, by Tiago Cardoso.
         
     | 
| 
      
 14 
     | 
    
         
            +
            Copyright, 2015, by Daniel Berger.
         
     | 
| 
      
 15 
     | 
    
         
            +
            Copyright, 2015, by Upekshe.
         
     | 
| 
      
 16 
     | 
    
         
            +
            Copyright, 2015-2016, by UpeksheJay.
         
     | 
| 
      
 17 
     | 
    
         
            +
            Copyright, 2015, by Vladimir Kochnev.
         
     | 
| 
      
 18 
     | 
    
         
            +
            Copyright, 2016-2018, by Jun Aruga.
         
     | 
| 
      
 19 
     | 
    
         
            +
            Copyright, 2016, by Omer Katz.
         
     | 
| 
      
 20 
     | 
    
         
            +
            Copyright, 2016-2021, by Olle Jonsson.
         
     | 
| 
      
 21 
     | 
    
         
            +
            Copyright, 2017, by usa.
         
     | 
| 
      
 22 
     | 
    
         
            +
            Copyright, 2017, by HoneyryderChuck.
         
     | 
| 
      
 23 
     | 
    
         
            +
            Copyright, 2017, by tompng.
         
     | 
| 
      
 24 
     | 
    
         
            +
            Copyright, 2018-2021, by Samuel Williams.
         
     | 
| 
      
 25 
     | 
    
         
            +
            Copyright, 2019, by Cédric Boutillier.
         
     | 
| 
      
 26 
     | 
    
         
            +
            Copyright, 2019-2020, by MSP-Greg.
         
     | 
| 
      
 27 
     | 
    
         
            +
            Copyright, 2019-2020, by Benoit Daloze.
         
     | 
| 
      
 28 
     | 
    
         
            +
            Copyright, 2019, by Jesús Burgos Maciá.
         
     | 
| 
      
 29 
     | 
    
         
            +
            Copyright, 2019, by Thomas Kuntz.
         
     | 
| 
      
 30 
     | 
    
         
            +
            Copyright, 2019, by Orien Madgwick.
         
     | 
| 
      
 31 
     | 
    
         
            +
            Copyright, 2019, by Thomas Dziedzic.
         
     | 
| 
      
 32 
     | 
    
         
            +
            Copyright, 2019, by Zhang Kang.
         
     | 
| 
      
 33 
     | 
    
         
            +
            Copyright, 2020, by eladeyal-intel.
         
     | 
| 
      
 34 
     | 
    
         
            +
            Copyright, 2020, by Pedro Paiva.
         
     | 
| 
      
 35 
     | 
    
         
            +
            Copyright, 2020, by Bo.
         
     | 
| 
      
 36 
     | 
    
         
            +
            Copyright, 2020, by Charles Oliver Nutter.
         
     | 
| 
      
 37 
     | 
    
         
            +
            Copyright, 2020-2021, by Joao Fernandes.
         
     | 
| 
      
 38 
     | 
    
         
            +
            Copyright, 2021, by Jun Jiang.
         
     | 
| 
      
 39 
     | 
    
         
            +
            Copyright, 2021, by Jeffrey Martin.
         
     | 
| 
      
 40 
     | 
    
         
            +
            Copyright, 2021, by Pavel Lobashov.
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining a copy
         
     | 
| 
      
 43 
     | 
    
         
            +
            of this software and associated documentation files (the "Software"), to deal
         
     | 
| 
      
 44 
     | 
    
         
            +
            in the Software without restriction, including without limitation the rights
         
     | 
| 
      
 45 
     | 
    
         
            +
            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
         
     | 
| 
      
 46 
     | 
    
         
            +
            copies of the Software, and to permit persons to whom the Software is
         
     | 
| 
      
 47 
     | 
    
         
            +
            furnished to do so, subject to the following conditions:
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be included in all
         
     | 
| 
      
 50 
     | 
    
         
            +
            copies or substantial portions of the Software.
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
         
     | 
| 
      
 53 
     | 
    
         
            +
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
         
     | 
| 
      
 54 
     | 
    
         
            +
            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
         
     | 
| 
      
 55 
     | 
    
         
            +
            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
         
     | 
| 
      
 56 
     | 
    
         
            +
            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
         
     | 
| 
      
 57 
     | 
    
         
            +
            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
         
     | 
| 
      
 58 
     | 
    
         
            +
            SOFTWARE.
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            ## libev
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
            Released under the BSD license. See [ext/libev/LICENSE] for details.
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
            Copyright, 2007-2019, by Marc Alexander Lehmann.
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            [ext/libev/LICENSE]: https://github.com/socketry/nio4r/blob/master/ext/libev/LICENSE
         
     | 
    
        data/rakelib/extension.rake
    CHANGED
    
    
    
        data/spec/spec_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: nio4r
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2.5. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.5.9
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: java
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Tony Arcieri
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2023-04-02 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -17,8 +17,8 @@ dependencies: 
     | 
|
| 
       17 
17 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       18 
18 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       19 
19 
     | 
    
         
             
              name: bundler
         
     | 
| 
       20 
     | 
    
         
            -
              type: :development
         
     | 
| 
       21 
20 
     | 
    
         
             
              prerelease: false
         
     | 
| 
      
 21 
     | 
    
         
            +
              type: :development
         
     | 
| 
       22 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       24 
24 
     | 
    
         
             
                - - ">="
         
     | 
| 
         @@ -31,8 +31,8 @@ dependencies: 
     | 
|
| 
       31 
31 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       32 
32 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       33 
33 
     | 
    
         
             
              name: rake
         
     | 
| 
       34 
     | 
    
         
            -
              type: :development
         
     | 
| 
       35 
34 
     | 
    
         
             
              prerelease: false
         
     | 
| 
      
 35 
     | 
    
         
            +
              type: :development
         
     | 
| 
       36 
36 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       37 
37 
     | 
    
         
             
                requirements:
         
     | 
| 
       38 
38 
     | 
    
         
             
                - - ">="
         
     | 
| 
         @@ -88,6 +88,7 @@ files: 
     | 
|
| 
       88 
88 
     | 
    
         
             
            - lib/nio/selector.rb
         
     | 
| 
       89 
89 
     | 
    
         
             
            - lib/nio/version.rb
         
     | 
| 
       90 
90 
     | 
    
         
             
            - lib/nio4r_ext.jar
         
     | 
| 
      
 91 
     | 
    
         
            +
            - license.md
         
     | 
| 
       91 
92 
     | 
    
         
             
            - logo.png
         
     | 
| 
       92 
93 
     | 
    
         
             
            - nio4r.gemspec
         
     | 
| 
       93 
94 
     | 
    
         
             
            - rakelib/extension.rake
         
     | 
| 
         @@ -109,8 +110,8 @@ licenses: 
     | 
|
| 
       109 
110 
     | 
    
         
             
            metadata:
         
     | 
| 
       110 
111 
     | 
    
         
             
              bug_tracker_uri: https://github.com/socketry/nio4r/issues
         
     | 
| 
       111 
112 
     | 
    
         
             
              changelog_uri: https://github.com/socketry/nio4r/blob/master/CHANGES.md
         
     | 
| 
       112 
     | 
    
         
            -
              documentation_uri: https://www.rubydoc.info/gems/nio4r/2.5. 
     | 
| 
       113 
     | 
    
         
            -
              source_code_uri: https://github.com/socketry/nio4r/tree/v2.5. 
     | 
| 
      
 113 
     | 
    
         
            +
              documentation_uri: https://www.rubydoc.info/gems/nio4r/2.5.9
         
     | 
| 
      
 114 
     | 
    
         
            +
              source_code_uri: https://github.com/socketry/nio4r/tree/v2.5.9
         
     | 
| 
       114 
115 
     | 
    
         
             
              wiki_uri: https://github.com/socketry/nio4r/wiki
         
     | 
| 
       115 
116 
     | 
    
         
             
            post_install_message:
         
     | 
| 
       116 
117 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
         @@ -127,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       127 
128 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       128 
129 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       129 
130 
     | 
    
         
             
            requirements: []
         
     | 
| 
       130 
     | 
    
         
            -
            rubygems_version: 3. 
     | 
| 
      
 131 
     | 
    
         
            +
            rubygems_version: 3.3.25
         
     | 
| 
       131 
132 
     | 
    
         
             
            signing_key:
         
     | 
| 
       132 
133 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       133 
134 
     | 
    
         
             
            summary: New IO for Ruby
         
     |