eventmachine 1.0.0.beta.3-x86-mingw32 → 1.0.0.beta.4.1-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. data/.gitignore +5 -0
  2. data/.yardopts +5 -1
  3. data/{docs/GNU → GNU} +0 -0
  4. data/Gemfile +1 -0
  5. data/{docs/COPYING → LICENSE} +0 -0
  6. data/README.md +109 -0
  7. data/Rakefile +8 -0
  8. data/docs/DocumentationGuidesIndex.md +27 -0
  9. data/docs/GettingStarted.md +521 -0
  10. data/docs/{ChangeLog → old/ChangeLog} +0 -0
  11. data/docs/{DEFERRABLES → old/DEFERRABLES} +0 -0
  12. data/docs/{EPOLL → old/EPOLL} +0 -0
  13. data/docs/{INSTALL → old/INSTALL} +0 -0
  14. data/docs/{KEYBOARD → old/KEYBOARD} +0 -0
  15. data/docs/{LEGAL → old/LEGAL} +0 -0
  16. data/docs/{LIGHTWEIGHT_CONCURRENCY → old/LIGHTWEIGHT_CONCURRENCY} +0 -0
  17. data/docs/{PURE_RUBY → old/PURE_RUBY} +0 -0
  18. data/docs/{RELEASE_NOTES → old/RELEASE_NOTES} +0 -0
  19. data/docs/{SMTP → old/SMTP} +0 -0
  20. data/docs/{SPAWNED_PROCESSES → old/SPAWNED_PROCESSES} +0 -0
  21. data/docs/{TODO → old/TODO} +0 -0
  22. data/eventmachine.gemspec +5 -2
  23. data/examples/guides/getting_started/01_eventmachine_echo_server.rb +18 -0
  24. data/examples/guides/getting_started/02_eventmachine_echo_server_that_recognizes_exit_command.rb +22 -0
  25. data/examples/guides/getting_started/03_simple_chat_server.rb +149 -0
  26. data/examples/guides/getting_started/04_simple_chat_server_step_one.rb +27 -0
  27. data/examples/guides/getting_started/05_simple_chat_server_step_two.rb +43 -0
  28. data/examples/guides/getting_started/06_simple_chat_server_step_three.rb +98 -0
  29. data/examples/guides/getting_started/07_simple_chat_server_step_four.rb +121 -0
  30. data/examples/guides/getting_started/08_simple_chat_server_step_five.rb +141 -0
  31. data/examples/{ex_channel.rb → old/ex_channel.rb} +3 -3
  32. data/examples/{ex_queue.rb → old/ex_queue.rb} +0 -0
  33. data/examples/{ex_tick_loop_array.rb → old/ex_tick_loop_array.rb} +0 -0
  34. data/examples/{ex_tick_loop_counter.rb → old/ex_tick_loop_counter.rb} +0 -0
  35. data/examples/{helper.rb → old/helper.rb} +0 -0
  36. data/ext/cmain.cpp +3 -3
  37. data/ext/ed.cpp +90 -15
  38. data/ext/ed.h +5 -5
  39. data/ext/em.cpp +48 -56
  40. data/ext/em.h +12 -2
  41. data/ext/extconf.rb +3 -3
  42. data/ext/fastfilereader/extconf.rb +1 -1
  43. data/ext/pipe.cpp +2 -2
  44. data/ext/project.h +1 -1
  45. data/ext/rubymain.cpp +48 -3
  46. data/ext/ssl.cpp +5 -0
  47. data/java/src/com/rubyeventmachine/EmReactor.java +2 -2
  48. data/lib/em/buftok.rb +35 -63
  49. data/lib/em/callback.rb +43 -11
  50. data/lib/em/channel.rb +21 -14
  51. data/lib/em/completion.rb +304 -0
  52. data/lib/em/connection.rb +339 -209
  53. data/lib/em/deferrable.rb +4 -0
  54. data/lib/em/deferrable/pool.rb +2 -0
  55. data/lib/em/file_watch.rb +37 -18
  56. data/lib/em/iterator.rb +42 -42
  57. data/lib/em/pool.rb +146 -0
  58. data/lib/em/process_watch.rb +5 -4
  59. data/lib/em/processes.rb +8 -4
  60. data/lib/em/protocols/httpclient.rb +22 -11
  61. data/lib/em/protocols/httpclient2.rb +15 -5
  62. data/lib/em/protocols/line_protocol.rb +2 -1
  63. data/lib/em/protocols/memcache.rb +17 -9
  64. data/lib/em/protocols/object_protocol.rb +2 -1
  65. data/lib/em/protocols/postgres3.rb +8 -9
  66. data/lib/em/protocols/smtpclient.rb +19 -11
  67. data/lib/em/protocols/smtpserver.rb +1 -1
  68. data/lib/em/protocols/stomp.rb +8 -6
  69. data/lib/em/protocols/tcptest.rb +3 -2
  70. data/lib/em/pure_ruby.rb +212 -208
  71. data/lib/em/queue.rb +22 -13
  72. data/lib/em/resolver.rb +70 -64
  73. data/lib/em/spawnable.rb +6 -3
  74. data/lib/em/streamer.rb +33 -45
  75. data/lib/em/threaded_resource.rb +90 -0
  76. data/lib/em/timers.rb +6 -2
  77. data/lib/em/version.rb +1 -1
  78. data/lib/eventmachine.rb +538 -602
  79. data/lib/jeventmachine.rb +22 -1
  80. data/tasks/package.rake +12 -2
  81. data/tasks/test.rake +1 -0
  82. data/tests/em_test_helper.rb +12 -3
  83. data/tests/test_completion.rb +177 -0
  84. data/tests/test_epoll.rb +2 -2
  85. data/tests/test_httpclient.rb +9 -9
  86. data/tests/test_httpclient2.rb +11 -9
  87. data/tests/test_ltp.rb +2 -10
  88. data/tests/test_pool.rb +128 -0
  89. data/tests/test_processes.rb +20 -2
  90. data/tests/test_queue.rb +8 -0
  91. data/tests/test_resolver.rb +1 -1
  92. data/tests/test_set_sock_opt.rb +37 -0
  93. data/tests/test_shutdown_hooks.rb +23 -0
  94. data/tests/test_threaded_resource.rb +53 -0
  95. data/tests/test_unbind_reason.rb +31 -0
  96. metadata +96 -32
  97. data/README +0 -81
  98. data/tasks/doc.rake +0 -30
@@ -87,12 +87,8 @@ class TestLineAndTextProtocol < Test::Unit::TestCase
87
87
 
88
88
  def test_lines_and_text
89
89
  output = ''
90
- lines_received = []
91
- text_received = []
92
90
  EM.run {
93
- EM.start_server( "127.0.0.1", @port, LineAndTextTest ) do |conn|
94
- conn.instance_eval "@lines = lines_received; @text = text_received"
95
- end
91
+ EM.start_server( "127.0.0.1", @port, LineAndTextTest )
96
92
  setup_timeout
97
93
 
98
94
  EM.connect "127.0.0.1", @port, StopClient do |c|
@@ -125,12 +121,8 @@ class TestLineAndTextProtocol < Test::Unit::TestCase
125
121
 
126
122
  def test_binary_text
127
123
  output = ''
128
- lines_received = []
129
- text_received = []
130
124
  EM.run {
131
- EM.start_server( "127.0.0.1", @port, BinaryTextTest ) do |conn|
132
- conn.instance_eval "@lines = lines_received; @text = text_received"
133
- end
125
+ EM.start_server( "127.0.0.1", @port, BinaryTextTest )
134
126
  setup_timeout
135
127
 
136
128
  EM.connect "127.0.0.1", @port, StopClient do |c|
@@ -0,0 +1,128 @@
1
+ class TestPool < Test::Unit::TestCase
2
+ def pool
3
+ @pool ||= EM::Pool.new
4
+ end
5
+
6
+ def go
7
+ EM.run { yield }
8
+ end
9
+
10
+ def stop
11
+ EM.stop
12
+ end
13
+
14
+ def deferrable
15
+ @deferrable ||= EM::DefaultDeferrable.new
16
+ end
17
+
18
+ def test_supports_more_work_than_resources
19
+ ran = false
20
+ go do
21
+ pool.perform do
22
+ ran = true
23
+ deferrable
24
+ end
25
+ stop
26
+ end
27
+ assert_equal false, ran
28
+ go do
29
+ pool.add :resource
30
+ stop
31
+ end
32
+ assert_equal true, ran
33
+ end
34
+
35
+ def test_reques_resources_on_error
36
+ pooled_res, pooled_res2 = nil
37
+ pool.add :res
38
+ go do
39
+ pool.perform do |res|
40
+ pooled_res = res
41
+ deferrable
42
+ end
43
+ stop
44
+ end
45
+ deferrable.fail
46
+ go do
47
+ pool.perform do |res|
48
+ pooled_res2 = res
49
+ deferrable
50
+ end
51
+ stop
52
+ end
53
+ assert_equal :res, pooled_res
54
+ assert_equal pooled_res, pooled_res2
55
+ end
56
+
57
+ def test_supports_custom_error_handler
58
+ eres = nil
59
+ pool.on_error do |res|
60
+ eres = res
61
+ end
62
+ performs = []
63
+ pool.add :res
64
+ go do
65
+ pool.perform do |res|
66
+ performs << res
67
+ deferrable
68
+ end
69
+ pool.perform do |res|
70
+ performs << res
71
+ deferrable
72
+ end
73
+ deferrable.fail
74
+ stop
75
+ end
76
+ assert_equal :res, eres
77
+ # manual requeues required when error handler is installed:
78
+ assert_equal 1, performs.size
79
+ assert_equal :res, performs.first
80
+ end
81
+
82
+ def test_catches_successful_deferrables
83
+ performs = []
84
+ pool.add :res
85
+ go do
86
+ pool.perform { |res| performs << res; deferrable }
87
+ pool.perform { |res| performs << res; deferrable }
88
+ stop
89
+ end
90
+ assert_equal [:res], performs
91
+ deferrable.succeed
92
+ go { stop }
93
+ assert_equal [:res, :res], performs
94
+ end
95
+
96
+ def test_prunes_locked_and_removed_resources
97
+ performs = []
98
+ pool.add :res
99
+ deferrable.succeed
100
+ go do
101
+ pool.perform { |res| performs << res; pool.remove res; deferrable }
102
+ pool.perform { |res| performs << res; pool.remove res; deferrable }
103
+ stop
104
+ end
105
+ assert_equal [:res], performs
106
+ end
107
+
108
+ # Contents is only to be used for inspection of the pool!
109
+ def test_contents
110
+ pool.add :res
111
+ assert_equal [:res], pool.contents
112
+ # Assert that modifying the contents list does not affect the pools
113
+ # contents.
114
+ pool.contents.delete(:res)
115
+ assert_equal [:res], pool.contents
116
+ end
117
+
118
+ def test_num_waiting
119
+ pool.add :res
120
+ assert_equal 0, pool.num_waiting
121
+ pool.perform { |r| EM::DefaultDeferrable.new }
122
+ assert_equal 0, pool.num_waiting
123
+ 10.times { pool.perform { |r| EM::DefaultDeferrable.new } }
124
+ EM.run { EM.next_tick { EM.stop } }
125
+ assert_equal 10, pool.num_waiting
126
+ end
127
+
128
+ end
@@ -78,7 +78,7 @@ class TestProcesses < Test::Unit::TestCase
78
78
 
79
79
  def test_em_system_cmd_arguments
80
80
  EM.run{
81
- EM.system('sh', '--version', proc{ |process|
81
+ EM.system('echo', '1', '2', 'version', proc{ |process|
82
82
  }, proc{ |out,status|
83
83
  $out = out
84
84
  $status = status
@@ -86,7 +86,7 @@ class TestProcesses < Test::Unit::TestCase
86
86
  })
87
87
  }
88
88
 
89
- assert_match(/version/i, $out)
89
+ assert_match(/1 2 version/i, $out)
90
90
  end
91
91
 
92
92
  def test_em_system_spaced_arguments
@@ -99,6 +99,24 @@ class TestProcesses < Test::Unit::TestCase
99
99
 
100
100
  assert_equal("hello\n", $out)
101
101
  end
102
+
103
+ def test_em_popen_pause_resume
104
+ c_rx = 0
105
+
106
+ test_client = Module.new do
107
+ define_method :receive_data do |data|
108
+ c_rx += 1
109
+ pause
110
+ EM.add_timer(0.5) { EM.stop }
111
+ end
112
+ end
113
+
114
+ EM.run{
115
+ EM.popen('cat /dev/random', test_client)
116
+ }
117
+
118
+ assert_equal 1, c_rx
119
+ end
102
120
  else
103
121
  warn "EM.popen not implemented, skipping tests in #{__FILE__}"
104
122
 
@@ -39,4 +39,12 @@ class TestEMQueue < Test::Unit::TestCase
39
39
  EM.run { EM.next_tick { EM.stop } }
40
40
  assert_equal 1, x
41
41
  end
42
+
43
+ def test_num_waiting
44
+ q = EM::Queue.new
45
+ many = 3
46
+ many.times { q.pop {} }
47
+ EM.run { EM.next_tick { EM.stop } }
48
+ assert_equal many, q.num_waiting
49
+ end
42
50
  end
@@ -1,6 +1,6 @@
1
1
  require 'em_test_helper'
2
2
 
3
- class TestBasic < Test::Unit::TestCase
3
+ class TestResolver < Test::Unit::TestCase
4
4
  def test_a
5
5
  EM.run {
6
6
  d = EM::DNS::Resolver.resolve "google.com"
@@ -0,0 +1,37 @@
1
+ require 'em_test_helper'
2
+ require 'socket'
3
+
4
+ class TestSetSockOpt < Test::Unit::TestCase
5
+
6
+ if EM.respond_to? :set_sock_opt
7
+ def setup
8
+ assert(!EM.reactor_running?)
9
+ end
10
+
11
+ def teardown
12
+ assert(!EM.reactor_running?)
13
+ end
14
+
15
+ #-------------------------------------
16
+
17
+ def test_set_sock_opt
18
+ test = self
19
+ EM.run do
20
+ EM.connect 'google.com', 80, Module.new {
21
+ define_method :post_init do
22
+ val = set_sock_opt Socket::SOL_SOCKET, Socket::SO_DEBUG, true
23
+ test.assert_equal 0, val
24
+ EM.stop
25
+ end
26
+ }
27
+ end
28
+ end
29
+ else
30
+ warn "EM.set_sock_opt not implemented, skipping tests in #{__FILE__}"
31
+
32
+ # Because some rubies will complain if a TestCase class has no tests
33
+ def test_em_set_sock_opt_unsupported
34
+ assert true
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,23 @@
1
+ require 'em_test_helper'
2
+
3
+ class TestShutdownHooks < Test::Unit::TestCase
4
+ def test_shutdown_hooks
5
+ r = false
6
+ EM.run {
7
+ EM.add_shutdown_hook { r = true }
8
+ EM.stop
9
+ }
10
+ assert_equal( true, r )
11
+ end
12
+
13
+ def test_hook_order
14
+ r = []
15
+ EM.run {
16
+ EM.add_shutdown_hook { r << 2 }
17
+ EM.add_shutdown_hook { r << 1 }
18
+ EM.stop
19
+ }
20
+ assert_equal( [1, 2], r )
21
+ end
22
+ end
23
+
@@ -0,0 +1,53 @@
1
+ class TestThreadedResource < Test::Unit::TestCase
2
+ def object
3
+ @object ||= {}
4
+ end
5
+
6
+ def resource
7
+ @resource = EM::ThreadedResource.new do
8
+ object
9
+ end
10
+ end
11
+
12
+ def teardown
13
+ resource.shutdown
14
+ end
15
+
16
+ def test_dispatch_completion
17
+ EM.run do
18
+ completion = resource.dispatch do |o|
19
+ o[:foo] = :bar
20
+ :foo
21
+ end
22
+ completion.callback do |result|
23
+ assert_equal :foo, result
24
+ EM.stop
25
+ end
26
+ end
27
+ assert_equal :bar, object[:foo]
28
+ end
29
+
30
+ def test_dispatch_failure
31
+ completion = resource.dispatch do |o|
32
+ raise 'boom'
33
+ end
34
+ completion.errback do |error|
35
+ assert_kind_of RuntimeError, error
36
+ assert_equal 'boom', error.message
37
+ end
38
+ end
39
+
40
+ def test_dispatch_threading
41
+ main = Thread.current
42
+ resource.dispatch do |o|
43
+ o[:dispatch_thread] = Thread.current
44
+ end
45
+ assert_not_equal main, object[:dispatch_thread]
46
+ end
47
+
48
+ def test_shutdown
49
+ # This test should get improved sometime. The method returning thread is
50
+ # NOT an api that will be maintained.
51
+ assert !resource.shutdown.alive?
52
+ end
53
+ end
@@ -0,0 +1,31 @@
1
+ require 'em_test_helper'
2
+ require 'socket'
3
+
4
+ class TestUnbindReason < Test::Unit::TestCase
5
+ def test_connect_timeout
6
+ error = nil
7
+ EM.run {
8
+ conn = EM.connect 'google.com', 81, Module.new{ |m|
9
+ m.send(:define_method, :unbind) do |reason|
10
+ error = reason
11
+ EM.stop
12
+ end
13
+ }
14
+ conn.pending_connect_timeout = 0.1
15
+ }
16
+ assert_equal error, Errno::ETIMEDOUT
17
+ end
18
+
19
+ def test_connect_refused
20
+ error = nil
21
+ EM.run {
22
+ EM.connect '127.0.0.1', 12388, Module.new{ |m|
23
+ m.send(:define_method, :unbind) do |reason|
24
+ error = reason
25
+ EM.stop
26
+ end
27
+ }
28
+ }
29
+ assert_equal error, Errno::ECONNREFUSED
30
+ end
31
+ end
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eventmachine
3
3
  version: !ruby/object:Gem::Version
4
- hash: 62196357
4
+ hash: 124392917
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
9
  - 0
10
10
  - beta
11
- - 3
12
- version: 1.0.0.beta.3
11
+ - 4
12
+ - 1
13
+ version: 1.0.0.beta.4.1
13
14
  platform: x86-mingw32
14
15
  authors:
15
16
  - Francis Cianfrocca
@@ -18,7 +19,7 @@ autorequire:
18
19
  bindir: bin
19
20
  cert_chain: []
20
21
 
21
- date: 2011-03-03 00:00:00 -08:00
22
+ date: 2011-09-25 00:00:00 +01:00
22
23
  default_executable:
23
24
  dependencies:
24
25
  - !ruby/object:Gem::Dependency
@@ -29,14 +30,44 @@ dependencies:
29
30
  requirements:
30
31
  - - "="
31
32
  - !ruby/object:Gem::Version
32
- hash: 15
33
+ hash: 17
33
34
  segments:
34
35
  - 0
35
36
  - 7
36
- - 6
37
- version: 0.7.6
37
+ - 9
38
+ version: 0.7.9
38
39
  type: :development
39
40
  version_requirements: *id001
41
+ - !ruby/object:Gem::Dependency
42
+ name: yard
43
+ prerelease: false
44
+ requirement: &id002 !ruby/object:Gem::Requirement
45
+ none: false
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ hash: 7
50
+ segments:
51
+ - 0
52
+ - 7
53
+ - 2
54
+ version: 0.7.2
55
+ type: :development
56
+ version_requirements: *id002
57
+ - !ruby/object:Gem::Dependency
58
+ name: bluecloth
59
+ prerelease: false
60
+ requirement: &id003 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ hash: 3
66
+ segments:
67
+ - 0
68
+ version: "0"
69
+ type: :development
70
+ version_requirements: *id003
40
71
  description: |-
41
72
  EventMachine implements a fast, single-threaded engine for arbitrary network
42
73
  communications. It's extremely easy to use in Ruby. EventMachine wraps all
@@ -55,34 +86,58 @@ executables: []
55
86
 
56
87
  extensions: []
57
88
 
58
- extra_rdoc_files: []
59
-
89
+ extra_rdoc_files:
90
+ - README.md
91
+ - docs/DocumentationGuidesIndex.md
92
+ - docs/GettingStarted.md
93
+ - docs/old/ChangeLog
94
+ - docs/old/DEFERRABLES
95
+ - docs/old/EPOLL
96
+ - docs/old/INSTALL
97
+ - docs/old/KEYBOARD
98
+ - docs/old/LEGAL
99
+ - docs/old/LIGHTWEIGHT_CONCURRENCY
100
+ - docs/old/PURE_RUBY
101
+ - docs/old/RELEASE_NOTES
102
+ - docs/old/SMTP
103
+ - docs/old/SPAWNED_PROCESSES
104
+ - docs/old/TODO
60
105
  files:
61
106
  - .gitignore
62
107
  - .yardopts
108
+ - GNU
63
109
  - Gemfile
64
- - README
110
+ - LICENSE
111
+ - README.md
65
112
  - Rakefile
66
- - docs/COPYING
67
- - docs/ChangeLog
68
- - docs/DEFERRABLES
69
- - docs/EPOLL
70
- - docs/GNU
71
- - docs/INSTALL
72
- - docs/KEYBOARD
73
- - docs/LEGAL
74
- - docs/LIGHTWEIGHT_CONCURRENCY
75
- - docs/PURE_RUBY
76
- - docs/RELEASE_NOTES
77
- - docs/SMTP
78
- - docs/SPAWNED_PROCESSES
79
- - docs/TODO
113
+ - docs/DocumentationGuidesIndex.md
114
+ - docs/GettingStarted.md
115
+ - docs/old/ChangeLog
116
+ - docs/old/DEFERRABLES
117
+ - docs/old/EPOLL
118
+ - docs/old/INSTALL
119
+ - docs/old/KEYBOARD
120
+ - docs/old/LEGAL
121
+ - docs/old/LIGHTWEIGHT_CONCURRENCY
122
+ - docs/old/PURE_RUBY
123
+ - docs/old/RELEASE_NOTES
124
+ - docs/old/SMTP
125
+ - docs/old/SPAWNED_PROCESSES
126
+ - docs/old/TODO
80
127
  - eventmachine.gemspec
81
- - examples/ex_channel.rb
82
- - examples/ex_queue.rb
83
- - examples/ex_tick_loop_array.rb
84
- - examples/ex_tick_loop_counter.rb
85
- - examples/helper.rb
128
+ - examples/guides/getting_started/01_eventmachine_echo_server.rb
129
+ - examples/guides/getting_started/02_eventmachine_echo_server_that_recognizes_exit_command.rb
130
+ - examples/guides/getting_started/03_simple_chat_server.rb
131
+ - examples/guides/getting_started/04_simple_chat_server_step_one.rb
132
+ - examples/guides/getting_started/05_simple_chat_server_step_two.rb
133
+ - examples/guides/getting_started/06_simple_chat_server_step_three.rb
134
+ - examples/guides/getting_started/07_simple_chat_server_step_four.rb
135
+ - examples/guides/getting_started/08_simple_chat_server_step_five.rb
136
+ - examples/old/ex_channel.rb
137
+ - examples/old/ex_queue.rb
138
+ - examples/old/ex_tick_loop_array.rb
139
+ - examples/old/ex_tick_loop_counter.rb
140
+ - examples/old/helper.rb
86
141
  - ext/binder.cpp
87
142
  - ext/binder.h
88
143
  - ext/cmain.cpp
@@ -114,12 +169,15 @@ files:
114
169
  - lib/em/buftok.rb
115
170
  - lib/em/callback.rb
116
171
  - lib/em/channel.rb
172
+ - lib/em/completion.rb
117
173
  - lib/em/connection.rb
118
174
  - lib/em/deferrable.rb
175
+ - lib/em/deferrable/pool.rb
119
176
  - lib/em/file_watch.rb
120
177
  - lib/em/future.rb
121
178
  - lib/em/iterator.rb
122
179
  - lib/em/messages.rb
180
+ - lib/em/pool.rb
123
181
  - lib/em/process_watch.rb
124
182
  - lib/em/processes.rb
125
183
  - lib/em/protocols.rb
@@ -143,13 +201,13 @@ files:
143
201
  - lib/em/resolver.rb
144
202
  - lib/em/spawnable.rb
145
203
  - lib/em/streamer.rb
204
+ - lib/em/threaded_resource.rb
146
205
  - lib/em/tick_loop.rb
147
206
  - lib/em/timers.rb
148
207
  - lib/em/version.rb
149
208
  - lib/eventmachine.rb
150
209
  - lib/jeventmachine.rb
151
210
  - tasks/cpp.rake_example
152
- - tasks/doc.rake
153
211
  - tasks/package.rake
154
212
  - tasks/test.rake
155
213
  - tests/client.crt
@@ -158,6 +216,7 @@ files:
158
216
  - tests/test_attach.rb
159
217
  - tests/test_basic.rb
160
218
  - tests/test_channel.rb
219
+ - tests/test_completion.rb
161
220
  - tests/test_connection_count.rb
162
221
  - tests/test_defer.rb
163
222
  - tests/test_deferrable.rb
@@ -179,6 +238,7 @@ files:
179
238
  - tests/test_object_protocol.rb
180
239
  - tests/test_pause.rb
181
240
  - tests/test_pending_connect_timeout.rb
241
+ - tests/test_pool.rb
182
242
  - tests/test_process_watch.rb
183
243
  - tests/test_processes.rb
184
244
  - tests/test_proxy_connection.rb
@@ -189,15 +249,19 @@ files:
189
249
  - tests/test_sasl.rb
190
250
  - tests/test_send_file.rb
191
251
  - tests/test_servers.rb
252
+ - tests/test_set_sock_opt.rb
253
+ - tests/test_shutdown_hooks.rb
192
254
  - tests/test_smtpclient.rb
193
255
  - tests/test_smtpserver.rb
194
256
  - tests/test_spawn.rb
195
257
  - tests/test_ssl_args.rb
196
258
  - tests/test_ssl_methods.rb
197
259
  - tests/test_ssl_verify.rb
260
+ - tests/test_threaded_resource.rb
198
261
  - tests/test_tick_loop.rb
199
262
  - tests/test_timers.rb
200
263
  - tests/test_ud.rb
264
+ - tests/test_unbind_reason.rb
201
265
  - lib/1.8/rubyeventmachine.so
202
266
  - lib/1.9/rubyeventmachine.so
203
267
  - lib/1.8/fastfilereaderext.so
@@ -212,7 +276,7 @@ rdoc_options:
212
276
  - --title
213
277
  - EventMachine
214
278
  - --main
215
- - README
279
+ - README.md
216
280
  - -x
217
281
  - lib/em/version
218
282
  - -x
@@ -242,7 +306,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
242
306
  requirements: []
243
307
 
244
308
  rubyforge_project: eventmachine
245
- rubygems_version: 1.4.2
309
+ rubygems_version: 1.6.2
246
310
  signing_key:
247
311
  specification_version: 3
248
312
  summary: Ruby/EventMachine library