eventmachine 0.12.4 → 0.12.6

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.
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: