nio4r 2.5.9 → 2.7.3

Sign up to get free protection for your applications and to get access to all the features.
data/ext/nio4r/selector.c CHANGED
@@ -23,9 +23,10 @@ static VALUE cNIO_Selector = Qnil;
23
23
 
24
24
  /* Allocator/deallocator */
25
25
  static VALUE NIO_Selector_allocate(VALUE klass);
26
- static void NIO_Selector_mark(struct NIO_Selector *loop);
26
+ static void NIO_Selector_mark(void *data);
27
27
  static void NIO_Selector_shutdown(struct NIO_Selector *selector);
28
- static void NIO_Selector_free(struct NIO_Selector *loop);
28
+ static void NIO_Selector_free(void *data);
29
+ static size_t NIO_Selector_memsize(const void *data);
29
30
 
30
31
  /* Class methods */
31
32
  static VALUE NIO_Selector_supported_backends(VALUE klass);
@@ -83,6 +84,18 @@ void Init_NIO_Selector(void)
83
84
  cNIO_Monitor = rb_define_class_under(mNIO, "Monitor", rb_cObject);
84
85
  }
85
86
 
87
+ static const rb_data_type_t NIO_Selector_type = {
88
+ "NIO::Selector",
89
+ {
90
+ NIO_Selector_mark,
91
+ NIO_Selector_free,
92
+ NIO_Selector_memsize,
93
+ },
94
+ 0,
95
+ 0,
96
+ RUBY_TYPED_WB_PROTECTED // Don't free immediately because of shutdown
97
+ };
98
+
86
99
  /* Create the libev event loop and incoming event buffer */
87
100
  static VALUE NIO_Selector_allocate(VALUE klass)
88
101
  {
@@ -104,8 +117,7 @@ static VALUE NIO_Selector_allocate(VALUE klass)
104
117
  rb_sys_fail("fcntl");
105
118
  }
106
119
 
107
- selector = (struct NIO_Selector *)xmalloc(sizeof(struct NIO_Selector));
108
-
120
+ VALUE obj = TypedData_Make_Struct(klass, struct NIO_Selector, &NIO_Selector_type, selector);
109
121
  /* Defer initializing the loop to #initialize */
110
122
  selector->ev_loop = 0;
111
123
 
@@ -118,14 +130,21 @@ static VALUE NIO_Selector_allocate(VALUE klass)
118
130
  selector->wakeup.data = (void *)selector;
119
131
 
120
132
  selector->closed = selector->selecting = selector->wakeup_fired = selector->ready_count = 0;
121
- selector->ready_array = Qnil;
133
+ RB_OBJ_WRITE(obj, &selector->ready_array, Qnil);
134
+ return obj;
135
+ }
122
136
 
123
- return Data_Wrap_Struct(klass, NIO_Selector_mark, NIO_Selector_free, selector);
137
+ struct NIO_Selector *NIO_Selector_unwrap(VALUE self)
138
+ {
139
+ struct NIO_Selector *selector;
140
+ TypedData_Get_Struct(self, struct NIO_Selector, &NIO_Selector_type, selector);
141
+ return selector;
124
142
  }
125
143
 
126
144
  /* NIO selectors store all Ruby objects in instance variables so mark is a stub */
127
- static void NIO_Selector_mark(struct NIO_Selector *selector)
145
+ static void NIO_Selector_mark(void *data)
128
146
  {
147
+ struct NIO_Selector *selector = (struct NIO_Selector *)data;
129
148
  if (selector->ready_array != Qnil) {
130
149
  rb_gc_mark(selector->ready_array);
131
150
  }
@@ -151,12 +170,18 @@ static void NIO_Selector_shutdown(struct NIO_Selector *selector)
151
170
  }
152
171
 
153
172
  /* Ruby finalizer for selector objects */
154
- static void NIO_Selector_free(struct NIO_Selector *selector)
173
+ static void NIO_Selector_free(void *data)
155
174
  {
175
+ struct NIO_Selector *selector = (struct NIO_Selector *)data;
156
176
  NIO_Selector_shutdown(selector);
157
177
  xfree(selector);
158
178
  }
159
179
 
180
+ static size_t NIO_Selector_memsize(const void *data)
181
+ {
182
+ return sizeof(struct NIO_Selector);
183
+ }
184
+
160
185
  /* Return an array of symbols for supported backends */
161
186
  static VALUE NIO_Selector_supported_backends(VALUE klass)
162
187
  {
@@ -205,7 +230,7 @@ static VALUE NIO_Selector_initialize(int argc, VALUE *argv, VALUE self)
205
230
  struct NIO_Selector *selector;
206
231
  unsigned int flags = 0;
207
232
 
208
- Data_Get_Struct(self, struct NIO_Selector, selector);
233
+ TypedData_Get_Struct(self, struct NIO_Selector, &NIO_Selector_type, selector);
209
234
 
210
235
  rb_scan_args(argc, argv, "01", &backend);
211
236
 
@@ -259,7 +284,7 @@ static VALUE NIO_Selector_backend(VALUE self)
259
284
  {
260
285
  struct NIO_Selector *selector;
261
286
 
262
- Data_Get_Struct(self, struct NIO_Selector, selector);
287
+ TypedData_Get_Struct(self, struct NIO_Selector, &NIO_Selector_type, selector);
263
288
  if (selector->closed) {
264
289
  rb_raise(rb_eIOError, "selector is closed");
265
290
  }
@@ -337,7 +362,7 @@ static VALUE NIO_Selector_register_synchronized(VALUE _args)
337
362
  io = args[1];
338
363
  interests = args[2];
339
364
 
340
- Data_Get_Struct(self, struct NIO_Selector, selector);
365
+ TypedData_Get_Struct(self, struct NIO_Selector, &NIO_Selector_type, selector);
341
366
  if (selector->closed) {
342
367
  rb_raise(rb_eIOError, "selector is closed");
343
368
  }
@@ -418,14 +443,14 @@ static VALUE NIO_Selector_select_synchronized(VALUE _args)
418
443
 
419
444
  VALUE *args = (VALUE *)_args;
420
445
 
421
- Data_Get_Struct(args[0], struct NIO_Selector, selector);
446
+ TypedData_Get_Struct(args[0], struct NIO_Selector, &NIO_Selector_type, selector);
422
447
 
423
448
  if (selector->closed) {
424
449
  rb_raise(rb_eIOError, "selector is closed");
425
450
  }
426
451
 
427
452
  if (!rb_block_given_p()) {
428
- selector->ready_array = rb_ary_new();
453
+ RB_OBJ_WRITE(args[0], &selector->ready_array, rb_ary_new());
429
454
  }
430
455
 
431
456
  ready = NIO_Selector_run(selector, args[1]);
@@ -433,7 +458,7 @@ static VALUE NIO_Selector_select_synchronized(VALUE _args)
433
458
  /* Timeout */
434
459
  if (ready < 0) {
435
460
  if (!rb_block_given_p()) {
436
- selector->ready_array = Qnil;
461
+ RB_OBJ_WRITE(args[0], &selector->ready_array, Qnil);
437
462
  }
438
463
 
439
464
  return Qnil;
@@ -443,7 +468,7 @@ static VALUE NIO_Selector_select_synchronized(VALUE _args)
443
468
  return INT2NUM(ready);
444
469
  } else {
445
470
  ready_array = selector->ready_array;
446
- selector->ready_array = Qnil;
471
+ RB_OBJ_WRITE(args[0], &selector->ready_array, Qnil);
447
472
  return ready_array;
448
473
  }
449
474
  }
@@ -490,7 +515,7 @@ static int NIO_Selector_run(struct NIO_Selector *selector, VALUE timeout)
490
515
  static VALUE NIO_Selector_wakeup(VALUE self)
491
516
  {
492
517
  struct NIO_Selector *selector;
493
- Data_Get_Struct(self, struct NIO_Selector, selector);
518
+ TypedData_Get_Struct(self, struct NIO_Selector, &NIO_Selector_type, selector);
494
519
 
495
520
  if (selector->closed) {
496
521
  rb_raise(rb_eIOError, "selector is closed");
@@ -512,7 +537,7 @@ static VALUE NIO_Selector_close_synchronized(VALUE self)
512
537
  {
513
538
  struct NIO_Selector *selector;
514
539
 
515
- Data_Get_Struct(self, struct NIO_Selector, selector);
540
+ TypedData_Get_Struct(self, struct NIO_Selector, &NIO_Selector_type, selector);
516
541
 
517
542
  NIO_Selector_shutdown(selector);
518
543
 
@@ -529,7 +554,7 @@ static VALUE NIO_Selector_closed_synchronized(VALUE self)
529
554
  {
530
555
  struct NIO_Selector *selector;
531
556
 
532
- Data_Get_Struct(self, struct NIO_Selector, selector);
557
+ TypedData_Get_Struct(self, struct NIO_Selector, &NIO_Selector_type, selector);
533
558
 
534
559
  return selector->closed ? Qtrue : Qfalse;
535
560
  }
@@ -1,5 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Released under the MIT License.
4
+ # Copyright, 2016, by Upekshe Jayasekera.
5
+ # Copyright, 2016-2017, by Tony Arcieri.
6
+ # Copyright, 2020, by Thomas Dziedzic.
7
+ # Copyright, 2023, by Samuel Williams.
8
+
3
9
  module NIO
4
10
  # Efficient byte buffers for performant I/O operations
5
11
  class ByteBuffer
data/lib/nio/monitor.rb CHANGED
@@ -1,5 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Released under the MIT License.
4
+ # Copyright, 2011-2018, by Tony Arcieri.
5
+ # Copyright, 2015, by Upekshe Jayasekera.
6
+ # Copyright, 2015, by Vladimir Kochnev.
7
+ # Copyright, 2018-2023, by Samuel Williams.
8
+ # Copyright, 2019-2020, by Gregory Longtin.
9
+
3
10
  module NIO
4
11
  # Monitors watch IO objects for specific events
5
12
  class Monitor
data/lib/nio/selector.rb CHANGED
@@ -1,5 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Released under the MIT License.
4
+ # Copyright, 2011-2017, by Tony Arcieri.
5
+ # Copyright, 2012, by Logan Bowers.
6
+ # Copyright, 2013, by Sadayuki Furuhashi.
7
+ # Copyright, 2013, by Stephen von Takach.
8
+ # Copyright, 2013, by Tim Carey-Smith.
9
+ # Copyright, 2013, by Ravil Bayramgalin.
10
+ # Copyright, 2014, by Sergey Avseyev.
11
+ # Copyright, 2014, by John Thornton.
12
+ # Copyright, 2015, by Vladimir Kochnev.
13
+ # Copyright, 2015, by Upekshe Jayasekera.
14
+ # Copyright, 2019-2020, by Gregory Longtin.
15
+ # Copyright, 2020-2021, by Joao Fernandes.
16
+ # Copyright, 2023, by Samuel Williams.
17
+
3
18
  require "set"
4
19
 
5
20
  module NIO
data/lib/nio/version.rb CHANGED
@@ -1,5 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Released under the MIT License.
4
+ # Copyright, 2011-2018, by Tony Arcieri.
5
+ # Copyright, 2018-2024, by Samuel Williams.
6
+ # Copyright, 2023, by Tsimnuj Hawj.
7
+
3
8
  module NIO
4
- VERSION = "2.5.9"
9
+ VERSION = "2.7.3"
5
10
  end
data/lib/nio.rb CHANGED
@@ -1,5 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Released under the MIT License.
4
+ # Copyright, 2011-2017, by Tony Arcieri.
5
+ # Copyright, 2013, by Stephen von Takach.
6
+ # Copyright, 2013, by Per Lundberg.
7
+ # Copyright, 2014, by Marek Kowalcze.
8
+ # Copyright, 2016, by Upekshe Jayasekera.
9
+ # Copyright, 2019-2023, by Samuel Williams.
10
+ # Copyright, 2021, by Jun Jiang.
11
+
3
12
  require "socket"
4
13
  require "nio/version"
5
14
 
data/lib/nio4r.rb ADDED
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2023, by Phillip Aldridge.
5
+ # Copyright, 2023, by Samuel Williams.
6
+
7
+ require_relative "nio"
data/license.md CHANGED
@@ -1,43 +1,56 @@
1
1
  # MIT License
2
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.
3
+ Copyright, 2011-2020, by Tony Arcieri.
4
+ Copyright, 2012, by Bernd Ahlers.
5
+ Copyright, 2012, by Logan Bowers.
6
+ Copyright, 2012, by Dirkjan Bussink.
7
+ Copyright, 2013, by Sadayuki Furuhashi.
8
+ Copyright, 2013, by Shannon Skipper.
9
+ Copyright, 2013, by Stephen von Takach.
10
+ Copyright, 2013, by Tim Carey-Smith.
11
+ Copyright, 2013, by Per Lundberg.
12
+ Copyright, 2013, by Ravil Bayramgalin.
13
+ Copyright, 2013, by Luis Lavena.
14
+ Copyright, 2014, by Anatol Pomozov.
15
+ Copyright, 2014, by Hiroshi Shibata.
16
+ Copyright, 2014, by Marek Kowalcze.
17
+ Copyright, 2014, by Sergey Avseyev.
18
+ Copyright, 2014, by John Thornton.
19
+ Copyright, 2015-2017, by Tiago Cardoso.
20
+ Copyright, 2015, by Daniel Berger.
21
+ Copyright, 2015-2016, by Upekshe Jayasekera.
22
+ Copyright, 2015, by Vladimir Kochnev.
23
+ Copyright, 2016-2018, by Jun Aruga.
24
+ Copyright, 2016, by Omer Katz.
25
+ Copyright, 2016, by Denis Washington.
26
+ Copyright, 2016-2021, by Olle Jonsson.
27
+ Copyright, 2017, by Tao Luo.
28
+ Copyright, 2017, by Usaku Nakamura.
29
+ Copyright, 2017-2022, by Gregory Longtin.
30
+ Copyright, 2017, by Lars Kanis.
31
+ Copyright, 2017, by Tomoya Ishida.
32
+ Copyright, 2018-2024, by Samuel Williams.
33
+ Copyright, 2019, by Cédric Boutillier.
34
+ Copyright, 2019-2020, by Benoit Daloze.
35
+ Copyright, 2019, by Jesús Burgos Maciá.
36
+ Copyright, 2019, by Thomas Kuntz.
37
+ Copyright, 2019, by Orien Madgwick.
38
+ Copyright, 2019, by Zhang Kang.
39
+ Copyright, 2020, by Thomas Dziedzic.
40
+ Copyright, 2020, by Elad Eyal.
41
+ Copyright, 2020, by Pedro Paiva.
42
+ Copyright, 2020, by Boaz Segev.
43
+ Copyright, 2020, by Charles Oliver Nutter.
44
+ Copyright, 2020-2021, by Joao Fernandes.
45
+ Copyright, 2021, by Jun Jiang.
46
+ Copyright, 2021, by Pavel Lobashov.
47
+ Copyright, 2021, by Jeffrey Martin.
48
+ Copyright, 2023-2024, by Pavel Rosický.
49
+ Copyright, 2023, by Tsimnuj Hawj.
50
+ Copyright, 2023, by Phillip Aldridge.
51
+ Copyright, 2023, by Maxime Demolin.
52
+ Copyright, 2023-2024, by Vít Ondruch.
53
+ Copyright, 2023, by Jean Boussier.
41
54
 
42
55
  Permission is hereby granted, free of charge, to any person obtaining a copy
43
56
  of this software and associated documentation files (the "Software"), to deal
@@ -59,7 +72,8 @@ SOFTWARE.
59
72
 
60
73
  ## libev
61
74
 
62
- Released under the BSD license. See [ext/libev/LICENSE] for details.
75
+ Released under the BSD-2-Clause OR GPL-2.0-or-later license.
76
+ See [ext/libev/LICENSE] for details.
63
77
 
64
78
  Copyright, 2007-2019, by Marc Alexander Lehmann.
65
79
 
data/readme.md ADDED
@@ -0,0 +1,91 @@
1
+ # ![nio4r](https://raw.github.com/socketry/nio4r/master/logo.png)
2
+
3
+ [![Development Status](https://github.com/socketry/nio4r/workflows/Test/badge.svg)](https://github.com/socketry/nio4r/actions?workflow=Test)
4
+
5
+ **New I/O for Ruby (nio4r)**: cross-platform asynchronous I/O primitives for
6
+ scalable network clients and servers. Modeled after the Java NIO API, but
7
+ simplified for ease-of-use.
8
+
9
+ **nio4r** provides an abstract, cross-platform stateful I/O selector API for Ruby.
10
+ I/O selectors are the heart of "reactor"-based event loops, and monitor
11
+ multiple I/O objects for various types of readiness, e.g. ready for reading or
12
+ writing.
13
+
14
+ ## Projects using nio4r
15
+
16
+ - [ActionCable](https://rubygems.org/gems/actioncable): Rails 5 WebSocket protocol, uses nio4r for a WebSocket server
17
+ - [Celluloid](https://github.com/celluloid/celluloid-io): Actor-based concurrency framework, uses nio4r for async I/O
18
+ - [Async](https://github.com/socketry/async): Asynchronous I/O framework for Ruby
19
+ - [Puma](https://github.com/puma/puma): Ruby/Rack web server built for concurrency
20
+
21
+ ## Goals
22
+
23
+ - Expose high-level interfaces for stateful IO selectors
24
+ - Keep the API small to maximize both portability and performance across many
25
+ different OSes and Ruby VMs
26
+ - Provide inherently thread-safe facilities for working with IO objects
27
+
28
+ ## Supported platforms
29
+
30
+ - Ruby 2.5
31
+ - Ruby 2.6
32
+ - Ruby 2.7
33
+ - Ruby 3.0
34
+ - [JRuby](https://github.com/jruby/jruby)
35
+ - [TruffleRuby](https://github.com/oracle/truffleruby)
36
+
37
+ ## Supported backends
38
+
39
+ - **libev**: MRI C extension targeting multiple native IO selector APIs (e.g epoll, kqueue)
40
+ - **Java NIO**: JRuby extension which wraps the Java NIO subsystem
41
+ - **Pure Ruby**: `Kernel.select`-based backend that should work on any Ruby interpreter
42
+
43
+ ## Documentation
44
+
45
+ [Please see the nio4r wiki](https://github.com/socketry/nio4r/wiki)
46
+ for more detailed documentation and usage notes:
47
+
48
+ - [Getting Started](https://github.com/socketry/nio4r/wiki/Getting-Started): Introduction to nio4r's components
49
+ - [Selectors](https://github.com/socketry/nio4r/wiki/Selectors): monitor multiple `IO` objects for readiness events
50
+ - [Monitors](https://github.com/socketry/nio4r/wiki/Monitors): control interests and inspect readiness for specific `IO` objects
51
+ - [Byte Buffers](https://github.com/socketry/nio4r/wiki/Byte-Buffers): fixed-size native buffers for high-performance I/O
52
+
53
+ See also:
54
+
55
+ - [YARD API documentation](http://www.rubydoc.info/gems/nio4r/frames)
56
+
57
+ ## Non-goals
58
+
59
+ **nio4r** is not a full-featured event framework like [EventMachine](https://github.com/eventmachine/eventmachine) or [Cool.io](https://coolio.github.io/).
60
+ Instead, nio4r is the sort of thing you might write a library like that on
61
+ top of. nio4r provides a minimal API such that individual Ruby implementers
62
+ may choose to produce optimized versions for their platform, without having
63
+ to maintain a large codebase.
64
+
65
+ ## Releases
66
+
67
+ Bump the version first:
68
+
69
+ bundle exec bake gem:release:version:patch
70
+
71
+ ### CRuby
72
+
73
+ rake clean
74
+ rake release
75
+
76
+ ### JRuby
77
+
78
+ You might need to delete `Gemfile.lock` before trying to `bundle install`.
79
+
80
+ # Ensure you have the correct JDK:
81
+ pacman -Syu jdk-openjdk
82
+ archlinux-java set java-19-openjdk
83
+
84
+ # Ensure you are using jruby:
85
+ chruby jruby
86
+ bundle update
87
+
88
+ # Build the package:
89
+ rake clean
90
+ rake compile
91
+ rake release
data.tar.gz.sig ADDED
Binary file
metadata CHANGED
@@ -1,61 +1,102 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nio4r
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.9
4
+ version: 2.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tony Arcieri
8
+ - Samuel Williams
9
+ - Olle Jonsson
10
+ - Gregory Longtin
11
+ - Tiago Cardoso
12
+ - Joao Fernandes
13
+ - Thomas Dziedzic
14
+ - Boaz Segev
15
+ - Logan Bowers
16
+ - Pedro Paiva
17
+ - Jun Aruga
18
+ - Omer Katz
19
+ - Upekshe Jayasekera
20
+ - Tim Carey-Smith
21
+ - Benoit Daloze
22
+ - Sergey Avseyev
23
+ - Tomoya Ishida
24
+ - Usaku Nakamura
25
+ - Cédric Boutillier
26
+ - Daniel Berger
27
+ - Dirkjan Bussink
28
+ - Hiroshi Shibata
29
+ - Jesús Burgos Maciá
30
+ - Luis Lavena
31
+ - Pavel Rosický
32
+ - Sadayuki Furuhashi
33
+ - Stephen von Takach
34
+ - Vladimir Kochnev
35
+ - Vít Ondruch
36
+ - Anatol Pomozov
37
+ - Bernd Ahlers
38
+ - Charles Oliver Nutter
39
+ - Denis Washington
40
+ - Elad Eyal
41
+ - Jean byroot Boussier
42
+ - Jeffrey Martin
43
+ - John Thornton
44
+ - Jun Jiang
45
+ - Lars Kanis
46
+ - Marek Kowalcze
47
+ - Maxime Demolin
48
+ - Orien Madgwick
49
+ - Pavel Lobashov
50
+ - Per Lundberg
51
+ - Phillip Aldridge
52
+ - Ravil Bayramgalin
53
+ - Shannon Skipper
54
+ - Tao Luo
55
+ - Thomas Kuntz
56
+ - Tsimnuj Hawj
57
+ - Zhang Kang
8
58
  autorequire:
9
59
  bindir: bin
10
- cert_chain: []
11
- date: 2023-04-02 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- description: Cross-platform asynchronous I/O primitives for scalable network clients
42
- and servers. Inspired by the Java NIO API, but simplified for ease-of-use.
60
+ cert_chain:
61
+ - |
62
+ -----BEGIN CERTIFICATE-----
63
+ MIIE2DCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQsFADBhMRgwFgYDVQQDDA9zYW11
64
+ ZWwud2lsbGlhbXMxHTAbBgoJkiaJk/IsZAEZFg1vcmlvbnRyYW5zZmVyMRIwEAYK
65
+ CZImiZPyLGQBGRYCY28xEjAQBgoJkiaJk/IsZAEZFgJuejAeFw0yMjA4MDYwNDUz
66
+ MjRaFw0zMjA4MDMwNDUzMjRaMGExGDAWBgNVBAMMD3NhbXVlbC53aWxsaWFtczEd
67
+ MBsGCgmSJomT8ixkARkWDW9yaW9udHJhbnNmZXIxEjAQBgoJkiaJk/IsZAEZFgJj
68
+ bzESMBAGCgmSJomT8ixkARkWAm56MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB
69
+ igKCAYEAomvSopQXQ24+9DBB6I6jxRI2auu3VVb4nOjmmHq7XWM4u3HL+pni63X2
70
+ 9qZdoq9xt7H+RPbwL28LDpDNflYQXoOhoVhQ37Pjn9YDjl8/4/9xa9+NUpl9XDIW
71
+ sGkaOY0eqsQm1pEWkHJr3zn/fxoKPZPfaJOglovdxf7dgsHz67Xgd/ka+Wo1YqoE
72
+ e5AUKRwUuvaUaumAKgPH+4E4oiLXI4T1Ff5Q7xxv6yXvHuYtlMHhYfgNn8iiW8WN
73
+ XibYXPNP7NtieSQqwR/xM6IRSoyXKuS+ZNGDPUUGk8RoiV/xvVN4LrVm9upSc0ss
74
+ RZ6qwOQmXCo/lLcDUxJAgG95cPw//sI00tZan75VgsGzSWAOdjQpFM0l4dxvKwHn
75
+ tUeT3ZsAgt0JnGqNm2Bkz81kG4A2hSyFZTFA8vZGhp+hz+8Q573tAR89y9YJBdYM
76
+ zp0FM4zwMNEUwgfRzv1tEVVUEXmoFCyhzonUUw4nE4CFu/sE3ffhjKcXcY//qiSW
77
+ xm4erY3XAgMBAAGjgZowgZcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
78
+ BBYEFO9t7XWuFf2SKLmuijgqR4sGDlRsMC4GA1UdEQQnMCWBI3NhbXVlbC53aWxs
79
+ aWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MC4GA1UdEgQnMCWBI3NhbXVlbC53aWxs
80
+ aWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MA0GCSqGSIb3DQEBCwUAA4IBgQB5sxkE
81
+ cBsSYwK6fYpM+hA5B5yZY2+L0Z+27jF1pWGgbhPH8/FjjBLVn+VFok3CDpRqwXCl
82
+ xCO40JEkKdznNy2avOMra6PFiQyOE74kCtv7P+Fdc+FhgqI5lMon6tt9rNeXmnW/
83
+ c1NaMRdxy999hmRGzUSFjozcCwxpy/LwabxtdXwXgSay4mQ32EDjqR1TixS1+smp
84
+ 8C/NCWgpIfzpHGJsjvmH2wAfKtTTqB9CVKLCWEnCHyCaRVuKkrKjqhYCdmMBqCws
85
+ JkxfQWC+jBVeG9ZtPhQgZpfhvh+6hMhraUYRQ6XGyvBqEUe+yo6DKIT3MtGE2+CP
86
+ eX9i9ZWBydWb8/rvmwmX2kkcBbX0hZS1rcR593hGc61JR6lvkGYQ2MYskBveyaxt
87
+ Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
88
+ voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
89
+ -----END CERTIFICATE-----
90
+ date: 2024-05-07 00:00:00.000000000 Z
91
+ dependencies: []
92
+ description:
43
93
  email:
44
- - bascule@gmail.com
45
94
  executables: []
46
95
  extensions:
47
96
  - ext/nio4r/extconf.rb
48
97
  extra_rdoc_files: []
49
98
  files:
50
- - ".github/workflows/workflow.yml"
51
- - ".gitignore"
52
- - ".rspec"
53
- - ".rubocop.yml"
54
- - CHANGES.md
55
- - Gemfile
56
- - README.md
57
- - Rakefile
58
- - examples/echo_server.rb
99
+ - changes.md
59
100
  - ext/libev/Changes
60
101
  - ext/libev/LICENSE
61
102
  - ext/libev/README
@@ -88,30 +129,19 @@ files:
88
129
  - lib/nio/monitor.rb
89
130
  - lib/nio/selector.rb
90
131
  - lib/nio/version.rb
132
+ - lib/nio4r.rb
91
133
  - license.md
92
- - logo.png
93
- - nio4r.gemspec
94
- - rakelib/extension.rake
95
- - rakelib/rspec.rake
96
- - rakelib/rubocop.rake
97
- - spec/nio/acceptables_spec.rb
98
- - spec/nio/bytebuffer_spec.rb
99
- - spec/nio/monitor_spec.rb
100
- - spec/nio/selectables/pipe_spec.rb
101
- - spec/nio/selectables/ssl_socket_spec.rb
102
- - spec/nio/selectables/tcp_socket_spec.rb
103
- - spec/nio/selectables/udp_socket_spec.rb
104
- - spec/nio/selector_spec.rb
105
- - spec/spec_helper.rb
106
- - spec/support/selectable_examples.rb
134
+ - readme.md
107
135
  homepage: https://github.com/socketry/nio4r
108
136
  licenses:
109
137
  - MIT
138
+ - BSD-2-Clause
110
139
  metadata:
111
140
  bug_tracker_uri: https://github.com/socketry/nio4r/issues
112
- changelog_uri: https://github.com/socketry/nio4r/blob/master/CHANGES.md
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
141
+ changelog_uri: https://github.com/socketry/nio4r/blob/main/changes.md
142
+ documentation_uri: https://www.rubydoc.info/gems/nio4r
143
+ funding_uri: https://github.com/sponsors/ioquatix/
144
+ source_code_uri: https://github.com/socketry/nio4r.git
115
145
  wiki_uri: https://github.com/socketry/nio4r/wiki
116
146
  post_install_message:
117
147
  rdoc_options: []
@@ -128,18 +158,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
158
  - !ruby/object:Gem::Version
129
159
  version: '0'
130
160
  requirements: []
131
- rubygems_version: 3.4.6
161
+ rubygems_version: 3.5.9
132
162
  signing_key:
133
163
  specification_version: 4
134
164
  summary: New IO for Ruby
135
- test_files:
136
- - spec/nio/acceptables_spec.rb
137
- - spec/nio/bytebuffer_spec.rb
138
- - spec/nio/monitor_spec.rb
139
- - spec/nio/selectables/pipe_spec.rb
140
- - spec/nio/selectables/ssl_socket_spec.rb
141
- - spec/nio/selectables/tcp_socket_spec.rb
142
- - spec/nio/selectables/udp_socket_spec.rb
143
- - spec/nio/selector_spec.rb
144
- - spec/spec_helper.rb
145
- - spec/support/selectable_examples.rb
165
+ test_files: []
metadata.gz.sig ADDED
Binary file