eventmachine 0.12.4 → 0.12.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/.gitignore +13 -0
  2. data/Rakefile +66 -3
  3. data/docs/ChangeLog +38 -10
  4. data/eventmachine.gemspec +32 -0
  5. data/ext/cmain.cpp +45 -3
  6. data/ext/cplusplus.cpp +21 -0
  7. data/ext/ed.cpp +34 -1
  8. data/ext/ed.h +12 -0
  9. data/ext/em.cpp +23 -3
  10. data/ext/em.h +6 -2
  11. data/ext/eventmachine.h +9 -1
  12. data/ext/eventmachine_cpp.h +1 -0
  13. data/ext/extconf.rb +8 -29
  14. data/ext/fastfilereader/extconf.rb +50 -134
  15. data/ext/fastfilereader/mapper.cpp +12 -0
  16. data/ext/fastfilereader/mapper.h +1 -1
  17. data/ext/kb.cpp +0 -286
  18. data/ext/pipe.cpp +30 -13
  19. data/ext/rubymain.cpp +127 -12
  20. data/ext/ssl.cpp +15 -0
  21. data/ext/ssl.h +4 -0
  22. data/java/.classpath +8 -0
  23. data/java/.project +17 -0
  24. data/lib/em/processes.rb +45 -0
  25. data/lib/eventmachine.rb +260 -102
  26. data/lib/eventmachine_version.rb +1 -1
  27. data/lib/pr_eventmachine.rb +1 -1
  28. data/lib/protocols/httpcli2.rb +10 -1
  29. data/lib/protocols/httpclient.rb +2 -2
  30. data/lib/protocols/memcache.rb +293 -0
  31. data/lib/protocols/smtpserver.rb +1 -1
  32. data/setup.rb +1585 -0
  33. data/tasks/tests.rake +1 -0
  34. data/tests/test_attach.rb +19 -2
  35. data/tests/test_basic.rb +2 -2
  36. data/tests/test_connection_count.rb +45 -0
  37. data/tests/test_error_handler.rb +35 -0
  38. data/tests/test_errors.rb +3 -3
  39. data/tests/test_exc.rb +2 -2
  40. data/tests/test_handler_check.rb +37 -0
  41. data/tests/test_httpclient2.rb +1 -1
  42. data/tests/test_kb.rb +2 -2
  43. data/tests/test_next_tick.rb +7 -0
  44. data/tests/test_processes.rb +39 -0
  45. data/tests/test_pure.rb +2 -2
  46. data/tests/test_send_file.rb +1 -1
  47. data/tests/test_ssl_args.rb +3 -3
  48. data/tests/test_ssl_methods.rb +50 -0
  49. data/tests/test_timers.rb +3 -1
  50. data/web/whatis +7 -0
  51. metadata +88 -84
@@ -37,6 +37,7 @@ namespace :test do
37
37
  "test_basic.rb",
38
38
  "test_epoll.rb",
39
39
  "test_errors.rb",
40
+ "test_error_handler.rb",
40
41
  "test_eventables.rb",
41
42
  "test_exc.rb",
42
43
  "test_futures.rb",
@@ -33,7 +33,7 @@ class TestAttach < Test::Unit::TestCase
33
33
  end
34
34
 
35
35
  class EchoClient < EM::Connection
36
- def connection_completed
36
+ def initialize
37
37
  $sock.write("abc\n")
38
38
  end
39
39
 
@@ -63,4 +63,21 @@ class TestAttach < Test::Unit::TestCase
63
63
  assert_equal $sock.readline, "def\n"
64
64
  end
65
65
 
66
- end
66
+
67
+ module PipeWatch
68
+ def notify_readable
69
+ $read = $r.readline
70
+ EM.stop
71
+ end
72
+ end
73
+
74
+ def test_attach_pipe
75
+ EM.run{
76
+ $r, $w = IO.pipe
77
+ EM.attach $r, PipeWatch
78
+ $w.write("ghi\n")
79
+ }
80
+
81
+ assert_equal $read, "ghi\n"
82
+ end
83
+ end
@@ -148,7 +148,7 @@ class TestBasic < Test::Unit::TestCase
148
148
  end
149
149
 
150
150
  def xxx_test_unbind_error
151
- assert_raise( RuntimeError ) {
151
+ assert_raises( RuntimeError ) {
152
152
  EM.run {
153
153
  EM.start_server TestHost, TestPort
154
154
  EM.connect TestHost, TestPort, UnbindError
@@ -184,7 +184,7 @@ class TestBasic < Test::Unit::TestCase
184
184
  # This test causes issues, the machine becomes unreleasable after
185
185
  # release_machine suffers an exception in event_callback.
186
186
  def xxx_test_post_init_error
187
- assert_raise( EventMachine::ConnectionNotBound ) {
187
+ assert_raises( EventMachine::ConnectionNotBound ) {
188
188
  EM.run {
189
189
  EM::Timer.new(1) {EM.stop}
190
190
  EM.start_server TestHost, TestPort
@@ -0,0 +1,45 @@
1
+ $:.unshift "../lib"
2
+ require 'eventmachine'
3
+ require 'test/unit'
4
+
5
+ class TestConnectionCount < Test::Unit::TestCase
6
+ def test_idle_connection_count
7
+ EM.run {
8
+ $count = EM.connection_count
9
+ EM.stop_event_loop
10
+ }
11
+
12
+ assert_equal(0, $count)
13
+ end
14
+
15
+ module Client
16
+ def connection_completed
17
+ EM.next_tick{
18
+ $client_connected = EM.connection_count
19
+ EM.stop
20
+ }
21
+ end
22
+ end
23
+
24
+ module Server
25
+ def post_init
26
+ $server_connected = EM.connection_count
27
+ end
28
+ end
29
+
30
+ def test_with_some_connections
31
+ EM.run {
32
+ EM.start_server("127.0.0.1", 9999, Server)
33
+ $initial = EM.connection_count
34
+ EM.next_tick{
35
+ $server_started = EM.connection_count
36
+ EM.connect("127.0.0.1", 9999, Client)
37
+ }
38
+ }
39
+
40
+ assert_equal(0, $initial)
41
+ assert_equal(1, $server_started)
42
+ assert_equal(2, $server_connected)
43
+ assert_equal(3, $client_connected)
44
+ end
45
+ end
@@ -0,0 +1,35 @@
1
+ $:.unshift "../lib"
2
+ require 'eventmachine'
3
+ require 'test/unit'
4
+
5
+ class TestErrorHandler < Test::Unit::TestCase
6
+ def test_error_handler
7
+ error = nil
8
+ EM.error_handler{ |e|
9
+ error = e
10
+ EM.error_handler(nil)
11
+ EM.stop
12
+ }
13
+
14
+ assert_nothing_raised do
15
+ EM.run{
16
+ EM.add_timer(0){
17
+ raise 'test'
18
+ }
19
+ }
20
+ end
21
+
22
+ assert_equal error.class, RuntimeError
23
+ assert_equal error.message, 'test'
24
+ end
25
+
26
+ def test_without_error_handler
27
+ assert_raise RuntimeError do
28
+ EM.run{
29
+ EM.add_timer(0){
30
+ raise 'test'
31
+ }
32
+ }
33
+ end
34
+ end
35
+ end
@@ -42,14 +42,14 @@ class TestErrors < Test::Unit::TestCase
42
42
  def setup
43
43
  end
44
44
 
45
- def teardown
45
+ def obsolete_teardown
46
46
  # Calling #set_runtime_error_hook with no block restores the
47
47
  # default handling of runtime_errors.
48
48
  #
49
49
  EM.set_runtime_error_hook
50
50
  end
51
51
 
52
- def test_a
52
+ def test_no_tests_stub
53
53
  end
54
54
 
55
55
  # EM has a default handler for RuntimeErrors that are emitted from
@@ -59,7 +59,7 @@ class TestErrors < Test::Unit::TestCase
59
59
  # run.
60
60
  #
61
61
  def obsolete_test_unhandled_error
62
- assert_raise( RuntimeError ) {
62
+ assert_raises( RuntimeError ) {
63
63
  EM.run {
64
64
  EM.add_timer(0) {raise "AAA"}
65
65
  }
@@ -38,7 +38,7 @@ class TestSomeExceptions < Test::Unit::TestCase
38
38
  # because the machine wasn't cleaned up properly.
39
39
 
40
40
  def test_a
41
- assert_raise(RuntimeError) {
41
+ assert_raises(RuntimeError) {
42
42
  EventMachine.run {
43
43
  raise "some exception"
44
44
  }
@@ -46,7 +46,7 @@ class TestSomeExceptions < Test::Unit::TestCase
46
46
  end
47
47
 
48
48
  def test_b
49
- assert_raise(RuntimeError) {
49
+ assert_raises(RuntimeError) {
50
50
  EventMachine.run {
51
51
  raise "some exception"
52
52
  }
@@ -0,0 +1,37 @@
1
+ $:.unshift "../lib"
2
+ require 'eventmachine'
3
+ require 'test/unit'
4
+
5
+ class TestHandlerCheck < Test::Unit::TestCase
6
+
7
+ class Foo < EM::Connection; end;
8
+ module TestModule; end;
9
+
10
+ def test_with_correct_class
11
+ assert_nothing_raised do
12
+ EM.run {
13
+ EM.connect("127.0.0.1", 80, Foo)
14
+ EM.stop_event_loop
15
+ }
16
+ end
17
+ end
18
+
19
+ def test_with_incorrect_class
20
+ assert_raise(ArgumentError) do
21
+ EM.run {
22
+ EM.connect("127.0.0.1", 80, String)
23
+ EM.stop_event_loop
24
+ }
25
+ end
26
+ end
27
+
28
+ def test_with_module
29
+ assert_nothing_raised do
30
+ EM.run {
31
+ EM.connect("127.0.0.1", 80, TestModule)
32
+ EM.stop_event_loop
33
+ }
34
+ end
35
+ end
36
+
37
+ end
@@ -60,7 +60,7 @@ class TestHttpClient2 < Test::Unit::TestCase
60
60
  def test_bad_port
61
61
  EM.run {
62
62
  EM.start_server Localhost, Localport, TestServer
63
- assert_raise( ArgumentError ) {
63
+ assert_raises( ArgumentError ) {
64
64
  EM::P::HttpClient2.connect Localhost, "xxx"
65
65
  }
66
66
  EM.stop
@@ -54,8 +54,8 @@ class TestKeyboardEvents < Test::Unit::TestCase
54
54
  EM.run {
55
55
  EM.open_keyboard KbHandler
56
56
  EM::Timer.new(1) { EM.stop }
57
- }
58
- end if $stdout.tty? # don't run the test unless it stands a chance of validity.
57
+ } if $stdout.tty? # don't run the test unless it stands a chance of validity.
58
+ end
59
59
 
60
60
  end
61
61
 
@@ -68,6 +68,13 @@ class TestNextTick < Test::Unit::TestCase
68
68
  }
69
69
  end
70
70
 
71
+ def test_pre_run_queue
72
+ x = false
73
+ EM.next_tick { EM.stop; x = true }
74
+ EM.run { EM.add_timer(0.2) { EM.stop } }
75
+ assert x
76
+ end
77
+
71
78
  # We now support an additional parameter for EM#run.
72
79
  # You can pass two procs to EM#run now. The first is executed as the normal
73
80
  # run block. The second (if given) is scheduled for execution after the
@@ -52,5 +52,44 @@ class TestProcesses < Test::Unit::TestCase
52
52
  assert( ls.length > 0)
53
53
  end
54
54
 
55
+ def setup
56
+ $out = nil
57
+ $status = nil
58
+ end
59
+
60
+ def test_em_system
61
+ EM.run{
62
+ EM.system('ls'){ |out,status| $out, $status = out, status; EM.stop }
63
+ }
64
+
65
+ assert( $out.length > 0 )
66
+ assert_equal($status.exitstatus, 0)
67
+ assert_equal($status.class, Process::Status)
68
+ end
69
+
70
+ def test_em_system_with_proc
71
+ EM.run{
72
+ EM.system('ls', proc{ |out,status| $out, $status = out, status; EM.stop })
73
+ }
74
+
75
+ assert( $out.length > 0 )
76
+ assert_equal($status.exitstatus, 0)
77
+ assert_equal($status.class, Process::Status)
78
+ end
79
+
80
+ def test_em_system_with_two_procs
81
+ EM.run{
82
+ EM.system('sh', proc{ |process|
83
+ process.send_data("echo hello\n")
84
+ process.send_data("exit\n")
85
+ }, proc{ |out,status|
86
+ $out = out
87
+ $status = status
88
+ EM.stop
89
+ })
90
+ }
91
+
92
+ assert_equal($out, "hello\n")
93
+ end
55
94
  end
56
95
 
@@ -64,11 +64,11 @@ class TestPure < Test::Unit::TestCase
64
64
  }
65
65
  end
66
66
  def test_exception_1
67
- assert_raise( RuntimeError ) { run_exception }
67
+ assert_raises( RuntimeError ) { run_exception }
68
68
  end
69
69
  def test_exception_2
70
70
  ex_class = RUBY_PLATFORM == 'java' ? NativeException : RuntimeError
71
- assert_raise( ex_class ) { run_exception }
71
+ assert_raises( ex_class ) { run_exception }
72
72
  end
73
73
 
74
74
 
@@ -92,7 +92,7 @@ class TestSendFile < Test::Unit::TestCase
92
92
  data = ''
93
93
 
94
94
  ex_class = RUBY_PLATFORM == 'java' ? NativeException : RuntimeError
95
- assert_raise( ex_class ) {
95
+ assert_raises( ex_class ) {
96
96
  EM.run {
97
97
  EM.start_server TestHost, TestPort, TestModule
98
98
  EM.add_timer(2) {EM.stop} # avoid hanging in case of error
@@ -41,13 +41,13 @@ class TestSslArgs < Test::Unit::TestCase
41
41
  # associate_callback_target is a pain! (build!)
42
42
  conn = EventMachine::Connection.new('foo')
43
43
 
44
- assert_raise(EventMachine::FileNotFoundException) do
44
+ assert_raises(EventMachine::FileNotFoundException) do
45
45
  conn.start_tls(:private_key_file => priv_file)
46
46
  end
47
- assert_raise(EventMachine::FileNotFoundException) do
47
+ assert_raises(EventMachine::FileNotFoundException) do
48
48
  conn.start_tls(:cert_chain_file => cert_file)
49
49
  end
50
- assert_raise(EventMachine::FileNotFoundException) do
50
+ assert_raises(EventMachine::FileNotFoundException) do
51
51
  conn.start_tls(:private_key_file => priv_file, :cert_chain_file => cert_file)
52
52
  end
53
53
  end
@@ -0,0 +1,50 @@
1
+ $:.unshift "../lib"
2
+ require 'eventmachine'
3
+ require 'test/unit'
4
+
5
+ class TestSSLMethods < Test::Unit::TestCase
6
+
7
+ module ServerHandler
8
+
9
+ def post_init
10
+ start_tls
11
+ end
12
+
13
+ def ssl_handshake_completed
14
+ $server_called_back = true
15
+ $server_cert_value = get_peer_cert
16
+ end
17
+
18
+ end
19
+
20
+ module ClientHandler
21
+
22
+ def post_init
23
+ start_tls
24
+ end
25
+
26
+ def ssl_handshake_completed
27
+ $client_called_back = true
28
+ $client_cert_value = get_peer_cert
29
+ EM.stop_event_loop
30
+ end
31
+
32
+ end
33
+
34
+ def test_ssl_methods
35
+ $server_called_back, $client_called_back = false, false
36
+ $server_cert_value, $client_cert_value = nil, nil
37
+
38
+ EM.run {
39
+ EM.start_server("127.0.0.1", 9999, ServerHandler)
40
+ EM.connect("127.0.0.1", 9999, ClientHandler)
41
+ }
42
+
43
+ assert($server_called_back)
44
+ assert($client_called_back)
45
+
46
+ assert($server_cert_value.is_a?(NilClass))
47
+ assert($client_cert_value.is_a?(String))
48
+ end
49
+
50
+ end
@@ -122,7 +122,7 @@ class TestTimers < Test::Unit::TestCase
122
122
  ten_thousand_timers.call
123
123
  else
124
124
  begin
125
- assert_raise( RuntimeError ) {
125
+ assert_raises( RuntimeError ) {
126
126
  ten_thousand_timers.call
127
127
  }
128
128
  rescue Object
@@ -134,7 +134,9 @@ class TestTimers < Test::Unit::TestCase
134
134
  }
135
135
 
136
136
  assert(!EM.reactor_running?, 'Reactor running when it should not be.')
137
+ assert( EM.get_max_timers != 10001 )
137
138
  EM.set_max_timers( 10001 )
139
+ assert( EM.get_max_timers == 10001 )
138
140
 
139
141
  EM.run {
140
142
  ten_thousand_timers.call
@@ -0,0 +1,7 @@
1
+ EventMachine is a library for Ruby, C++, and Java programs. It provides event-driven I/O using the Reactor pattern.
2
+
3
+ EventMachine is designed to simultaneously meet two key needs:
4
+ - Extremely high scalability, performance and stability for the most demanding production environments; and
5
+ - An API that <i>eliminates</i> the complexities of high-performance threaded network programming, allowing engineers to concentrate on their application logic.
6
+
7
+ This unique combination makes EventMachine a premier choice for designers of critical networked applications, including web servers and proxies, email and IM production systems, authentication/authorization processors, and many more.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eventmachine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.4
4
+ version: 0.12.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francis Cianfrocca
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-02-08 00:00:00 -08:00
12
+ date: 2009-03-07 23:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -18,7 +18,8 @@ email: garbagecat10@gmail.com
18
18
  executables: []
19
19
 
20
20
  extensions:
21
- - Rakefile
21
+ - ext/extconf.rb
22
+ - ext/fastfilereader/extconf.rb
22
23
  extra_rdoc_files:
23
24
  - docs/ChangeLog
24
25
  - docs/COPYING
@@ -36,67 +37,24 @@ extra_rdoc_files:
36
37
  - docs/SPAWNED_PROCESSES
37
38
  - docs/TODO
38
39
  files:
40
+ - .gitignore
39
41
  - Rakefile
40
- - tests/test_attach.rb
41
- - tests/test_basic.rb
42
- - tests/test_defer.rb
43
- - tests/test_epoll.rb
44
- - tests/test_errors.rb
45
- - tests/test_eventables.rb
46
- - tests/test_exc.rb
47
- - tests/test_futures.rb
48
- - tests/test_hc.rb
49
- - tests/test_httpclient.rb
50
- - tests/test_httpclient2.rb
51
- - tests/test_kb.rb
52
- - tests/test_ltp.rb
53
- - tests/test_ltp2.rb
54
- - tests/test_next_tick.rb
55
- - tests/test_processes.rb
56
- - tests/test_pure.rb
57
- - tests/test_running.rb
58
- - tests/test_sasl.rb
59
- - tests/test_send_file.rb
60
- - tests/test_servers.rb
61
- - tests/test_smtpclient.rb
62
- - tests/test_smtpserver.rb
63
- - tests/test_spawn.rb
64
- - tests/test_ssl_args.rb
65
- - tests/test_timers.rb
66
- - tests/test_ud.rb
67
- - tests/testem.rb
68
- - lib/em
69
- - lib/em/deferrable.rb
70
- - lib/em/eventable.rb
71
- - lib/em/future.rb
72
- - lib/em/messages.rb
73
- - lib/em/processes.rb
74
- - lib/em/spawnable.rb
75
- - lib/em/streamer.rb
76
- - lib/eventmachine.rb
77
- - lib/eventmachine_version.rb
78
- - lib/evma
79
- - lib/evma/callback.rb
80
- - lib/evma/container.rb
81
- - lib/evma/factory.rb
82
- - lib/evma/protocol.rb
83
- - lib/evma/reactor.rb
84
- - lib/evma.rb
85
- - lib/jeventmachine.rb
86
- - lib/pr_eventmachine.rb
87
- - lib/protocols
88
- - lib/protocols/buftok.rb
89
- - lib/protocols/header_and_content.rb
90
- - lib/protocols/httpcli2.rb
91
- - lib/protocols/httpclient.rb
92
- - lib/protocols/line_and_text.rb
93
- - lib/protocols/linetext2.rb
94
- - lib/protocols/postgres.rb
95
- - lib/protocols/saslauth.rb
96
- - lib/protocols/smtpclient.rb
97
- - lib/protocols/smtpserver.rb
98
- - lib/protocols/stomp.rb
99
- - lib/protocols/tcptest.rb
42
+ - docs/COPYING
43
+ - docs/ChangeLog
44
+ - docs/DEFERRABLES
45
+ - docs/EPOLL
46
+ - docs/GNU
47
+ - docs/INSTALL
48
+ - docs/KEYBOARD
49
+ - docs/LEGAL
50
+ - docs/LIGHTWEIGHT_CONCURRENCY
51
+ - docs/PURE_RUBY
52
+ - docs/README
53
+ - docs/RELEASE_NOTES
54
+ - docs/SMTP
55
+ - docs/SPAWNED_PROCESSES
56
+ - docs/TODO
57
+ - eventmachine.gemspec
100
58
  - ext/binder.cpp
101
59
  - ext/binder.h
102
60
  - ext/cmain.cpp
@@ -112,7 +70,6 @@ files:
112
70
  - ext/eventmachine.h
113
71
  - ext/eventmachine_cpp.h
114
72
  - ext/extconf.rb
115
- - ext/fastfilereader
116
73
  - ext/fastfilereader/extconf.rb
117
74
  - ext/fastfilereader/mapper.cpp
118
75
  - ext/fastfilereader/mapper.h
@@ -129,9 +86,8 @@ files:
129
86
  - ext/sigs.h
130
87
  - ext/ssl.cpp
131
88
  - ext/ssl.h
132
- - java/src
133
- - java/src/com
134
- - java/src/com/rubyeventmachine
89
+ - java/.classpath
90
+ - java/.project
135
91
  - java/src/com/rubyeventmachine/Application.java
136
92
  - java/src/com/rubyeventmachine/Connection.java
137
93
  - java/src/com/rubyeventmachine/ConnectionFactory.java
@@ -142,32 +98,80 @@ files:
142
98
  - java/src/com/rubyeventmachine/EventableDatagramChannel.java
143
99
  - java/src/com/rubyeventmachine/EventableSocketChannel.java
144
100
  - java/src/com/rubyeventmachine/PeriodicTimer.java
145
- - java/src/com/rubyeventmachine/tests
101
+ - java/src/com/rubyeventmachine/Timer.java
146
102
  - java/src/com/rubyeventmachine/tests/ApplicationTest.java
147
103
  - java/src/com/rubyeventmachine/tests/ConnectTest.java
148
104
  - java/src/com/rubyeventmachine/tests/EMTest.java
149
105
  - java/src/com/rubyeventmachine/tests/TestDatagrams.java
150
106
  - java/src/com/rubyeventmachine/tests/TestServers.java
151
107
  - java/src/com/rubyeventmachine/tests/TestTimers.java
152
- - java/src/com/rubyeventmachine/Timer.java
108
+ - lib/em/deferrable.rb
109
+ - lib/em/eventable.rb
110
+ - lib/em/future.rb
111
+ - lib/em/messages.rb
112
+ - lib/em/processes.rb
113
+ - lib/em/spawnable.rb
114
+ - lib/em/streamer.rb
115
+ - lib/eventmachine.rb
116
+ - lib/eventmachine_version.rb
117
+ - lib/evma.rb
118
+ - lib/evma/callback.rb
119
+ - lib/evma/container.rb
120
+ - lib/evma/factory.rb
121
+ - lib/evma/protocol.rb
122
+ - lib/evma/reactor.rb
123
+ - lib/jeventmachine.rb
124
+ - lib/pr_eventmachine.rb
125
+ - lib/protocols/buftok.rb
126
+ - lib/protocols/header_and_content.rb
127
+ - lib/protocols/httpcli2.rb
128
+ - lib/protocols/httpclient.rb
129
+ - lib/protocols/line_and_text.rb
130
+ - lib/protocols/linetext2.rb
131
+ - lib/protocols/memcache.rb
132
+ - lib/protocols/postgres.rb
133
+ - lib/protocols/saslauth.rb
134
+ - lib/protocols/smtpclient.rb
135
+ - lib/protocols/smtpserver.rb
136
+ - lib/protocols/stomp.rb
137
+ - lib/protocols/tcptest.rb
138
+ - setup.rb
153
139
  - tasks/cpp.rake
154
140
  - tasks/project.rake
155
141
  - tasks/tests.rake
156
- - docs/ChangeLog
157
- - docs/COPYING
158
- - docs/DEFERRABLES
159
- - docs/EPOLL
160
- - docs/GNU
161
- - docs/INSTALL
162
- - docs/KEYBOARD
163
- - docs/LEGAL
164
- - docs/LIGHTWEIGHT_CONCURRENCY
165
- - docs/PURE_RUBY
166
- - docs/README
167
- - docs/RELEASE_NOTES
168
- - docs/SMTP
169
- - docs/SPAWNED_PROCESSES
170
- - docs/TODO
142
+ - tests/test_attach.rb
143
+ - tests/test_basic.rb
144
+ - tests/test_connection_count.rb
145
+ - tests/test_defer.rb
146
+ - tests/test_epoll.rb
147
+ - tests/test_error_handler.rb
148
+ - tests/test_errors.rb
149
+ - tests/test_eventables.rb
150
+ - tests/test_exc.rb
151
+ - tests/test_futures.rb
152
+ - tests/test_handler_check.rb
153
+ - tests/test_hc.rb
154
+ - tests/test_httpclient.rb
155
+ - tests/test_httpclient2.rb
156
+ - tests/test_kb.rb
157
+ - tests/test_ltp.rb
158
+ - tests/test_ltp2.rb
159
+ - tests/test_next_tick.rb
160
+ - tests/test_processes.rb
161
+ - tests/test_pure.rb
162
+ - tests/test_running.rb
163
+ - tests/test_sasl.rb
164
+ - tests/test_send_file.rb
165
+ - tests/test_servers.rb
166
+ - tests/test_smtpclient.rb
167
+ - tests/test_smtpserver.rb
168
+ - tests/test_spawn.rb
169
+ - tests/test_ssl_args.rb
170
+ - tests/test_ssl_methods.rb
171
+ - tests/test_timers.rb
172
+ - tests/test_ud.rb
173
+ - tests/testem.rb
174
+ - web/whatis
171
175
  has_rdoc: true
172
176
  homepage: http://rubyeventmachine.com
173
177
  post_install_message: