cool.io 1.9.0 → 1.9.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e56b06dac89092ba3fb69d7705788b4aecb51a205075b47afa6b8ff946f8bfa6
4
- data.tar.gz: d9ff9ac907b8eb86d3158d893acdcc0f64c58985ae2ccfeeafbcc9c2a5e366a4
3
+ metadata.gz: 1d38b3958d9ad5505fb4a53ded526d2ab347d46200a567a9aa0681cc5ca487cc
4
+ data.tar.gz: 42cb1b75db2c409dfc48756b8df29663675e31a104d03c37bbbfce9344592d6d
5
5
  SHA512:
6
- metadata.gz: b9d3c85e07f9f439c86be0572d4c455a429fbb2b8fd5b1cbdb87cd0fdca1c629060515074751eecb92357b365edf05c8b0cc79ce63ca4d6188e4eeca903cf95e
7
- data.tar.gz: 942c188b705d59f6aa0c9d028d87b17722f9cba55c317cfb1be8f7548562c68e1467c8ec5664297cbb575fd1f6997875311d1a35d76efb772c4f50c87c20aa94
6
+ metadata.gz: 6e3358de317e34735ca0f264c75f93d34d38325482c02eabf4d1289b3c44ef6557918bd59078a34c809322d69d05299ccb58f89db630c4054dc0162de8ab49b6
7
+ data.tar.gz: 775568343fe8788adbc43757a6f06ef5474e1d19477571317f29e21ff3da777d8567a6401377c6eb854e9f0c4060d97da7c84dafa56dc1e772f636417365d338
data/ext/cool.io/buffer.c CHANGED
@@ -47,8 +47,8 @@ static VALUE mCoolio = Qnil;
47
47
  static VALUE cCoolio_Buffer = Qnil;
48
48
 
49
49
  static VALUE Coolio_Buffer_allocate(VALUE klass);
50
- static void Coolio_Buffer_mark(struct buffer *);
51
- static void Coolio_Buffer_free(struct buffer *);
50
+ static void Coolio_Buffer_mark(void *);
51
+ static void Coolio_Buffer_free(void *);
52
52
 
53
53
  static VALUE Coolio_Buffer_default_node_size(VALUE klass);
54
54
  static VALUE Coolio_Buffer_set_default_node_size(VALUE klass, VALUE size);
@@ -64,7 +64,7 @@ static VALUE Coolio_Buffer_to_str(VALUE self);
64
64
  static VALUE Coolio_Buffer_read_from(VALUE self, VALUE io);
65
65
  static VALUE Coolio_Buffer_write_to(VALUE self, VALUE io);
66
66
 
67
- static struct buffer *buffer_new(void);
67
+ static struct buffer *buffer_init(struct buffer *);
68
68
  static void buffer_clear(struct buffer * buf);
69
69
  static void buffer_free(struct buffer * buf);
70
70
  static void buffer_free_pool(struct buffer * buf);
@@ -86,8 +86,6 @@ static int buffer_write_to(struct buffer * buf, int fd);
86
86
  void
87
87
  Init_coolio_buffer()
88
88
  {
89
- VALUE cCoolio_IO;
90
-
91
89
  mCoolio = rb_define_module("Coolio");
92
90
  cCoolio_Buffer = rb_define_class_under(mCoolio, "Buffer", rb_cObject);
93
91
  rb_define_alloc_func(cCoolio_Buffer, Coolio_Buffer_allocate);
@@ -114,21 +112,33 @@ Init_coolio_buffer()
114
112
  rb_define_const(cCoolio_Buffer, "MAX_SIZE", INT2NUM(MAX_BUFFER_SIZE));
115
113
  }
116
114
 
115
+ static const rb_data_type_t Coolio_Buffer_type = {
116
+ "Coolio::Buffer",
117
+ {
118
+ Coolio_Buffer_mark,
119
+ Coolio_Buffer_free,
120
+ }
121
+ };
122
+
117
123
  static VALUE
118
124
  Coolio_Buffer_allocate(VALUE klass)
119
125
  {
120
- return Data_Wrap_Struct(klass, Coolio_Buffer_mark, Coolio_Buffer_free, buffer_new());
126
+ struct buffer *buf;
127
+ VALUE buffer = TypedData_Make_Struct(klass, struct buffer, &Coolio_Buffer_type, buf);
128
+
129
+ buffer_init(buf);
130
+ return buffer;
121
131
  }
122
132
 
123
133
  static void
124
- Coolio_Buffer_mark(struct buffer * buf)
134
+ Coolio_Buffer_mark(void *buf)
125
135
  {
126
136
  /* Naively discard the memory pool whenever Ruby garbage collects */
127
137
  buffer_free_pool(buf);
128
138
  }
129
139
 
130
140
  static void
131
- Coolio_Buffer_free(struct buffer * buf)
141
+ Coolio_Buffer_free(void * buf)
132
142
  {
133
143
  buffer_free(buf);
134
144
  }
@@ -188,7 +198,7 @@ Coolio_Buffer_initialize(int argc, VALUE * argv, VALUE self)
188
198
  struct buffer *buf;
189
199
 
190
200
  if (rb_scan_args(argc, argv, "01", &node_size_obj) == 1) {
191
- Data_Get_Struct(self, struct buffer, buf);
201
+ TypedData_Get_Struct(self, struct buffer, &Coolio_Buffer_type, buf);
192
202
 
193
203
  /*
194
204
  * Make sure we're not changing the buffer size after data
@@ -212,7 +222,7 @@ static VALUE
212
222
  Coolio_Buffer_clear(VALUE self)
213
223
  {
214
224
  struct buffer *buf;
215
- Data_Get_Struct(self, struct buffer, buf);
225
+ TypedData_Get_Struct(self, struct buffer, &Coolio_Buffer_type, buf);
216
226
 
217
227
  buffer_clear(buf);
218
228
 
@@ -229,7 +239,7 @@ static VALUE
229
239
  Coolio_Buffer_size(VALUE self)
230
240
  {
231
241
  struct buffer *buf;
232
- Data_Get_Struct(self, struct buffer, buf);
242
+ TypedData_Get_Struct(self, struct buffer, &Coolio_Buffer_type, buf);
233
243
 
234
244
  return INT2NUM(buf->size);
235
245
  }
@@ -244,7 +254,7 @@ static VALUE
244
254
  Coolio_Buffer_empty(VALUE self)
245
255
  {
246
256
  struct buffer *buf;
247
- Data_Get_Struct(self, struct buffer, buf);
257
+ TypedData_Get_Struct(self, struct buffer, &Coolio_Buffer_type, buf);
248
258
 
249
259
  return buf->size > 0 ? Qfalse : Qtrue;
250
260
  }
@@ -259,7 +269,7 @@ static VALUE
259
269
  Coolio_Buffer_append(VALUE self, VALUE data)
260
270
  {
261
271
  struct buffer *buf;
262
- Data_Get_Struct(self, struct buffer, buf);
272
+ TypedData_Get_Struct(self, struct buffer, &Coolio_Buffer_type, buf);
263
273
 
264
274
  /* Is this needed? Never seen anyone else do it... */
265
275
  data = rb_convert_type(data, T_STRING, "String", "to_str");
@@ -278,7 +288,7 @@ static VALUE
278
288
  Coolio_Buffer_prepend(VALUE self, VALUE data)
279
289
  {
280
290
  struct buffer *buf;
281
- Data_Get_Struct(self, struct buffer, buf);
291
+ TypedData_Get_Struct(self, struct buffer, &Coolio_Buffer_type, buf);
282
292
 
283
293
  data = rb_convert_type(data, T_STRING, "String", "to_str");
284
294
  buffer_prepend(buf, RSTRING_PTR(data), RSTRING_LEN(data));
@@ -304,7 +314,7 @@ Coolio_Buffer_read(int argc, VALUE * argv, VALUE self)
304
314
  int length;
305
315
  struct buffer *buf;
306
316
 
307
- Data_Get_Struct(self, struct buffer, buf);
317
+ TypedData_Get_Struct(self, struct buffer, &Coolio_Buffer_type, buf);
308
318
 
309
319
  if (rb_scan_args(argc, argv, "01", &length_obj) == 1) {
310
320
  length = NUM2INT(length_obj);
@@ -340,7 +350,7 @@ Coolio_Buffer_read_frame(VALUE self, VALUE data, VALUE mark)
340
350
  char mark_c = (char) NUM2INT(mark);
341
351
  struct buffer *buf;
342
352
 
343
- Data_Get_Struct(self, struct buffer, buf);
353
+ TypedData_Get_Struct(self, struct buffer, &Coolio_Buffer_type, buf);
344
354
 
345
355
  if (buffer_read_frame(buf, data, mark_c)) {
346
356
  return Qtrue;
@@ -361,7 +371,7 @@ Coolio_Buffer_to_str(VALUE self)
361
371
  VALUE str;
362
372
  struct buffer *buf;
363
373
 
364
- Data_Get_Struct(self, struct buffer, buf);
374
+ TypedData_Get_Struct(self, struct buffer, &Coolio_Buffer_type, buf);
365
375
 
366
376
  str = rb_str_new(0, buf->size);
367
377
  buffer_copy(buf, RSTRING_PTR(str), buf->size);
@@ -388,7 +398,7 @@ Coolio_Buffer_read_from(VALUE self, VALUE io)
388
398
  OpenFile *fptr;
389
399
  #endif
390
400
 
391
- Data_Get_Struct(self, struct buffer, buf);
401
+ TypedData_Get_Struct(self, struct buffer, &Coolio_Buffer_type, buf);
392
402
  io = rb_convert_type(io, T_FILE, "IO", "to_io");
393
403
  GetOpenFile(io, fptr);
394
404
  rb_io_set_nonblock(fptr);
@@ -419,7 +429,7 @@ Coolio_Buffer_write_to(VALUE self, VALUE io)
419
429
  OpenFile *fptr;
420
430
  #endif
421
431
 
422
- Data_Get_Struct(self, struct buffer, buf);
432
+ TypedData_Get_Struct(self, struct buffer, &Coolio_Buffer_type, buf);
423
433
  io = rb_convert_type(io, T_FILE, "IO", "to_io");
424
434
  GetOpenFile(io, fptr);
425
435
  rb_io_set_nonblock(fptr);
@@ -438,11 +448,8 @@ Coolio_Buffer_write_to(VALUE self, VALUE io)
438
448
 
439
449
  /* Create a new buffer */
440
450
  static struct buffer *
441
- buffer_new(void)
451
+ buffer_init(struct buffer *buf)
442
452
  {
443
- struct buffer *buf;
444
-
445
- buf = (struct buffer *) xmalloc(sizeof(struct buffer));
446
453
  buf->head = buf->tail = buf->pool_head = buf->pool_tail = 0;
447
454
  buf->size = 0;
448
455
  buf->node_size = default_node_size;
@@ -68,4 +68,7 @@ void Init_coolio_timer_watcher();
68
68
  void Init_coolio_stat_watcher();
69
69
  void Init_coolio_utils();
70
70
 
71
+ struct Coolio_Loop *Coolio_Loop_ptr(VALUE loop);
72
+ struct Coolio_Watcher *Coolio_Watcher_ptr(VALUE watcher);
73
+
71
74
  #endif
@@ -82,7 +82,7 @@ static VALUE Coolio_IOWatcher_initialize(int argc, VALUE *argv, VALUE self)
82
82
  else
83
83
  rb_raise(rb_eArgError, "invalid event type: '%s' (must be 'r', 'w', or 'rw')", flags_str);
84
84
 
85
- Data_Get_Struct(self, struct Coolio_Watcher, watcher_data);
85
+ watcher_data = Coolio_Watcher_ptr(self);
86
86
  io = rb_convert_type(io, T_FILE, "IO", "to_io");
87
87
 
88
88
  watcher_data->dispatch_callback = Coolio_IOWatcher_dispatch_callback;
data/ext/cool.io/loop.c CHANGED
@@ -14,8 +14,7 @@ static VALUE mCoolio = Qnil;
14
14
  static VALUE cCoolio_Loop = Qnil;
15
15
 
16
16
  static VALUE Coolio_Loop_allocate(VALUE klass);
17
- static void Coolio_Loop_mark(struct Coolio_Loop *loop);
18
- static void Coolio_Loop_free(struct Coolio_Loop *loop);
17
+ static void Coolio_Loop_free(void *data);
19
18
 
20
19
  static VALUE Coolio_Loop_ev_loop_new(VALUE self, VALUE flags);
21
20
  static VALUE Coolio_Loop_run_once(int argc, VALUE *argv, VALUE self);
@@ -47,9 +46,26 @@ void Init_coolio_loop()
47
46
  rb_define_method(cCoolio_Loop, "run_nonblock", Coolio_Loop_run_nonblock, 0);
48
47
  }
49
48
 
49
+ static const rb_data_type_t Coolio_Loop_type = {
50
+ "Coolio::Loop",
51
+ {
52
+ NULL,
53
+ Coolio_Loop_free,
54
+ },
55
+ };
56
+
57
+ struct Coolio_Loop *Coolio_Loop_ptr(VALUE self)
58
+ {
59
+ struct Coolio_Loop *loop;
60
+
61
+ TypedData_Get_Struct(self, struct Coolio_Loop, &Coolio_Loop_type, loop);
62
+ return loop;
63
+ }
64
+
50
65
  static VALUE Coolio_Loop_allocate(VALUE klass)
51
66
  {
52
- struct Coolio_Loop *loop = (struct Coolio_Loop *)xmalloc(sizeof(struct Coolio_Loop));
67
+ struct Coolio_Loop *loop;
68
+ VALUE obj = TypedData_Make_Struct(klass, struct Coolio_Loop, &Coolio_Loop_type, loop);
53
69
 
54
70
  loop->ev_loop = 0;
55
71
  ev_init(&loop->timer, Coolio_Loop_timeout_callback);
@@ -58,15 +74,13 @@ static VALUE Coolio_Loop_allocate(VALUE klass)
58
74
  loop->eventbuf_size = DEFAULT_EVENTBUF_SIZE;
59
75
  loop->eventbuf = (struct Coolio_Event *)xmalloc(sizeof(struct Coolio_Event) * DEFAULT_EVENTBUF_SIZE);
60
76
 
61
- return Data_Wrap_Struct(klass, Coolio_Loop_mark, Coolio_Loop_free, loop);
77
+ return obj;
62
78
  }
63
79
 
64
- static void Coolio_Loop_mark(struct Coolio_Loop *loop)
80
+ static void Coolio_Loop_free(void *data)
65
81
  {
66
- }
82
+ struct Coolio_Loop *loop = data;
67
83
 
68
- static void Coolio_Loop_free(struct Coolio_Loop *loop)
69
- {
70
84
  if(!loop->ev_loop)
71
85
  return;
72
86
 
@@ -80,7 +94,7 @@ static void Coolio_Loop_free(struct Coolio_Loop *loop)
80
94
  static VALUE Coolio_Loop_ev_loop_new(VALUE self, VALUE flags)
81
95
  {
82
96
  struct Coolio_Loop *loop_data;
83
- Data_Get_Struct(self, struct Coolio_Loop, loop_data);
97
+ loop_data = Coolio_Loop_ptr(self);
84
98
 
85
99
  if(loop_data->ev_loop)
86
100
  rb_raise(rb_eRuntimeError, "loop already initialized");
@@ -98,8 +112,8 @@ void Coolio_Loop_process_event(VALUE watcher, int revents)
98
112
 
99
113
  /* The Global VM lock isn't held right now, but hopefully
100
114
  * we can still do this safely */
101
- Data_Get_Struct(watcher, struct Coolio_Watcher, watcher_data);
102
- Data_Get_Struct(watcher_data->loop, struct Coolio_Loop, loop_data);
115
+ watcher_data = Coolio_Watcher_ptr(watcher);
116
+ loop_data = Coolio_Loop_ptr(watcher_data->loop);
103
117
 
104
118
  /* Well, what better place to explain how this all works than
105
119
  * where the most wonky and convoluted stuff is going on!
@@ -184,7 +198,7 @@ static VALUE Coolio_Loop_run_once(int argc, VALUE *argv, VALUE self)
184
198
  rb_raise(rb_eArgError, "time interval must be positive");
185
199
  }
186
200
 
187
- Data_Get_Struct(self, struct Coolio_Loop, loop_data);
201
+ loop_data = Coolio_Loop_ptr(self);
188
202
 
189
203
  assert(loop_data->ev_loop && !loop_data->events_received);
190
204
 
@@ -222,7 +236,7 @@ static VALUE Coolio_Loop_run_nonblock(VALUE self)
222
236
  struct Coolio_Loop *loop_data;
223
237
  VALUE nevents;
224
238
 
225
- Data_Get_Struct(self, struct Coolio_Loop, loop_data);
239
+ loop_data = Coolio_Loop_ptr(self);
226
240
 
227
241
  assert(loop_data->ev_loop && !loop_data->events_received);
228
242
 
@@ -247,7 +261,7 @@ static void Coolio_Loop_dispatch_events(struct Coolio_Loop *loop_data)
247
261
  if(loop_data->eventbuf[i].watcher == Qnil)
248
262
  continue;
249
263
 
250
- Data_Get_Struct(loop_data->eventbuf[i].watcher, struct Coolio_Watcher, watcher_data);
264
+ watcher_data = Coolio_Watcher_ptr(loop_data->eventbuf[i].watcher);
251
265
  watcher_data->dispatch_callback(loop_data->eventbuf[i].watcher, loop_data->eventbuf[i].revents);
252
266
  }
253
267
  }
@@ -89,7 +89,7 @@ static VALUE Coolio_StatWatcher_initialize(int argc, VALUE *argv, VALUE self)
89
89
  path = rb_String(path);
90
90
  rb_iv_set(self, "@path", path);
91
91
 
92
- Data_Get_Struct(self, struct Coolio_Watcher, watcher_data);
92
+ watcher_data = Coolio_Watcher_ptr(self);
93
93
 
94
94
  watcher_data->dispatch_callback = Coolio_StatWatcher_dispatch_callback;
95
95
  ev_stat_init(
@@ -119,8 +119,8 @@ static VALUE Coolio_StatWatcher_attach(VALUE self, VALUE loop)
119
119
  if(!rb_obj_is_kind_of(loop, cCoolio_Loop))
120
120
  rb_raise(rb_eArgError, "expected loop to be an instance of Coolio::Loop, not %s", RSTRING_PTR(rb_inspect(loop)));
121
121
 
122
- Data_Get_Struct(loop, struct Coolio_Loop, loop_data);
123
- Data_Get_Struct(self, struct Coolio_Watcher, watcher_data);
122
+ loop_data = Coolio_Loop_ptr(loop);
123
+ watcher_data = Coolio_Watcher_ptr(self);
124
124
 
125
125
  if(watcher_data->loop != Qnil)
126
126
  Coolio_StatWatcher_detach(self);
@@ -206,7 +206,7 @@ static void Coolio_StatWatcher_libev_callback(struct ev_loop *ev_loop, struct ev
206
206
  static void Coolio_StatWatcher_dispatch_callback(VALUE self, int revents)
207
207
  {
208
208
  struct Coolio_Watcher *watcher_data;
209
- Data_Get_Struct(self, struct Coolio_Watcher, watcher_data);
209
+ watcher_data = Coolio_Watcher_ptr(self);
210
210
 
211
211
  VALUE previous_statdata = Coolio_StatInfo_build(&watcher_data->event_types.ev_stat.prev);
212
212
  VALUE current_statdata = Coolio_StatInfo_build(&watcher_data->event_types.ev_stat.attr);
@@ -68,7 +68,7 @@ static VALUE Coolio_TimerWatcher_initialize(int argc, VALUE *argv, VALUE self)
68
68
  rb_iv_set(self, "@interval", interval);
69
69
  rb_iv_set(self, "@repeating", repeating);
70
70
 
71
- Data_Get_Struct(self, struct Coolio_Watcher, watcher_data);
71
+ watcher_data = Coolio_Watcher_ptr(self);
72
72
 
73
73
  watcher_data->dispatch_callback = Coolio_TimerWatcher_dispatch_callback;
74
74
  ev_timer_init(
@@ -98,8 +98,8 @@ static VALUE Coolio_TimerWatcher_attach(VALUE self, VALUE loop)
98
98
  if(!rb_obj_is_kind_of(loop, cCoolio_Loop))
99
99
  rb_raise(rb_eArgError, "expected loop to be an instance of Coolio::Loop, not %s", RSTRING_PTR(rb_inspect(loop)));
100
100
 
101
- Data_Get_Struct(loop, struct Coolio_Loop, loop_data);
102
- Data_Get_Struct(self, struct Coolio_Watcher, watcher_data);
101
+ loop_data = Coolio_Loop_ptr(loop);
102
+ watcher_data = Coolio_Watcher_ptr(self);
103
103
 
104
104
  if(watcher_data->loop != Qnil)
105
105
  Coolio_TimerWatcher_detach(self);
@@ -180,12 +180,12 @@ static VALUE Coolio_TimerWatcher_reset(VALUE self)
180
180
  struct Coolio_Watcher *watcher_data;
181
181
  struct Coolio_Loop *loop_data;
182
182
 
183
- Data_Get_Struct(self, struct Coolio_Watcher, watcher_data);
183
+ watcher_data = Coolio_Watcher_ptr(self);
184
184
 
185
185
  if(watcher_data->loop == Qnil)
186
186
  rb_raise(rb_eRuntimeError, "not attached to a loop");
187
187
 
188
- Data_Get_Struct(watcher_data->loop, struct Coolio_Loop, loop_data);
188
+ loop_data = Coolio_Loop_ptr(watcher_data->loop);
189
189
 
190
190
  ev_timer_again(loop_data->ev_loop, &watcher_data->event_types.ev_timer);
191
191
 
@@ -13,8 +13,7 @@ static VALUE mCoolio = Qnil;
13
13
  static VALUE cCoolio_Watcher = Qnil;
14
14
 
15
15
  static VALUE Coolio_Watcher_allocate(VALUE klass);
16
- static void Coolio_Watcher_mark(struct Coolio_Watcher *watcher);
17
- static void Coolio_Watcher_free(struct Coolio_Watcher *watcher);
16
+ static void Coolio_Watcher_mark(void *data);
18
17
 
19
18
  static VALUE Coolio_Watcher_initialize(VALUE self);
20
19
  static VALUE Coolio_Watcher_attach(VALUE self, VALUE loop);
@@ -53,27 +52,41 @@ void Init_coolio_watcher()
53
52
  rb_define_method(cCoolio_Watcher, "enabled?", Coolio_Watcher_enabled, 0);
54
53
  }
55
54
 
55
+ static const rb_data_type_t Coolio_Watcher_type = {
56
+ "Coolio::Watcher",
57
+ {
58
+ Coolio_Watcher_mark,
59
+ RUBY_DEFAULT_FREE,
60
+ },
61
+ };
62
+
63
+ struct Coolio_Watcher *Coolio_Watcher_ptr(VALUE watcher)
64
+ {
65
+ struct Coolio_Watcher *watcher_data;
66
+
67
+ TypedData_Get_Struct(watcher, struct Coolio_Watcher, &Coolio_Watcher_type, watcher_data);
68
+ return watcher_data;
69
+ }
70
+
56
71
  static VALUE Coolio_Watcher_allocate(VALUE klass)
57
72
  {
58
- struct Coolio_Watcher *watcher_data = (struct Coolio_Watcher *)xmalloc(sizeof(struct Coolio_Watcher));
73
+ struct Coolio_Watcher *watcher_data;
74
+ VALUE watcher = TypedData_Make_Struct(klass, struct Coolio_Watcher, &Coolio_Watcher_type, watcher_data);
59
75
 
60
76
  watcher_data->loop = Qnil;
61
77
  watcher_data->enabled = 0;
62
78
 
63
- return Data_Wrap_Struct(klass, Coolio_Watcher_mark, Coolio_Watcher_free, watcher_data);
79
+ return watcher;
64
80
  }
65
81
 
66
- static void Coolio_Watcher_mark(struct Coolio_Watcher *watcher_data)
82
+ static void Coolio_Watcher_mark(void *data)
67
83
  {
84
+ struct Coolio_Watcher *watcher_data = data;
85
+
68
86
  if(watcher_data->loop != Qnil)
69
87
  rb_gc_mark(watcher_data->loop);
70
88
  }
71
89
 
72
- static void Coolio_Watcher_free(struct Coolio_Watcher *watcher_data)
73
- {
74
- xfree(watcher_data);
75
- }
76
-
77
90
  static VALUE Coolio_Watcher_initialize(VALUE self)
78
91
  {
79
92
  rb_raise(rb_eRuntimeError, "watcher base class should not be initialized directly");
@@ -91,7 +104,7 @@ static VALUE Coolio_Watcher_attach(VALUE self, VALUE loop)
91
104
  VALUE loop_watchers, active_watchers;
92
105
  struct Coolio_Watcher *watcher_data;
93
106
 
94
- Data_Get_Struct(self, struct Coolio_Watcher, watcher_data);
107
+ watcher_data = Coolio_Watcher_ptr(self);
95
108
  watcher_data->enabled = 1;
96
109
 
97
110
  loop_watchers = rb_iv_get(loop, "@watchers");
@@ -132,7 +145,7 @@ static VALUE Coolio_Watcher_detach(VALUE self)
132
145
  VALUE loop_watchers;
133
146
  int i;
134
147
 
135
- Data_Get_Struct(self, struct Coolio_Watcher, watcher_data);
148
+ watcher_data = Coolio_Watcher_ptr(self);
136
149
 
137
150
  if(watcher_data->loop == Qnil)
138
151
  rb_raise(rb_eRuntimeError, "not attached to a loop");
@@ -155,7 +168,7 @@ static VALUE Coolio_Watcher_detach(VALUE self)
155
168
 
156
169
  watcher_data->enabled = 0;
157
170
 
158
- Data_Get_Struct(watcher_data->loop, struct Coolio_Loop, loop_data);
171
+ loop_data = Coolio_Loop_ptr(watcher_data->loop);
159
172
 
160
173
  /* Iterate through the events in the loop's event buffer. If there
161
174
  * are any pending events from this watcher, mark them NULL. The
@@ -182,7 +195,7 @@ static VALUE Coolio_Watcher_detach(VALUE self)
182
195
  static VALUE Coolio_Watcher_enable(VALUE self)
183
196
  {
184
197
  struct Coolio_Watcher *watcher_data;
185
- Data_Get_Struct(self, struct Coolio_Watcher, watcher_data);
198
+ watcher_data = Coolio_Watcher_ptr(self);
186
199
 
187
200
  if(watcher_data->enabled)
188
201
  rb_raise(rb_eRuntimeError, "already enabled");
@@ -208,7 +221,7 @@ static VALUE Coolio_Watcher_enable(VALUE self)
208
221
  static VALUE Coolio_Watcher_disable(VALUE self)
209
222
  {
210
223
  struct Coolio_Watcher *watcher_data;
211
- Data_Get_Struct(self, struct Coolio_Watcher, watcher_data);
224
+ watcher_data = Coolio_Watcher_ptr(self);
212
225
 
213
226
  if(!watcher_data->enabled)
214
227
  rb_raise(rb_eRuntimeError, "already disabled");
@@ -234,7 +247,7 @@ static VALUE Coolio_Watcher_evloop(VALUE self)
234
247
  {
235
248
  struct Coolio_Watcher *watcher_data;
236
249
 
237
- Data_Get_Struct(self, struct Coolio_Watcher, watcher_data);
250
+ watcher_data = Coolio_Watcher_ptr(self);
238
251
  return watcher_data->loop;
239
252
  }
240
253
 
@@ -258,7 +271,7 @@ static VALUE Coolio_Watcher_attached(VALUE self)
258
271
  static VALUE Coolio_Watcher_enabled(VALUE self)
259
272
  {
260
273
  struct Coolio_Watcher *watcher_data;
261
- Data_Get_Struct(self, struct Coolio_Watcher, watcher_data);
274
+ watcher_data = Coolio_Watcher_ptr(self);
262
275
 
263
276
  return watcher_data->enabled ? Qtrue : Qfalse;
264
277
  }
@@ -14,8 +14,8 @@
14
14
  if(!rb_obj_is_kind_of(loop, cCoolio_Loop)) \
15
15
  rb_raise(rb_eArgError, "expected loop to be an instance of Coolio::Loop, not %s", RSTRING_PTR(rb_inspect(loop))); \
16
16
  \
17
- Data_Get_Struct(watcher, struct Coolio_Watcher, watcher_data); \
18
- Data_Get_Struct(loop, struct Coolio_Loop, loop_data); \
17
+ watcher_data = Coolio_Watcher_ptr(watcher); \
18
+ loop_data = Coolio_Loop_ptr(loop); \
19
19
  \
20
20
  if(watcher_data->loop != Qnil) \
21
21
  detach_func(watcher); \
@@ -28,12 +28,12 @@
28
28
  struct Coolio_Watcher *watcher_data; \
29
29
  struct Coolio_Loop *loop_data; \
30
30
  \
31
- Data_Get_Struct(watcher, struct Coolio_Watcher, watcher_data); \
31
+ watcher_data = Coolio_Watcher_ptr(watcher); \
32
32
  \
33
33
  if(watcher_data->loop == Qnil) \
34
34
  rb_raise(rb_eRuntimeError, "not attached to a loop"); \
35
35
  \
36
- Data_Get_Struct(watcher_data->loop, struct Coolio_Loop, loop_data); \
36
+ loop_data = Coolio_Loop_ptr(watcher_data->loop); \
37
37
  \
38
38
  ev_##watcher_type##_stop(loop_data->ev_loop, &watcher_data->event_types.ev_##watcher_type); \
39
39
  rb_call_super(0, 0)
@@ -42,14 +42,14 @@
42
42
  struct Coolio_Watcher *watcher_data; \
43
43
  struct Coolio_Loop *loop_data; \
44
44
  \
45
- Data_Get_Struct(watcher, struct Coolio_Watcher, watcher_data); \
45
+ watcher_data = Coolio_Watcher_ptr(watcher); \
46
46
  \
47
47
  if(watcher_data->loop == Qnil) \
48
48
  rb_raise(rb_eRuntimeError, "not attached to a loop"); \
49
49
  \
50
50
  rb_call_super(0, 0); \
51
51
  \
52
- Data_Get_Struct(watcher_data->loop, struct Coolio_Loop, loop_data); \
52
+ loop_data = Coolio_Loop_ptr(watcher_data->loop); \
53
53
  \
54
54
  ev_##watcher_type##_start(loop_data->ev_loop, &watcher_data->event_types.ev_##watcher_type)
55
55
 
@@ -57,14 +57,14 @@
57
57
  struct Coolio_Watcher *watcher_data; \
58
58
  struct Coolio_Loop *loop_data; \
59
59
  \
60
- Data_Get_Struct(watcher, struct Coolio_Watcher, watcher_data); \
60
+ watcher_data = Coolio_Watcher_ptr(watcher); \
61
61
  \
62
62
  if(watcher_data->loop == Qnil) \
63
63
  rb_raise(rb_eRuntimeError, "not attached to a loop"); \
64
64
  \
65
65
  rb_call_super(0, 0); \
66
66
  \
67
- Data_Get_Struct(watcher_data->loop, struct Coolio_Loop, loop_data); \
67
+ loop_data = Coolio_Loop_ptr(watcher_data->loop); \
68
68
  \
69
69
  ev_##watcher_type##_stop(loop_data->ev_loop, &watcher_data->event_types.ev_##watcher_type)
70
70
 
@@ -72,7 +72,7 @@ module Coolio
72
72
  raise RuntimeError, "no nameservers found" if nameservers.empty? # TODO just call resolve_failed, not raise [also handle Errno::ENOENT)]
73
73
  end
74
74
 
75
- @nameservers = nameservers
75
+ @nameservers = nameservers.dup
76
76
  @question = request_question hostname
77
77
 
78
78
  @socket = UDPSocket.new
@@ -1,5 +1,5 @@
1
1
  module Coolio
2
- VERSION = "1.9.0"
2
+ VERSION = "1.9.1"
3
3
 
4
4
  def self.version
5
5
  VERSION
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cool.io
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.0
4
+ version: 1.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tony Arcieri
8
8
  - Masahiro Nakagawa
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2024-10-02 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake-compiler
@@ -155,7 +154,6 @@ homepage: https://github.com/socketry/cool.io
155
154
  licenses:
156
155
  - MIT
157
156
  metadata: {}
158
- post_install_message:
159
157
  rdoc_options: []
160
158
  require_paths:
161
159
  - lib
@@ -170,8 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
168
  - !ruby/object:Gem::Version
171
169
  version: '0'
172
170
  requirements: []
173
- rubygems_version: 3.5.11
174
- signing_key:
171
+ rubygems_version: 4.0.0.dev
175
172
  specification_version: 4
176
173
  summary: A cool framework for doing high performance I/O in Ruby
177
174
  test_files: