eventmachine 1.0.0.rc.4-java → 1.0.1-java

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,12 @@
1
+ script: rake compile test
2
+ language: ruby
3
+ rvm:
4
+ - 1.8.7
5
+ - 1.9.3
6
+ - rbx-18mode
7
+ - rbx-19mode
8
+ - jruby
9
+ matrix:
10
+ allow_failures:
11
+ - rvm: rbx-18mode
12
+ - rvm: rbx-19mode
@@ -0,0 +1,7 @@
1
+ # Changelog
2
+
3
+ ## 1.0.1 (February 27, 2013)
4
+ * use rb_wait_for_single_fd() on ruby 2.0 to fix rb_thread_select() deprecation
5
+ * fix epoll/kqueue mode in ruby 2.0 by removing calls to rb_enable_interrupt() [#248, #389]
6
+ * fix memory leak when verifying ssl cerificates [#403]
7
+ * fix initial connection delay [#393, #374]
data/Gemfile CHANGED
@@ -1,3 +1,2 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
  gemspec
3
-
@@ -13,9 +13,9 @@ Gem::Specification.new do |s|
13
13
  s.files = `git ls-files`.split("\n")
14
14
  s.extensions = ["ext/extconf.rb", "ext/fastfilereader/extconf.rb"]
15
15
 
16
- s.add_development_dependency 'rake-compiler', '~> 0.8.1'
17
- s.add_development_dependency 'yard', ">= 0.7.2"
18
- #s.add_development_dependency 'bluecloth'
16
+ s.add_development_dependency 'rake-compiler', '~> 0.8.3'
17
+ s.add_development_dependency 'yard', ">= 0.8.5.2"
18
+ s.add_development_dependency 'bluecloth' unless RUBY_PLATFORM =~ /java/
19
19
 
20
20
  s.summary = 'Ruby/EventMachine library'
21
21
  s.description = "EventMachine implements a fast, single-threaded engine for arbitrary network
data/ext/ed.cpp CHANGED
@@ -460,6 +460,8 @@ ConnectionDescriptor::SetConnectPending
460
460
  void ConnectionDescriptor::SetConnectPending(bool f)
461
461
  {
462
462
  bConnectPending = f;
463
+ if (f == false && NextHeartbeat)
464
+ MyEventMachine->ClearHeartbeat(NextHeartbeat, this);
463
465
  _UpdateEvents();
464
466
  }
465
467
 
data/ext/em.cpp CHANGED
@@ -524,12 +524,17 @@ bool EventMachine_t::_RunEpollOnce()
524
524
 
525
525
  #ifdef BUILD_FOR_RUBY
526
526
  int ret = 0;
527
+
528
+ #ifdef HAVE_RB_WAIT_FOR_SINGLE_FD
529
+ if ((ret = rb_wait_for_single_fd(epfd, RB_WAITFD_IN|RB_WAITFD_PRI, &tv)) < 1) {
530
+ #else
527
531
  fd_set fdreads;
528
532
 
529
533
  FD_ZERO(&fdreads);
530
534
  FD_SET(epfd, &fdreads);
531
535
 
532
536
  if ((ret = rb_thread_select(epfd + 1, &fdreads, NULL, NULL, &tv)) < 1) {
537
+ #endif
533
538
  if (ret == -1) {
534
539
  assert(errno != EINVAL);
535
540
  assert(errno != EBADF);
@@ -598,12 +603,17 @@ bool EventMachine_t::_RunKqueueOnce()
598
603
 
599
604
  #ifdef BUILD_FOR_RUBY
600
605
  int ret = 0;
606
+
607
+ #ifdef HAVE_RB_WAIT_FOR_SINGLE_FD
608
+ if ((ret = rb_wait_for_single_fd(kqfd, RB_WAITFD_IN|RB_WAITFD_PRI, &tv)) < 1) {
609
+ #else
601
610
  fd_set fdreads;
602
611
 
603
612
  FD_ZERO(&fdreads);
604
613
  FD_SET(kqfd, &fdreads);
605
614
 
606
615
  if ((ret = rb_thread_select(kqfd + 1, &fdreads, NULL, NULL, &tv)) < 1) {
616
+ #endif
607
617
  if (ret == -1) {
608
618
  assert(errno != EINVAL);
609
619
  assert(errno != EBADF);
data/ext/em.h CHANGED
@@ -24,9 +24,13 @@ See the file COPYING for complete licensing information.
24
24
  #include <ruby.h>
25
25
  #define EmSelect rb_thread_select
26
26
 
27
+ #ifdef HAVE_RB_WAIT_FOR_SINGLE_FD
28
+ #include <ruby/io.h>
29
+ #endif
30
+
27
31
  #if defined(HAVE_RBTRAP)
28
32
  #include <rubysig.h>
29
- #elif defined(HAVE_RB_THREAD_CHECK_INTS)
33
+ #elif defined(HAVE_RB_ENABLE_INTERRUPT)
30
34
  extern "C" {
31
35
  void rb_enable_interrupt(void);
32
36
  void rb_disable_interrupt(void);
@@ -71,13 +71,14 @@ add_define "HAVE_INOTIFY" if inotify = have_func('inotify_init', 'sys/inotify.h'
71
71
  add_define "HAVE_OLD_INOTIFY" if !inotify && have_macro('__NR_inotify_init', 'sys/syscall.h')
72
72
  add_define 'HAVE_WRITEV' if have_func('writev', 'sys/uio.h')
73
73
 
74
- have_func('rb_thread_check_ints')
74
+ have_func('rb_wait_for_single_fd')
75
+ have_func('rb_enable_interrupt')
75
76
  have_func('rb_time_new')
76
77
 
77
78
  # Minor platform details between *nix and Windows:
78
79
 
79
80
  if RUBY_PLATFORM =~ /(mswin|mingw|bccwin)/
80
- GNU_CHAIN = ENV['CROSS_COMPILING'] or $1 == 'mingw'
81
+ GNU_CHAIN = ENV['CROSS_COMPILING'] || $1 == 'mingw'
81
82
  OS_WIN32 = true
82
83
  add_define "OS_WIN32"
83
84
  else
@@ -17,7 +17,7 @@ add_define 'BUILD_FOR_RUBY'
17
17
  # Minor platform details between *nix and Windows:
18
18
 
19
19
  if RUBY_PLATFORM =~ /(mswin|mingw|bccwin)/
20
- GNU_CHAIN = ENV['CROSS_COMPILING'] or $1 == 'mingw'
20
+ GNU_CHAIN = ENV['CROSS_COMPILING'] || $1 == 'mingw'
21
21
  OS_WIN32 = true
22
22
  add_define "OS_WIN32"
23
23
  else
@@ -233,7 +233,7 @@ static VALUE t_add_oneshot_timer (VALUE self, VALUE interval)
233
233
  {
234
234
  const unsigned long f = evma_install_oneshot_timer (FIX2INT (interval));
235
235
  if (!f)
236
- rb_raise (rb_eRuntimeError, "ran out of timers; use #set_max_timers to increase limit");
236
+ rb_raise (rb_eRuntimeError, "%s", "ran out of timers; use #set_max_timers to increase limit");
237
237
  return ULONG2NUM (f);
238
238
  }
239
239
 
@@ -246,7 +246,7 @@ static VALUE t_start_server (VALUE self, VALUE server, VALUE port)
246
246
  {
247
247
  const unsigned long f = evma_create_tcp_server (StringValuePtr(server), FIX2INT(port));
248
248
  if (!f)
249
- rb_raise (rb_eRuntimeError, "no acceptor (port is in use or requires root privileges)");
249
+ rb_raise (rb_eRuntimeError, "%s", "no acceptor (port is in use or requires root privileges)");
250
250
  return ULONG2NUM (f);
251
251
  }
252
252
 
@@ -269,7 +269,7 @@ static VALUE t_start_unix_server (VALUE self, VALUE filename)
269
269
  {
270
270
  const unsigned long f = evma_create_unix_domain_server (StringValuePtr(filename));
271
271
  if (!f)
272
- rb_raise (rb_eRuntimeError, "no unix-domain acceptor");
272
+ rb_raise (rb_eRuntimeError, "%s", "no unix-domain acceptor");
273
273
  return ULONG2NUM (f);
274
274
  }
275
275
 
@@ -332,7 +332,7 @@ static VALUE t_get_peer_cert (VALUE self, VALUE signature)
332
332
  BIO_get_mem_ptr(out, &buf);
333
333
  ret = rb_str_new(buf->data, buf->length);
334
334
  X509_free(cert);
335
- BUF_MEM_free(buf);
335
+ BIO_free(out);
336
336
  }
337
337
  #endif
338
338
 
@@ -504,7 +504,7 @@ static VALUE t_connect_server (VALUE self, VALUE server, VALUE port)
504
504
  try {
505
505
  const unsigned long f = evma_connect_to_server (NULL, 0, StringValuePtr(server), NUM2INT(port));
506
506
  if (!f)
507
- rb_raise (EM_eConnectionError, "no connection");
507
+ rb_raise (EM_eConnectionError, "%s", "no connection");
508
508
  return ULONG2NUM (f);
509
509
  } catch (std::runtime_error e) {
510
510
  rb_raise (EM_eConnectionError, "%s", e.what());
@@ -525,7 +525,7 @@ static VALUE t_bind_connect_server (VALUE self, VALUE bind_addr, VALUE bind_port
525
525
  try {
526
526
  const unsigned long f = evma_connect_to_server (StringValuePtr(bind_addr), NUM2INT(bind_port), StringValuePtr(server), NUM2INT(port));
527
527
  if (!f)
528
- rb_raise (EM_eConnectionError, "no connection");
528
+ rb_raise (EM_eConnectionError, "%s", "no connection");
529
529
  return ULONG2NUM (f);
530
530
  } catch (std::runtime_error e) {
531
531
  rb_raise (EM_eConnectionError, "%s", e.what());
@@ -541,7 +541,7 @@ static VALUE t_connect_unix_server (VALUE self, VALUE serversocket)
541
541
  {
542
542
  const unsigned long f = evma_connect_to_unix_server (StringValuePtr(serversocket));
543
543
  if (!f)
544
- rb_raise (rb_eRuntimeError, "no connection");
544
+ rb_raise (rb_eRuntimeError, "%s", "no connection");
545
545
  return ULONG2NUM (f);
546
546
  }
547
547
 
@@ -553,7 +553,7 @@ static VALUE t_attach_fd (VALUE self, VALUE file_descriptor, VALUE watch_mode)
553
553
  {
554
554
  const unsigned long f = evma_attach_fd (NUM2INT(file_descriptor), watch_mode == Qtrue);
555
555
  if (!f)
556
- rb_raise (rb_eRuntimeError, "no connection");
556
+ rb_raise (rb_eRuntimeError, "%s", "no connection");
557
557
  return ULONG2NUM (f);
558
558
  }
559
559
 
@@ -703,7 +703,7 @@ static VALUE t_open_udp_socket (VALUE self, VALUE server, VALUE port)
703
703
  {
704
704
  const unsigned long f = evma_open_datagram_socket (StringValuePtr(server), FIX2INT(port));
705
705
  if (!f)
706
- rb_raise (rb_eRuntimeError, "no datagram socket");
706
+ rb_raise (rb_eRuntimeError, "%s", "no datagram socket");
707
707
  return ULONG2NUM (f);
708
708
  }
709
709
 
@@ -805,7 +805,7 @@ static VALUE t_invoke_popen (VALUE self, VALUE cmd)
805
805
  int len = RARRAY (cmd)->len;
806
806
  #endif
807
807
  if (len >= 2048)
808
- rb_raise (rb_eRuntimeError, "too many arguments to popen");
808
+ rb_raise (rb_eRuntimeError, "%s", "too many arguments to popen");
809
809
  char *strings [2048];
810
810
  for (int i=0; i < len; i++) {
811
811
  VALUE ix = INT2FIX (i);
@@ -834,7 +834,7 @@ static VALUE t_read_keyboard (VALUE self)
834
834
  {
835
835
  const unsigned long f = evma_open_keyboard();
836
836
  if (!f)
837
- rb_raise (rb_eRuntimeError, "no keyboard reader");
837
+ rb_raise (rb_eRuntimeError, "%s", "no keyboard reader");
838
838
  return ULONG2NUM (f);
839
839
  }
840
840
 
@@ -921,7 +921,7 @@ t__epoll_set
921
921
  static VALUE t__epoll_set (VALUE self, VALUE val)
922
922
  {
923
923
  if (t__epoll_p(self) == Qfalse)
924
- rb_raise (EM_eUnsupported, "epoll is not supported on this platform");
924
+ rb_raise (EM_eUnsupported, "%s", "epoll is not supported on this platform");
925
925
 
926
926
  evma_set_epoll (val == Qtrue ? 1 : 0);
927
927
  return val;
@@ -958,7 +958,7 @@ t__kqueue_set
958
958
  static VALUE t__kqueue_set (VALUE self, VALUE val)
959
959
  {
960
960
  if (t__kqueue_p(self) == Qfalse)
961
- rb_raise (EM_eUnsupported, "kqueue is not supported on this platform");
961
+ rb_raise (EM_eUnsupported, "%s", "kqueue is not supported on this platform");
962
962
 
963
963
  evma_set_kqueue (val == Qtrue ? 1 : 0);
964
964
  return val;
@@ -996,7 +996,7 @@ static VALUE t_send_file_data (VALUE self, VALUE signature, VALUE filename)
996
996
 
997
997
  int b = evma_send_file_data_to_connection (NUM2ULONG (signature), StringValuePtr(filename));
998
998
  if (b == -1)
999
- rb_raise(rb_eRuntimeError, "File too large. send_file_data() supports files under 32k.");
999
+ rb_raise(rb_eRuntimeError, "%s", "File too large. send_file_data() supports files under 32k.");
1000
1000
  if (b > 0) {
1001
1001
  char *err = strerror (b);
1002
1002
  char buf[1024];
@@ -459,7 +459,7 @@ extern "C" int ssl_verify_wrapper(int preverify_ok, X509_STORE_CTX *ctx)
459
459
 
460
460
  ConnectionDescriptor *cd = dynamic_cast <ConnectionDescriptor*> (Bindable_t::GetObject(binding));
461
461
  result = (cd->VerifySslPeer(buf->data) == true ? 1 : 0);
462
- BUF_MEM_free(buf);
462
+ BIO_free(out);
463
463
 
464
464
  return result;
465
465
  }
@@ -271,7 +271,7 @@ module EventMachine
271
271
  psw = psw.call
272
272
  end
273
273
  #str = Base64::encode64("\0#{@args[:auth][:username]}\0#{psw}").chomp
274
- str = ["\0#{@args[:auth][:username]}\0#{psw}"].pack("m").chomp
274
+ str = ["\0#{@args[:auth][:username]}\0#{psw}"].pack("m").gsub(/\n/, '')
275
275
  send_data "AUTH PLAIN #{str}\r\n"
276
276
  @responder = :receive_auth_response
277
277
  else
@@ -1,3 +1,3 @@
1
1
  module EventMachine
2
- VERSION = "1.0.0.rc.4"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -1,8 +1,8 @@
1
- if RUBY_PLATFORM =~ /java/
1
+ if defined?(EventMachine.library_type) and EventMachine.library_type == :pure_ruby
2
+ # assume 'em/pure_ruby' was loaded already
3
+ elsif RUBY_PLATFORM =~ /java/
2
4
  require 'java'
3
5
  require 'jeventmachine'
4
- elsif defined?(EventMachine.library_type) and EventMachine.library_type == :pure_ruby
5
- # assume 'em/pure_ruby' was loaded already
6
6
  else
7
7
  begin
8
8
  require 'rubyeventmachine'
@@ -1,4 +1,6 @@
1
- require 'rake/gempackagetask'
1
+ require 'rubygems'
2
+ require 'rubygems/package_task'
3
+
2
4
  begin
3
5
  require 'rake/extensiontask'
4
6
  require 'rake/javaextensiontask'
@@ -12,7 +14,7 @@ rake-compiler gem seems to be missing. Please install it with
12
14
  MSG
13
15
  end
14
16
 
15
- Rake::GemPackageTask.new(GEMSPEC) do |pkg|
17
+ Gem::PackageTask.new(GEMSPEC) do |pkg|
16
18
  end
17
19
 
18
20
  if RUBY_PLATFORM =~ /java/
@@ -84,15 +86,3 @@ def gem_cmd(action, name, *args)
84
86
  end
85
87
 
86
88
  Rake::Task[:clean].enhance [:clobber_package]
87
-
88
- namespace :gem do
89
- desc 'Install gem (and sudo if required)'
90
- task :install => :package do
91
- gem_cmd(:install, "pkg/#{GEMSPEC.name}-#{GEMSPEC.version}.gem")
92
- end
93
-
94
- desc 'Uninstall gem (and sudo if required)'
95
- task :uninstall do
96
- gem_cmd(:uninstall, "#{GEMSPEC.name}", "-v=#{GEMSPEC.version}")
97
- end
98
- end
@@ -19,7 +19,7 @@ class TestSetSockOpt < Test::Unit::TestCase
19
19
  EM.run do
20
20
  EM.connect 'google.com', 80, Module.new {
21
21
  define_method :post_init do
22
- val = set_sock_opt Socket::SOL_SOCKET, Socket::SO_DEBUG, true
22
+ val = set_sock_opt Socket::SOL_SOCKET, Socket::SO_BROADCAST, true
23
23
  test.assert_equal 0, val
24
24
  EM.stop
25
25
  end
metadata CHANGED
@@ -1,40 +1,49 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: eventmachine
3
- version: !ruby/object:Gem::Version
4
- prerelease: 6
5
- version: 1.0.0.rc.4
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.0.1
6
6
  platform: java
7
- authors:
8
- - Francis Cianfrocca
9
- - Aman Gupta
10
- autorequire:
7
+ authors:
8
+ - Francis Cianfrocca
9
+ - Aman Gupta
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
-
14
- date: 2012-06-29 00:00:00 Z
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: rake-compiler
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
20
- none: false
21
- requirements:
22
- - - ~>
23
- - !ruby/object:Gem::Version
24
- version: 0.8.1
25
- type: :development
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: yard
29
- prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
31
- none: false
32
- requirements:
33
- - - ">="
34
- - !ruby/object:Gem::Version
35
- version: 0.7.2
36
- type: :development
37
- version_requirements: *id002
13
+ date: 2013-02-28 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rake-compiler
17
+ version_requirements: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: 0.8.3
22
+ none: false
23
+ requirement: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 0.8.3
28
+ none: false
29
+ prerelease: false
30
+ type: :development
31
+ - !ruby/object:Gem::Dependency
32
+ name: yard
33
+ version_requirements: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: 0.8.5.2
38
+ none: false
39
+ requirement: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.8.5.2
44
+ none: false
45
+ prerelease: false
46
+ type: :development
38
47
  description: |-
39
48
  EventMachine implements a fast, single-threaded engine for arbitrary network
40
49
  communications. It's extremely easy to use in Ruby. EventMachine wraps all
@@ -46,224 +55,229 @@ description: |-
46
55
  are provided with the package, primarily to serve as examples. The real goal
47
56
  of EventMachine is to enable programs to easily interface with other programs
48
57
  using TCP/IP, especially if custom protocols are required.
49
- email:
50
- - garbagecat10@gmail.com
51
- - aman@tmm1.net
58
+ email:
59
+ - garbagecat10@gmail.com
60
+ - aman@tmm1.net
52
61
  executables: []
53
-
54
62
  extensions: []
55
-
56
- extra_rdoc_files:
57
- - README.md
58
- - docs/DocumentationGuidesIndex.md
59
- - docs/GettingStarted.md
60
- - docs/old/ChangeLog
61
- - docs/old/DEFERRABLES
62
- - docs/old/EPOLL
63
- - docs/old/INSTALL
64
- - docs/old/KEYBOARD
65
- - docs/old/LEGAL
66
- - docs/old/LIGHTWEIGHT_CONCURRENCY
67
- - docs/old/PURE_RUBY
68
- - docs/old/RELEASE_NOTES
69
- - docs/old/SMTP
70
- - docs/old/SPAWNED_PROCESSES
71
- - docs/old/TODO
72
- files:
73
- - .gitignore
74
- - .yardopts
75
- - GNU
76
- - Gemfile
77
- - LICENSE
78
- - README.md
79
- - Rakefile
80
- - docs/DocumentationGuidesIndex.md
81
- - docs/GettingStarted.md
82
- - docs/old/ChangeLog
83
- - docs/old/DEFERRABLES
84
- - docs/old/EPOLL
85
- - docs/old/INSTALL
86
- - docs/old/KEYBOARD
87
- - docs/old/LEGAL
88
- - docs/old/LIGHTWEIGHT_CONCURRENCY
89
- - docs/old/PURE_RUBY
90
- - docs/old/RELEASE_NOTES
91
- - docs/old/SMTP
92
- - docs/old/SPAWNED_PROCESSES
93
- - docs/old/TODO
94
- - eventmachine.gemspec
95
- - examples/guides/getting_started/01_eventmachine_echo_server.rb
96
- - examples/guides/getting_started/02_eventmachine_echo_server_that_recognizes_exit_command.rb
97
- - examples/guides/getting_started/03_simple_chat_server.rb
98
- - examples/guides/getting_started/04_simple_chat_server_step_one.rb
99
- - examples/guides/getting_started/05_simple_chat_server_step_two.rb
100
- - examples/guides/getting_started/06_simple_chat_server_step_three.rb
101
- - examples/guides/getting_started/07_simple_chat_server_step_four.rb
102
- - examples/guides/getting_started/08_simple_chat_server_step_five.rb
103
- - examples/old/ex_channel.rb
104
- - examples/old/ex_queue.rb
105
- - examples/old/ex_tick_loop_array.rb
106
- - examples/old/ex_tick_loop_counter.rb
107
- - examples/old/helper.rb
108
- - ext/binder.cpp
109
- - ext/binder.h
110
- - ext/cmain.cpp
111
- - ext/ed.cpp
112
- - ext/ed.h
113
- - ext/em.cpp
114
- - ext/em.h
115
- - ext/eventmachine.h
116
- - ext/extconf.rb
117
- - ext/fastfilereader/extconf.rb
118
- - ext/fastfilereader/mapper.cpp
119
- - ext/fastfilereader/mapper.h
120
- - ext/fastfilereader/rubymain.cpp
121
- - ext/kb.cpp
122
- - ext/page.cpp
123
- - ext/page.h
124
- - ext/pipe.cpp
125
- - ext/project.h
126
- - ext/rubymain.cpp
127
- - ext/ssl.cpp
128
- - ext/ssl.h
129
- - java/.classpath
130
- - java/.project
131
- - java/src/com/rubyeventmachine/EmReactor.java
132
- - java/src/com/rubyeventmachine/EmReactorException.java
133
- - java/src/com/rubyeventmachine/EventableChannel.java
134
- - java/src/com/rubyeventmachine/EventableDatagramChannel.java
135
- - java/src/com/rubyeventmachine/EventableSocketChannel.java
136
- - lib/em/buftok.rb
137
- - lib/em/callback.rb
138
- - lib/em/channel.rb
139
- - lib/em/completion.rb
140
- - lib/em/connection.rb
141
- - lib/em/deferrable.rb
142
- - lib/em/deferrable/pool.rb
143
- - lib/em/file_watch.rb
144
- - lib/em/future.rb
145
- - lib/em/iterator.rb
146
- - lib/em/messages.rb
147
- - lib/em/pool.rb
148
- - lib/em/process_watch.rb
149
- - lib/em/processes.rb
150
- - lib/em/protocols.rb
151
- - lib/em/protocols/header_and_content.rb
152
- - lib/em/protocols/httpclient.rb
153
- - lib/em/protocols/httpclient2.rb
154
- - lib/em/protocols/line_and_text.rb
155
- - lib/em/protocols/line_protocol.rb
156
- - lib/em/protocols/linetext2.rb
157
- - lib/em/protocols/memcache.rb
158
- - lib/em/protocols/object_protocol.rb
159
- - lib/em/protocols/postgres3.rb
160
- - lib/em/protocols/saslauth.rb
161
- - lib/em/protocols/smtpclient.rb
162
- - lib/em/protocols/smtpserver.rb
163
- - lib/em/protocols/socks4.rb
164
- - lib/em/protocols/stomp.rb
165
- - lib/em/protocols/tcptest.rb
166
- - lib/em/pure_ruby.rb
167
- - lib/em/queue.rb
168
- - lib/em/resolver.rb
169
- - lib/em/spawnable.rb
170
- - lib/em/streamer.rb
171
- - lib/em/threaded_resource.rb
172
- - lib/em/tick_loop.rb
173
- - lib/em/timers.rb
174
- - lib/em/version.rb
175
- - lib/eventmachine.rb
176
- - lib/jeventmachine.rb
177
- - rakelib/cpp.rake_example
178
- - rakelib/package.rake
179
- - rakelib/test.rake
180
- - tests/client.crt
181
- - tests/client.key
182
- - tests/em_test_helper.rb
183
- - tests/test_attach.rb
184
- - tests/test_basic.rb
185
- - tests/test_channel.rb
186
- - tests/test_completion.rb
187
- - tests/test_connection_count.rb
188
- - tests/test_defer.rb
189
- - tests/test_deferrable.rb
190
- - tests/test_epoll.rb
191
- - tests/test_error_handler.rb
192
- - tests/test_exc.rb
193
- - tests/test_file_watch.rb
194
- - tests/test_futures.rb
195
- - tests/test_get_sock_opt.rb
196
- - tests/test_handler_check.rb
197
- - tests/test_hc.rb
198
- - tests/test_httpclient.rb
199
- - tests/test_httpclient2.rb
200
- - tests/test_idle_connection.rb
201
- - tests/test_inactivity_timeout.rb
202
- - tests/test_kb.rb
203
- - tests/test_ltp.rb
204
- - tests/test_ltp2.rb
205
- - tests/test_next_tick.rb
206
- - tests/test_object_protocol.rb
207
- - tests/test_pause.rb
208
- - tests/test_pending_connect_timeout.rb
209
- - tests/test_pool.rb
210
- - tests/test_process_watch.rb
211
- - tests/test_processes.rb
212
- - tests/test_proxy_connection.rb
213
- - tests/test_pure.rb
214
- - tests/test_queue.rb
215
- - tests/test_resolver.rb
216
- - tests/test_running.rb
217
- - tests/test_sasl.rb
218
- - tests/test_send_file.rb
219
- - tests/test_servers.rb
220
- - tests/test_set_sock_opt.rb
221
- - tests/test_shutdown_hooks.rb
222
- - tests/test_smtpclient.rb
223
- - tests/test_smtpserver.rb
224
- - tests/test_spawn.rb
225
- - tests/test_ssl_args.rb
226
- - tests/test_ssl_methods.rb
227
- - tests/test_ssl_verify.rb
228
- - tests/test_threaded_resource.rb
229
- - tests/test_tick_loop.rb
230
- - tests/test_timers.rb
231
- - tests/test_ud.rb
232
- - tests/test_unbind_reason.rb
233
- - lib/rubyeventmachine.jar
63
+ extra_rdoc_files:
64
+ - README.md
65
+ - docs/DocumentationGuidesIndex.md
66
+ - docs/GettingStarted.md
67
+ - docs/old/ChangeLog
68
+ - docs/old/DEFERRABLES
69
+ - docs/old/EPOLL
70
+ - docs/old/INSTALL
71
+ - docs/old/KEYBOARD
72
+ - docs/old/LEGAL
73
+ - docs/old/LIGHTWEIGHT_CONCURRENCY
74
+ - docs/old/PURE_RUBY
75
+ - docs/old/RELEASE_NOTES
76
+ - docs/old/SMTP
77
+ - docs/old/SPAWNED_PROCESSES
78
+ - docs/old/TODO
79
+ files:
80
+ - ".gitignore"
81
+ - ".travis.yml"
82
+ - ".yardopts"
83
+ - CHANGELOG.md
84
+ - GNU
85
+ - Gemfile
86
+ - LICENSE
87
+ - README.md
88
+ - Rakefile
89
+ - docs/DocumentationGuidesIndex.md
90
+ - docs/GettingStarted.md
91
+ - docs/old/ChangeLog
92
+ - docs/old/DEFERRABLES
93
+ - docs/old/EPOLL
94
+ - docs/old/INSTALL
95
+ - docs/old/KEYBOARD
96
+ - docs/old/LEGAL
97
+ - docs/old/LIGHTWEIGHT_CONCURRENCY
98
+ - docs/old/PURE_RUBY
99
+ - docs/old/RELEASE_NOTES
100
+ - docs/old/SMTP
101
+ - docs/old/SPAWNED_PROCESSES
102
+ - docs/old/TODO
103
+ - eventmachine.gemspec
104
+ - examples/guides/getting_started/01_eventmachine_echo_server.rb
105
+ - examples/guides/getting_started/02_eventmachine_echo_server_that_recognizes_exit_command.rb
106
+ - examples/guides/getting_started/03_simple_chat_server.rb
107
+ - examples/guides/getting_started/04_simple_chat_server_step_one.rb
108
+ - examples/guides/getting_started/05_simple_chat_server_step_two.rb
109
+ - examples/guides/getting_started/06_simple_chat_server_step_three.rb
110
+ - examples/guides/getting_started/07_simple_chat_server_step_four.rb
111
+ - examples/guides/getting_started/08_simple_chat_server_step_five.rb
112
+ - examples/old/ex_channel.rb
113
+ - examples/old/ex_queue.rb
114
+ - examples/old/ex_tick_loop_array.rb
115
+ - examples/old/ex_tick_loop_counter.rb
116
+ - examples/old/helper.rb
117
+ - ext/binder.cpp
118
+ - ext/binder.h
119
+ - ext/cmain.cpp
120
+ - ext/ed.cpp
121
+ - ext/ed.h
122
+ - ext/em.cpp
123
+ - ext/em.h
124
+ - ext/eventmachine.h
125
+ - ext/extconf.rb
126
+ - ext/fastfilereader/extconf.rb
127
+ - ext/fastfilereader/mapper.cpp
128
+ - ext/fastfilereader/mapper.h
129
+ - ext/fastfilereader/rubymain.cpp
130
+ - ext/kb.cpp
131
+ - ext/page.cpp
132
+ - ext/page.h
133
+ - ext/pipe.cpp
134
+ - ext/project.h
135
+ - ext/rubymain.cpp
136
+ - ext/ssl.cpp
137
+ - ext/ssl.h
138
+ - java/.classpath
139
+ - java/.project
140
+ - java/src/com/rubyeventmachine/EmReactor.java
141
+ - java/src/com/rubyeventmachine/EmReactorException.java
142
+ - java/src/com/rubyeventmachine/EventableChannel.java
143
+ - java/src/com/rubyeventmachine/EventableDatagramChannel.java
144
+ - java/src/com/rubyeventmachine/EventableSocketChannel.java
145
+ - lib/em/buftok.rb
146
+ - lib/em/callback.rb
147
+ - lib/em/channel.rb
148
+ - lib/em/completion.rb
149
+ - lib/em/connection.rb
150
+ - lib/em/deferrable.rb
151
+ - lib/em/deferrable/pool.rb
152
+ - lib/em/file_watch.rb
153
+ - lib/em/future.rb
154
+ - lib/em/iterator.rb
155
+ - lib/em/messages.rb
156
+ - lib/em/pool.rb
157
+ - lib/em/process_watch.rb
158
+ - lib/em/processes.rb
159
+ - lib/em/protocols.rb
160
+ - lib/em/protocols/header_and_content.rb
161
+ - lib/em/protocols/httpclient.rb
162
+ - lib/em/protocols/httpclient2.rb
163
+ - lib/em/protocols/line_and_text.rb
164
+ - lib/em/protocols/line_protocol.rb
165
+ - lib/em/protocols/linetext2.rb
166
+ - lib/em/protocols/memcache.rb
167
+ - lib/em/protocols/object_protocol.rb
168
+ - lib/em/protocols/postgres3.rb
169
+ - lib/em/protocols/saslauth.rb
170
+ - lib/em/protocols/smtpclient.rb
171
+ - lib/em/protocols/smtpserver.rb
172
+ - lib/em/protocols/socks4.rb
173
+ - lib/em/protocols/stomp.rb
174
+ - lib/em/protocols/tcptest.rb
175
+ - lib/em/pure_ruby.rb
176
+ - lib/em/queue.rb
177
+ - lib/em/resolver.rb
178
+ - lib/em/spawnable.rb
179
+ - lib/em/streamer.rb
180
+ - lib/em/threaded_resource.rb
181
+ - lib/em/tick_loop.rb
182
+ - lib/em/timers.rb
183
+ - lib/em/version.rb
184
+ - lib/eventmachine.rb
185
+ - lib/jeventmachine.rb
186
+ - rakelib/cpp.rake_example
187
+ - rakelib/package.rake
188
+ - rakelib/test.rake
189
+ - tests/client.crt
190
+ - tests/client.key
191
+ - tests/em_test_helper.rb
192
+ - tests/test_attach.rb
193
+ - tests/test_basic.rb
194
+ - tests/test_channel.rb
195
+ - tests/test_completion.rb
196
+ - tests/test_connection_count.rb
197
+ - tests/test_defer.rb
198
+ - tests/test_deferrable.rb
199
+ - tests/test_epoll.rb
200
+ - tests/test_error_handler.rb
201
+ - tests/test_exc.rb
202
+ - tests/test_file_watch.rb
203
+ - tests/test_futures.rb
204
+ - tests/test_get_sock_opt.rb
205
+ - tests/test_handler_check.rb
206
+ - tests/test_hc.rb
207
+ - tests/test_httpclient.rb
208
+ - tests/test_httpclient2.rb
209
+ - tests/test_idle_connection.rb
210
+ - tests/test_inactivity_timeout.rb
211
+ - tests/test_kb.rb
212
+ - tests/test_ltp.rb
213
+ - tests/test_ltp2.rb
214
+ - tests/test_next_tick.rb
215
+ - tests/test_object_protocol.rb
216
+ - tests/test_pause.rb
217
+ - tests/test_pending_connect_timeout.rb
218
+ - tests/test_pool.rb
219
+ - tests/test_process_watch.rb
220
+ - tests/test_processes.rb
221
+ - tests/test_proxy_connection.rb
222
+ - tests/test_pure.rb
223
+ - tests/test_queue.rb
224
+ - tests/test_resolver.rb
225
+ - tests/test_running.rb
226
+ - tests/test_sasl.rb
227
+ - tests/test_send_file.rb
228
+ - tests/test_servers.rb
229
+ - tests/test_set_sock_opt.rb
230
+ - tests/test_shutdown_hooks.rb
231
+ - tests/test_smtpclient.rb
232
+ - tests/test_smtpserver.rb
233
+ - tests/test_spawn.rb
234
+ - tests/test_ssl_args.rb
235
+ - tests/test_ssl_methods.rb
236
+ - tests/test_ssl_verify.rb
237
+ - tests/test_threaded_resource.rb
238
+ - tests/test_tick_loop.rb
239
+ - tests/test_timers.rb
240
+ - tests/test_ud.rb
241
+ - tests/test_unbind_reason.rb
242
+ - lib/rubyeventmachine.jar
234
243
  homepage: http://rubyeventmachine.com
235
244
  licenses: []
236
-
237
- post_install_message:
238
- rdoc_options:
239
- - --title
240
- - EventMachine
241
- - --main
242
- - README.md
243
- - -x
244
- - lib/em/version
245
- - -x
246
- - lib/jeventmachine
247
- require_paths:
248
- - lib
249
- required_ruby_version: !ruby/object:Gem::Requirement
245
+ post_install_message:
246
+ rdoc_options:
247
+ - "--title"
248
+ - EventMachine
249
+ - "--main"
250
+ - README.md
251
+ - "-x"
252
+ - lib/em/version
253
+ - "-x"
254
+ - lib/jeventmachine
255
+ require_paths:
256
+ - lib
257
+ required_ruby_version: !ruby/object:Gem::Requirement
258
+ requirements:
259
+ - - ">="
260
+ - !ruby/object:Gem::Version
261
+ segments:
262
+ - 0
263
+ hash: 2
264
+ version: !binary |-
265
+ MA==
250
266
  none: false
251
- requirements:
252
- - - ">="
253
- - !ruby/object:Gem::Version
254
- version: "0"
255
- required_rubygems_version: !ruby/object:Gem::Requirement
267
+ required_rubygems_version: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ segments:
272
+ - 0
273
+ hash: 2
274
+ version: !binary |-
275
+ MA==
256
276
  none: false
257
- requirements:
258
- - - ">"
259
- - !ruby/object:Gem::Version
260
- version: 1.3.1
261
277
  requirements: []
262
-
263
278
  rubyforge_project: eventmachine
264
- rubygems_version: 1.8.15
265
- signing_key:
279
+ rubygems_version: 1.8.24
280
+ signing_key:
266
281
  specification_version: 3
267
282
  summary: Ruby/EventMachine library
268
283
  test_files: []
269
-