em-udns 0.2.6 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/ext/em-udns.c CHANGED
@@ -7,7 +7,6 @@
7
7
 
8
8
 
9
9
  static VALUE mEm;
10
- static VALUE mEmDeferrable;
11
10
  static VALUE mUdns;
12
11
 
13
12
  static VALUE cResolver;
@@ -40,12 +39,11 @@ static VALUE symbol_dns_error_unknown;
40
39
  static VALUE symbol_dns_error_badquery;
41
40
  static VALUE symbol_dns_error_nomem;
42
41
  static VALUE symbol_dns_error_unknown;
43
- static VALUE symbol_failed;
44
- static VALUE symbol_succeeded;
45
42
 
46
43
  static ID method_cancel;
47
44
  static ID method_set_timer;
48
- static ID method_set_deferred_status;
45
+ static ID method_do_success;
46
+ static ID method_do_error;
49
47
 
50
48
 
51
49
  void Resolver_free(struct dns_ctx *dns_context)
@@ -207,7 +205,7 @@ static void* check_query(struct dns_ctx *dns_context, void *rr, void *data)
207
205
  error = symbol_dns_error_unknown;
208
206
  break;
209
207
  }
210
- rb_funcall(query, method_set_deferred_status, 2, symbol_failed, error);
208
+ rb_funcall(query, method_do_error, 1, error);
211
209
  return NULL;
212
210
  }
213
211
 
@@ -229,7 +227,7 @@ static void dns_result_A_cb(struct dns_ctx *dns_context, struct dns_rr_a4 *rr, v
229
227
  rb_ary_push(array, rb_str_new2((char *)dns_ntop(AF_INET, &(rr->dnsa4_addr[i].s_addr), ip, INET_ADDRSTRLEN)));
230
228
  free(rr);
231
229
 
232
- rb_funcall(query, method_set_deferred_status, 2, symbol_succeeded, array);
230
+ rb_funcall(query, method_do_success, 1, array);
233
231
  }
234
232
 
235
233
 
@@ -247,7 +245,7 @@ static void dns_result_AAAA_cb(struct dns_ctx *dns_context, struct dns_rr_a6 *rr
247
245
  rb_ary_push(array, rb_str_new2((char *)dns_ntop(AF_INET6, &(rr->dnsa6_addr[i].s6_addr), ip, INET6_ADDRSTRLEN)));
248
246
  free(rr);
249
247
 
250
- rb_funcall(query, method_set_deferred_status, 2, symbol_succeeded, array);
248
+ rb_funcall(query, method_do_success, 1, array);
251
249
  }
252
250
 
253
251
 
@@ -264,7 +262,7 @@ static void dns_result_PTR_cb(struct dns_ctx *dns_context, struct dns_rr_ptr *rr
264
262
  rb_ary_push(array, rb_str_new2(rr->dnsptr_ptr[i]));
265
263
  free(rr);
266
264
 
267
- rb_funcall(query, method_set_deferred_status, 2, symbol_succeeded, array);
265
+ rb_funcall(query, method_do_success, 1, array);
268
266
  }
269
267
 
270
268
 
@@ -286,7 +284,7 @@ static void dns_result_MX_cb(struct dns_ctx *dns_context, struct dns_rr_mx *rr,
286
284
  }
287
285
  free(rr);
288
286
 
289
- rb_funcall(query, method_set_deferred_status, 2, symbol_succeeded, array);
287
+ rb_funcall(query, method_do_success, 1, array);
290
288
  }
291
289
 
292
290
 
@@ -303,7 +301,7 @@ static void dns_result_TXT_cb(struct dns_ctx *dns_context, struct dns_rr_txt *rr
303
301
  rb_ary_push(array, rb_str_new(rr->dnstxt_txt[i].txt, rr->dnstxt_txt[i].len));
304
302
  free(rr);
305
303
 
306
- rb_funcall(query, method_set_deferred_status, 2, symbol_succeeded, array);
304
+ rb_funcall(query, method_do_success, 1, array);
307
305
  }
308
306
 
309
307
 
@@ -327,7 +325,7 @@ static void dns_result_SRV_cb(struct dns_ctx *dns_context, struct dns_rr_srv *rr
327
325
  }
328
326
  free(rr);
329
327
 
330
- rb_funcall(query, method_set_deferred_status, 2, symbol_succeeded, array);
328
+ rb_funcall(query, method_do_success, 1, array);
331
329
  }
332
330
 
333
331
 
@@ -359,7 +357,7 @@ static void dns_result_NAPTR_cb(struct dns_ctx *dns_context, struct dns_rr_naptr
359
357
  }
360
358
  free(rr);
361
359
 
362
- rb_funcall(query, method_set_deferred_status, 2, symbol_succeeded, array);
360
+ rb_funcall(query, method_do_success, 1, array);
363
361
  }
364
362
 
365
363
 
@@ -402,7 +400,7 @@ VALUE Resolver_submit_A(VALUE self, VALUE rb_domain)
402
400
  if (!dns_submit_a4(dns_context, domain, 0, dns_result_A_cb, (void *)data)) {
403
401
  error = get_dns_error(dns_context);
404
402
  xfree(data);
405
- rb_funcall(query, method_set_deferred_status, 2, symbol_failed, error);
403
+ rb_funcall(query, method_do_error, 1, error);
406
404
  }
407
405
  else {
408
406
  rb_hash_aset(rb_ivar_get(self, id_queries), query, Qtrue);
@@ -431,7 +429,7 @@ VALUE Resolver_submit_AAAA(VALUE self, VALUE rb_domain)
431
429
  if (!dns_submit_a6(dns_context, domain, 0, dns_result_AAAA_cb, (void *)data)) {
432
430
  error = get_dns_error(dns_context);
433
431
  xfree(data);
434
- rb_funcall(query, method_set_deferred_status, 2, symbol_failed, error);
432
+ rb_funcall(query, method_do_error, 1, error);
435
433
  }
436
434
  else {
437
435
  rb_hash_aset(rb_ivar_get(self, id_queries), query, Qtrue);
@@ -465,7 +463,7 @@ VALUE Resolver_submit_PTR(VALUE self, VALUE rb_ip)
465
463
  if (!dns_submit_a4ptr(dns_context, &addr, dns_result_PTR_cb, (void *)data)) {
466
464
  error = get_dns_error(dns_context);
467
465
  xfree(data);
468
- rb_funcall(query, method_set_deferred_status, 2, symbol_failed, error);
466
+ rb_funcall(query, method_do_error, 1, error);
469
467
  }
470
468
  else {
471
469
  rb_hash_aset(rb_ivar_get(self, id_queries), query, Qtrue);
@@ -479,7 +477,7 @@ VALUE Resolver_submit_PTR(VALUE self, VALUE rb_ip)
479
477
  if (!dns_submit_a6ptr(dns_context, &addr6, dns_result_PTR_cb, (void *)data)) {
480
478
  error = get_dns_error(dns_context);
481
479
  xfree(data);
482
- rb_funcall(query, method_set_deferred_status, 2, symbol_failed, error);
480
+ rb_funcall(query, method_do_error, 1, error);
483
481
  }
484
482
  else {
485
483
  rb_hash_aset(rb_ivar_get(self, id_queries), query, Qtrue);
@@ -488,7 +486,7 @@ VALUE Resolver_submit_PTR(VALUE self, VALUE rb_ip)
488
486
  /* Also an invalid IPv6 so the IP is invalid. */
489
487
  case 0:
490
488
  xfree(data);
491
- rb_funcall(query, method_set_deferred_status, 2, symbol_failed, symbol_dns_error_badquery);
489
+ rb_funcall(query, method_do_error, 1, symbol_dns_error_badquery);
492
490
  break;
493
491
  }
494
492
  break;
@@ -517,7 +515,7 @@ VALUE Resolver_submit_MX(VALUE self, VALUE rb_domain)
517
515
  if (!dns_submit_mx(dns_context, domain, 0, dns_result_MX_cb, (void *)data)) {
518
516
  error = get_dns_error(dns_context);
519
517
  xfree(data);
520
- rb_funcall(query, method_set_deferred_status, 2, symbol_failed, error);
518
+ rb_funcall(query, method_do_error, 1, error);
521
519
  }
522
520
  else {
523
521
  rb_hash_aset(rb_ivar_get(self, id_queries), query, Qtrue);
@@ -546,7 +544,7 @@ VALUE Resolver_submit_TXT(VALUE self, VALUE rb_domain)
546
544
  if (!dns_submit_txt(dns_context, domain, DNS_C_IN, 0, dns_result_TXT_cb, (void *)data)) {
547
545
  error = get_dns_error(dns_context);
548
546
  xfree(data);
549
- rb_funcall(query, method_set_deferred_status, 2, symbol_failed, error);
547
+ rb_funcall(query, method_do_error, 1, error);
550
548
  }
551
549
  else {
552
550
  rb_hash_aset(rb_ivar_get(self, id_queries), query, Qtrue);
@@ -588,7 +586,7 @@ VALUE Resolver_submit_SRV(int argc, VALUE *argv, VALUE self)
588
586
  if (!dns_submit_srv(dns_context, domain, service, protocol, 0, dns_result_SRV_cb, (void *)data)) {
589
587
  error = get_dns_error(dns_context);
590
588
  xfree(data);
591
- rb_funcall(query, method_set_deferred_status, 2, symbol_failed, error);
589
+ rb_funcall(query, method_do_error, 1, error);
592
590
  }
593
591
  else {
594
592
  rb_hash_aset(rb_ivar_get(self, id_queries), query, Qtrue);
@@ -617,7 +615,7 @@ VALUE Resolver_submit_NAPTR(VALUE self, VALUE rb_domain)
617
615
  if (!dns_submit_naptr(dns_context, domain, 0, dns_result_NAPTR_cb, (void *)data)) {
618
616
  error = get_dns_error(dns_context);
619
617
  xfree(data);
620
- rb_funcall(query, method_set_deferred_status, 2, symbol_failed, error);
618
+ rb_funcall(query, method_do_error, 1, error);
621
619
  }
622
620
  else {
623
621
  rb_hash_aset(rb_ivar_get(self, id_queries), query, Qtrue);
@@ -647,10 +645,8 @@ VALUE RR_NAPTR_replacement(VALUE self) { return rb_ivar_get(self, id_replacemen
647
645
  void Init_em_udns_ext()
648
646
  {
649
647
  mEm = rb_define_module("EventMachine");
650
- mEmDeferrable = rb_define_module_under(mEm, "Deferrable");
651
648
  mUdns = rb_define_module_under(mEm, "Udns");
652
-
653
- eUdnsError = rb_define_class_under(mUdns, "UdnsError", rb_eStandardError);
649
+ eUdnsError = rb_define_class_under(mUdns, "UdnsError", rb_eStandardError);
654
650
 
655
651
  cResolver = rb_define_class_under(mUdns, "Resolver", rb_cObject);
656
652
  rb_define_alloc_func(cResolver, Resolver_alloc);
@@ -669,7 +665,6 @@ void Init_em_udns_ext()
669
665
  rb_define_method(cResolver, "submit_NAPTR", Resolver_submit_NAPTR, 1);
670
666
 
671
667
  cQuery = rb_define_class_under(mUdns, "Query", rb_cObject);
672
- rb_include_module(cQuery, mEmDeferrable);
673
668
 
674
669
  cRR_MX = rb_define_class_under(mUdns, "RR_MX", rb_cObject);
675
670
  rb_define_method(cRR_MX, "domain", RR_MX_domain, 0);
@@ -710,10 +705,9 @@ void Init_em_udns_ext()
710
705
  symbol_dns_error_badquery = ID2SYM(rb_intern("dns_error_badquery"));
711
706
  symbol_dns_error_nomem = ID2SYM(rb_intern("dns_error_nomem"));
712
707
  symbol_dns_error_unknown = ID2SYM(rb_intern("dns_error_unknown"));
713
- symbol_failed = ID2SYM(rb_intern("failed"));
714
- symbol_succeeded = ID2SYM(rb_intern("succeeded"));
715
708
 
716
709
  method_cancel = rb_intern("cancel");
717
710
  method_set_timer = rb_intern("set_timer");
718
- method_set_deferred_status = rb_intern("set_deferred_status");
711
+ method_do_success = rb_intern("do_success");
712
+ method_do_error = rb_intern("do_error");
719
713
  }
@@ -0,0 +1,24 @@
1
+ module EventMachine::Udns
2
+
3
+ class Query
4
+ def callback &block
5
+ @on_success_block = block
6
+ end
7
+
8
+ def errback &block
9
+ @on_error_block = block
10
+ end
11
+
12
+
13
+ private
14
+
15
+ def do_success result
16
+ @on_success_block && @on_success_block.call(result)
17
+ end
18
+
19
+ def do_error error
20
+ @on_error_block && @on_error_block.call(error)
21
+ end
22
+ end
23
+
24
+ end
@@ -7,12 +7,28 @@ module EventMachine::Udns
7
7
  dns_open
8
8
  end
9
9
 
10
+ def callback &block
11
+ @on_success_block = block
12
+ end
13
+
14
+ def errback &block
15
+ @on_error_block = block
16
+ end
17
+
18
+
19
+ private
20
+
10
21
  def set_timer(timeout)
11
- @timer = EM::Timer.new(timeout) do
12
- timeouts
13
- end
22
+ @timer = EM::Timer.new(timeout) { timeouts }
23
+ end
24
+
25
+ def do_success result
26
+ @on_success_block && @on_success_block.call(result)
27
+ end
28
+
29
+ def do_error error
30
+ @on_error_block && @on_error_block.call(error)
14
31
  end
15
- private :set_timer
16
32
  end
17
33
 
18
34
  end
@@ -1,5 +1,5 @@
1
1
  module EventMachine
2
2
  module Udns
3
- VERSION = "0.2.6"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
data/lib/em-udns.rb CHANGED
@@ -3,6 +3,7 @@ require "eventmachine"
3
3
  require "em-udns/em_udns_ext"
4
4
  require "em-udns/version"
5
5
  require "em-udns/resolver"
6
+ require "em-udns/query"
6
7
 
7
8
 
8
9
  module EventMachine::Udns
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 2
8
- - 6
9
- version: 0.2.6
7
+ - 3
8
+ - 0
9
+ version: 0.3.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - "I\xC3\xB1aki Baz Castillo"
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-08-20 00:00:00 +02:00
17
+ date: 2011-10-29 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -42,6 +42,7 @@ files:
42
42
  - lib/em-udns.rb
43
43
  - lib/em-udns/version.rb
44
44
  - lib/em-udns/resolver.rb
45
+ - lib/em-udns/query.rb
45
46
  - ext/em-udns.c
46
47
  - ext/em-udns.h
47
48
  - ext/extconf.rb