MattHulse-eventmachine 0.0.1

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 (156) hide show
  1. data/.gitignore +14 -0
  2. data/README +82 -0
  3. data/Rakefile +279 -0
  4. data/docs/COPYING +60 -0
  5. data/docs/ChangeLog +211 -0
  6. data/docs/DEFERRABLES +133 -0
  7. data/docs/EPOLL +141 -0
  8. data/docs/GNU +281 -0
  9. data/docs/INSTALL +13 -0
  10. data/docs/KEYBOARD +38 -0
  11. data/docs/LEGAL +25 -0
  12. data/docs/LIGHTWEIGHT_CONCURRENCY +70 -0
  13. data/docs/PURE_RUBY +75 -0
  14. data/docs/RELEASE_NOTES +94 -0
  15. data/docs/SMTP +2 -0
  16. data/docs/SPAWNED_PROCESSES +89 -0
  17. data/docs/TODO +8 -0
  18. data/eventmachine.gemspec +41 -0
  19. data/examples/ex_channel.rb +43 -0
  20. data/examples/ex_queue.rb +2 -0
  21. data/examples/helper.rb +2 -0
  22. data/ext/binder.cpp +125 -0
  23. data/ext/binder.h +46 -0
  24. data/ext/cmain.cpp +821 -0
  25. data/ext/cplusplus.cpp +202 -0
  26. data/ext/ed.cpp +1868 -0
  27. data/ext/ed.h +416 -0
  28. data/ext/em.cpp +2270 -0
  29. data/ext/em.h +228 -0
  30. data/ext/emwin.cpp +300 -0
  31. data/ext/emwin.h +94 -0
  32. data/ext/epoll.cpp +26 -0
  33. data/ext/epoll.h +25 -0
  34. data/ext/eventmachine.h +122 -0
  35. data/ext/eventmachine_cpp.h +96 -0
  36. data/ext/extconf.rb +138 -0
  37. data/ext/fastfilereader/extconf.rb +84 -0
  38. data/ext/fastfilereader/mapper.cpp +214 -0
  39. data/ext/fastfilereader/mapper.h +59 -0
  40. data/ext/fastfilereader/rubymain.cpp +127 -0
  41. data/ext/files.cpp +94 -0
  42. data/ext/files.h +65 -0
  43. data/ext/kb.cpp +81 -0
  44. data/ext/page.cpp +107 -0
  45. data/ext/page.h +51 -0
  46. data/ext/pipe.cpp +349 -0
  47. data/ext/project.h +147 -0
  48. data/ext/rubymain.cpp +1152 -0
  49. data/ext/sigs.cpp +89 -0
  50. data/ext/sigs.h +32 -0
  51. data/ext/ssl.cpp +460 -0
  52. data/ext/ssl.h +94 -0
  53. data/java/.classpath +8 -0
  54. data/java/.project +17 -0
  55. data/java/src/com/rubyeventmachine/Application.java +192 -0
  56. data/java/src/com/rubyeventmachine/Connection.java +74 -0
  57. data/java/src/com/rubyeventmachine/ConnectionFactory.java +37 -0
  58. data/java/src/com/rubyeventmachine/DefaultConnectionFactory.java +46 -0
  59. data/java/src/com/rubyeventmachine/EmReactor.java +557 -0
  60. data/java/src/com/rubyeventmachine/EmReactorException.java +40 -0
  61. data/java/src/com/rubyeventmachine/EventableChannel.java +69 -0
  62. data/java/src/com/rubyeventmachine/EventableDatagramChannel.java +189 -0
  63. data/java/src/com/rubyeventmachine/EventableSocketChannel.java +364 -0
  64. data/java/src/com/rubyeventmachine/PeriodicTimer.java +38 -0
  65. data/java/src/com/rubyeventmachine/Timer.java +54 -0
  66. data/java/src/com/rubyeventmachine/tests/ApplicationTest.java +108 -0
  67. data/java/src/com/rubyeventmachine/tests/ConnectTest.java +146 -0
  68. data/java/src/com/rubyeventmachine/tests/EMTest.java +80 -0
  69. data/java/src/com/rubyeventmachine/tests/TestDatagrams.java +53 -0
  70. data/java/src/com/rubyeventmachine/tests/TestServers.java +74 -0
  71. data/java/src/com/rubyeventmachine/tests/TestTimers.java +89 -0
  72. data/lib/em/buftok.rb +138 -0
  73. data/lib/em/callback.rb +26 -0
  74. data/lib/em/channel.rb +57 -0
  75. data/lib/em/connection.rb +564 -0
  76. data/lib/em/deferrable.rb +187 -0
  77. data/lib/em/file_watch.rb +54 -0
  78. data/lib/em/future.rb +61 -0
  79. data/lib/em/messages.rb +66 -0
  80. data/lib/em/process_watch.rb +44 -0
  81. data/lib/em/processes.rb +119 -0
  82. data/lib/em/protocols.rb +35 -0
  83. data/lib/em/protocols/header_and_content.rb +138 -0
  84. data/lib/em/protocols/httpclient.rb +263 -0
  85. data/lib/em/protocols/httpclient2.rb +582 -0
  86. data/lib/em/protocols/line_and_text.rb +126 -0
  87. data/lib/em/protocols/linetext2.rb +160 -0
  88. data/lib/em/protocols/memcache.rb +323 -0
  89. data/lib/em/protocols/object_protocol.rb +45 -0
  90. data/lib/em/protocols/postgres3.rb +247 -0
  91. data/lib/em/protocols/saslauth.rb +175 -0
  92. data/lib/em/protocols/smtpclient.rb +350 -0
  93. data/lib/em/protocols/smtpserver.rb +547 -0
  94. data/lib/em/protocols/stomp.rb +200 -0
  95. data/lib/em/protocols/tcptest.rb +53 -0
  96. data/lib/em/queue.rb +61 -0
  97. data/lib/em/spawnable.rb +85 -0
  98. data/lib/em/streamer.rb +130 -0
  99. data/lib/em/timers.rb +55 -0
  100. data/lib/em/version.rb +3 -0
  101. data/lib/eventmachine.rb +1698 -0
  102. data/lib/evma.rb +32 -0
  103. data/lib/evma/callback.rb +32 -0
  104. data/lib/evma/container.rb +75 -0
  105. data/lib/evma/factory.rb +77 -0
  106. data/lib/evma/protocol.rb +87 -0
  107. data/lib/evma/reactor.rb +48 -0
  108. data/lib/jeventmachine.rb +246 -0
  109. data/lib/pr_eventmachine.rb +1022 -0
  110. data/setup.rb +1585 -0
  111. data/tasks/cpp.rake +77 -0
  112. data/tasks/project.rake +79 -0
  113. data/tasks/tests.rake +193 -0
  114. data/tests/client.crt +31 -0
  115. data/tests/client.key +51 -0
  116. data/tests/test_attach.rb +126 -0
  117. data/tests/test_basic.rb +284 -0
  118. data/tests/test_channel.rb +63 -0
  119. data/tests/test_connection_count.rb +35 -0
  120. data/tests/test_defer.rb +47 -0
  121. data/tests/test_epoll.rb +160 -0
  122. data/tests/test_error_handler.rb +35 -0
  123. data/tests/test_errors.rb +82 -0
  124. data/tests/test_exc.rb +55 -0
  125. data/tests/test_file_watch.rb +49 -0
  126. data/tests/test_futures.rb +198 -0
  127. data/tests/test_handler_check.rb +37 -0
  128. data/tests/test_hc.rb +218 -0
  129. data/tests/test_httpclient.rb +218 -0
  130. data/tests/test_httpclient2.rb +153 -0
  131. data/tests/test_inactivity_timeout.rb +50 -0
  132. data/tests/test_kb.rb +60 -0
  133. data/tests/test_ltp.rb +182 -0
  134. data/tests/test_ltp2.rb +317 -0
  135. data/tests/test_next_tick.rb +133 -0
  136. data/tests/test_object_protocol.rb +37 -0
  137. data/tests/test_process_watch.rb +48 -0
  138. data/tests/test_processes.rb +128 -0
  139. data/tests/test_proxy_connection.rb +92 -0
  140. data/tests/test_pure.rb +125 -0
  141. data/tests/test_queue.rb +44 -0
  142. data/tests/test_running.rb +42 -0
  143. data/tests/test_sasl.rb +72 -0
  144. data/tests/test_send_file.rb +242 -0
  145. data/tests/test_servers.rb +76 -0
  146. data/tests/test_smtpclient.rb +83 -0
  147. data/tests/test_smtpserver.rb +85 -0
  148. data/tests/test_spawn.rb +322 -0
  149. data/tests/test_ssl_args.rb +68 -0
  150. data/tests/test_ssl_methods.rb +50 -0
  151. data/tests/test_ssl_verify.rb +82 -0
  152. data/tests/test_timers.rb +162 -0
  153. data/tests/test_ud.rb +36 -0
  154. data/tests/testem.rb +31 -0
  155. data/web/whatis +7 -0
  156. metadata +223 -0
@@ -0,0 +1,68 @@
1
+ require "test/unit"
2
+ require 'tempfile'
3
+
4
+ $:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
5
+ require "eventmachine"
6
+
7
+ module EventMachine
8
+ def self._set_mocks
9
+ class <<self
10
+ alias set_tls_parms_old set_tls_parms
11
+ alias start_tls_old start_tls
12
+ def set_tls_parms *args; end
13
+ def start_tls *args; end
14
+ end
15
+ end
16
+
17
+ def self._clear_mocks
18
+ class <<self
19
+ alias set_tls_parms set_tls_parms_old
20
+ alias start_tls start_tls_old
21
+ end
22
+ end
23
+ end
24
+
25
+
26
+ class TestSslArgs < Test::Unit::TestCase
27
+ def setup
28
+ EventMachine._set_mocks
29
+ end
30
+
31
+ def teardown
32
+ EventMachine._clear_mocks
33
+ end
34
+
35
+ def test_tls_params_file_doesnt_exist
36
+ priv_file, cert_file = 'foo_priv_key', 'bar_cert_file'
37
+ [priv_file, cert_file].all? do |f|
38
+ assert(!File.exists?(f), "Cert file #{f} seems to exist, and should not for the tests")
39
+ end
40
+
41
+ # associate_callback_target is a pain! (build!)
42
+ conn = EventMachine::Connection.new('foo')
43
+
44
+ assert_raises(EventMachine::FileNotFoundException) do
45
+ conn.start_tls(:private_key_file => priv_file)
46
+ end
47
+ assert_raises(EventMachine::FileNotFoundException) do
48
+ conn.start_tls(:cert_chain_file => cert_file)
49
+ end
50
+ assert_raises(EventMachine::FileNotFoundException) do
51
+ conn.start_tls(:private_key_file => priv_file, :cert_chain_file => cert_file)
52
+ end
53
+ end
54
+
55
+ def test_tls_params_file_does_exist
56
+ priv_file = Tempfile.new('em_test')
57
+ cert_file = Tempfile.new('em_test')
58
+ priv_file_path = priv_file.path
59
+ cert_file_path = cert_file.path
60
+ conn = EventMachine::Connection.new('foo')
61
+ params = {:private_key_file => priv_file_path, :cert_chain_file => cert_file_path}
62
+ begin
63
+ conn.start_tls params
64
+ rescue Object
65
+ assert(false, 'should not have raised an exception')
66
+ end
67
+ end
68
+ end if EM.ssl?
@@ -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 if EM.ssl?
@@ -0,0 +1,82 @@
1
+ $:.unshift "../lib"
2
+ require 'eventmachine'
3
+ require 'test/unit'
4
+
5
+ class TestSslVerify < Test::Unit::TestCase
6
+
7
+ def setup
8
+ $dir = File.dirname(File.expand_path(__FILE__)) + '/'
9
+ $cert_from_file = File.read($dir+'client.crt')
10
+ end
11
+
12
+ module Client
13
+ def connection_completed
14
+ start_tls(:private_key_file => $dir+'client.key', :cert_chain_file => $dir+'client.crt')
15
+ end
16
+
17
+ def ssl_handshake_completed
18
+ $client_handshake_completed = true
19
+ close_connection
20
+ end
21
+
22
+ def unbind
23
+ EM.stop_event_loop
24
+ end
25
+ end
26
+
27
+ module AcceptServer
28
+ def post_init
29
+ start_tls(:verify_peer => true)
30
+ end
31
+
32
+ def ssl_verify_peer(cert)
33
+ $cert_from_server = cert
34
+ true
35
+ end
36
+
37
+ def ssl_handshake_completed
38
+ $server_handshake_completed = true
39
+ end
40
+ end
41
+
42
+ module DenyServer
43
+ def post_init
44
+ start_tls(:verify_peer => true)
45
+ end
46
+
47
+ def ssl_verify_peer(cert)
48
+ $cert_from_server = cert
49
+ # Do not accept the peer. This should now cause the connection to shut down without the SSL handshake being completed.
50
+ false
51
+ end
52
+
53
+ def ssl_handshake_completed
54
+ $server_handshake_completed = true
55
+ end
56
+ end
57
+
58
+ def test_accept_server
59
+ $client_handshake_completed, $server_handshake_completed = false, false
60
+ EM.run {
61
+ EM.start_server("127.0.0.1", 16784, AcceptServer)
62
+ EM.connect("127.0.0.1", 16784, Client).instance_variable_get("@signature")
63
+ }
64
+
65
+ assert_equal($cert_from_file, $cert_from_server)
66
+ assert($client_handshake_completed)
67
+ assert($server_handshake_completed)
68
+ end
69
+
70
+ def test_deny_server
71
+ $client_handshake_completed, $server_handshake_completed = false, false
72
+ EM.run {
73
+ EM.start_server("127.0.0.1", 16784, DenyServer)
74
+ EM.connect("127.0.0.1", 16784, Client)
75
+ }
76
+
77
+ assert_equal($cert_from_file, $cert_from_server)
78
+ assert(!$client_handshake_completed)
79
+ assert(!$server_handshake_completed)
80
+ end
81
+
82
+ end
@@ -0,0 +1,162 @@
1
+ # $Id$
2
+ #
3
+ # Author:: Francis Cianfrocca (gmail: blackhedd)
4
+ # Homepage:: http://rubyeventmachine.com
5
+ # Date:: 8 April 2006
6
+ #
7
+ # See EventMachine and EventMachine::Connection for documentation and
8
+ # usage examples.
9
+ #
10
+ #----------------------------------------------------------------------------
11
+ #
12
+ # Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
13
+ # Gmail: blackhedd
14
+ #
15
+ # This program is free software; you can redistribute it and/or modify
16
+ # it under the terms of either: 1) the GNU General Public License
17
+ # as published by the Free Software Foundation; either version 2 of the
18
+ # License, or (at your option) any later version; or 2) Ruby's License.
19
+ #
20
+ # See the file COPYING for complete licensing information.
21
+ #
22
+ #---------------------------------------------------------------------------
23
+ #
24
+ #
25
+ #
26
+ #
27
+
28
+ $:.unshift "../lib"
29
+ require 'eventmachine'
30
+ require 'test/unit'
31
+
32
+ class TestTimers < Test::Unit::TestCase
33
+
34
+ def test_timer_with_block
35
+ x = false
36
+ EventMachine.run {
37
+ EventMachine::Timer.new(0.25) {
38
+ x = true
39
+ EventMachine.stop
40
+ }
41
+ }
42
+ assert x
43
+ end
44
+
45
+ def test_timer_with_proc
46
+ x = false
47
+ EventMachine.run {
48
+ EventMachine::Timer.new(0.25, proc {
49
+ x = true
50
+ EventMachine.stop
51
+ })
52
+ }
53
+ assert x
54
+ end
55
+
56
+ def test_timer_cancel
57
+ x = true
58
+ EventMachine.run {
59
+ timer = EventMachine::Timer.new(0.25, proc { x = false })
60
+ timer.cancel
61
+ EventMachine::Timer.new(0.5, proc {EventMachine.stop})
62
+ }
63
+ assert x
64
+ end
65
+
66
+ def test_periodic_timer
67
+ x = 0
68
+ EventMachine.run {
69
+ EventMachine::PeriodicTimer.new(0.1) do
70
+ x += 1
71
+ EventMachine.stop if x == 4
72
+ end
73
+ }
74
+ assert( x == 4 )
75
+ end
76
+
77
+ def test_add_periodic_timer
78
+ x = 0
79
+ EM.run {
80
+ t = EM.add_periodic_timer(0.1) do
81
+ x += 1
82
+ EM.stop if x == 4
83
+ end
84
+ assert t.respond_to?(:cancel)
85
+ }
86
+ end
87
+
88
+ def test_periodic_timer_cancel
89
+ x = 0
90
+ EventMachine.run {
91
+ pt = EventMachine::PeriodicTimer.new(0.25, proc { x += 1 })
92
+ pt.cancel
93
+ EventMachine::Timer.new(0.5) {EventMachine.stop}
94
+ }
95
+ assert( x == 0 )
96
+ end
97
+
98
+ def test_add_periodic_timer_cancel
99
+ x = 0
100
+ EventMachine.run {
101
+ pt = EM.add_periodic_timer(0.25) { x += 1 }
102
+ EM.cancel_timer(pt)
103
+ EM.add_timer(0.5) { EM.stop }
104
+ }
105
+ assert( x == 0 )
106
+ end
107
+
108
+ def test_periodic_timer_self_cancel
109
+ x = 0
110
+ EventMachine.run {
111
+ pt = EventMachine::PeriodicTimer.new(0.1) {
112
+ x += 1
113
+ if x == 4
114
+ pt.cancel
115
+ EventMachine.stop
116
+ end
117
+ }
118
+ }
119
+ assert( x == 4 )
120
+ end
121
+
122
+
123
+ # This test is only applicable to compiled versions of the reactor.
124
+ # Pure ruby and java versions have no built-in limit on the number of outstanding timers.
125
+ #
126
+ def test_timer_change_max_outstanding
127
+ ten_thousand_timers = proc {
128
+ 10001.times {
129
+ EM.add_timer(5) {}
130
+ }
131
+ }
132
+
133
+ EM.run {
134
+ if EM.library_type == :pure_ruby
135
+ ten_thousand_timers.call
136
+ elsif EM.library_type == :java
137
+ ten_thousand_timers.call
138
+ else
139
+ begin
140
+ assert_raises( RuntimeError ) {
141
+ ten_thousand_timers.call
142
+ }
143
+ rescue Object
144
+ p $!
145
+ assert(false, $!.message)
146
+ end
147
+ end
148
+ EM.stop
149
+ }
150
+
151
+ assert(!EM.reactor_running?, 'Reactor running when it should not be.')
152
+ assert( EM.get_max_timers != 10001 )
153
+ EM.set_max_timers( 10001 )
154
+ assert( EM.get_max_timers == 10001 )
155
+
156
+ EM.run {
157
+ ten_thousand_timers.call
158
+ EM.stop
159
+ }
160
+ end
161
+
162
+ end
data/tests/test_ud.rb ADDED
@@ -0,0 +1,36 @@
1
+ # $Id$
2
+ #
3
+ # Author:: Francis Cianfrocca (gmail: blackhedd)
4
+ # Homepage:: http://rubyeventmachine.com
5
+ # Date:: 8 April 2006
6
+ #
7
+ # See EventMachine and EventMachine::Connection for documentation and
8
+ # usage examples.
9
+ #
10
+ #----------------------------------------------------------------------------
11
+ #
12
+ # Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
13
+ # Gmail: blackhedd
14
+ #
15
+ # This program is free software; you can redistribute it and/or modify
16
+ # it under the terms of either: 1) the GNU General Public License
17
+ # as published by the Free Software Foundation; either version 2 of the
18
+ # License, or (at your option) any later version; or 2) Ruby's License.
19
+ #
20
+ # See the file COPYING for complete licensing information.
21
+ #
22
+ #---------------------------------------------------------------------------
23
+ #
24
+ #
25
+ #
26
+
27
+ $:.unshift "../lib"
28
+ require 'eventmachine'
29
+ require 'test/unit'
30
+
31
+ class TestUserDefinedEvents < Test::Unit::TestCase
32
+
33
+ def test_a
34
+ end
35
+
36
+ end
data/tests/testem.rb ADDED
@@ -0,0 +1,31 @@
1
+ # $Id$
2
+
3
+ require 'test/unit'
4
+
5
+ module EmTestRunner
6
+ @em_root = File.expand_path(File.dirname(__FILE__) + '/../')
7
+ @lib_dir = File.join(@em_root, 'lib')
8
+ @ext_dir = File.join(@em_root, 'ext')
9
+ @java_dir = File.join(@em_root, 'java')
10
+
11
+ def self.run(glob = 'test_*.rb')
12
+ $:.unshift(@lib_dir)
13
+ $:.unshift(@ext_dir)
14
+ $:.unshift(@java_dir)
15
+
16
+ case glob
17
+ when Array
18
+ files = glob
19
+ else
20
+ files = Dir[File.dirname(__FILE__) + '/' + glob]
21
+ end
22
+
23
+ files.each do |tc|
24
+ require tc
25
+ end
26
+ end
27
+ end
28
+
29
+ if __FILE__ == $0
30
+ EmTestRunner.run
31
+ end
data/web/whatis ADDED
@@ -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 ADDED
@@ -0,0 +1,223 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: MattHulse-eventmachine
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Francis Cianfrocca
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-05-22 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: EventMachine implements a fast, single-threaded engine for arbitrary network communications. It's extremely easy to use in Ruby. EventMachine wraps all interactions with IP sockets, allowing programs to concentrate on the implementation of network protocols. It can be used to create both network servers and clients. To create a server or client, a Ruby program only needs to specify the IP address and port, and provide a Module that implements the communications protocol. Implementations of several standard network protocols are provided with the package, primarily to serve as examples. The real goal of EventMachine is to enable programs to easily interface with other programs using TCP/IP, especially if custom protocols are required.
17
+ email: garbagecat10@gmail.com
18
+ executables: []
19
+
20
+ extensions:
21
+ - ext/extconf.rb
22
+ - ext/fastfilereader/extconf.rb
23
+ extra_rdoc_files: []
24
+
25
+ files:
26
+ - .gitignore
27
+ - README
28
+ - Rakefile
29
+ - docs/COPYING
30
+ - docs/ChangeLog
31
+ - docs/DEFERRABLES
32
+ - docs/EPOLL
33
+ - docs/GNU
34
+ - docs/INSTALL
35
+ - docs/KEYBOARD
36
+ - docs/LEGAL
37
+ - docs/LIGHTWEIGHT_CONCURRENCY
38
+ - docs/PURE_RUBY
39
+ - docs/RELEASE_NOTES
40
+ - docs/SMTP
41
+ - docs/SPAWNED_PROCESSES
42
+ - docs/TODO
43
+ - eventmachine.gemspec
44
+ - examples/ex_channel.rb
45
+ - examples/ex_queue.rb
46
+ - examples/helper.rb
47
+ - ext/binder.cpp
48
+ - ext/binder.h
49
+ - ext/cmain.cpp
50
+ - ext/cplusplus.cpp
51
+ - ext/ed.cpp
52
+ - ext/ed.h
53
+ - ext/em.cpp
54
+ - ext/em.h
55
+ - ext/emwin.cpp
56
+ - ext/emwin.h
57
+ - ext/epoll.cpp
58
+ - ext/epoll.h
59
+ - ext/eventmachine.h
60
+ - ext/eventmachine_cpp.h
61
+ - ext/extconf.rb
62
+ - ext/fastfilereader/extconf.rb
63
+ - ext/fastfilereader/mapper.cpp
64
+ - ext/fastfilereader/mapper.h
65
+ - ext/fastfilereader/rubymain.cpp
66
+ - ext/files.cpp
67
+ - ext/files.h
68
+ - ext/kb.cpp
69
+ - ext/page.cpp
70
+ - ext/page.h
71
+ - ext/pipe.cpp
72
+ - ext/project.h
73
+ - ext/rubymain.cpp
74
+ - ext/sigs.cpp
75
+ - ext/sigs.h
76
+ - ext/ssl.cpp
77
+ - ext/ssl.h
78
+ - java/.classpath
79
+ - java/.project
80
+ - java/src/com/rubyeventmachine/Application.java
81
+ - java/src/com/rubyeventmachine/Connection.java
82
+ - java/src/com/rubyeventmachine/ConnectionFactory.java
83
+ - java/src/com/rubyeventmachine/DefaultConnectionFactory.java
84
+ - java/src/com/rubyeventmachine/EmReactor.java
85
+ - java/src/com/rubyeventmachine/EmReactorException.java
86
+ - java/src/com/rubyeventmachine/EventableChannel.java
87
+ - java/src/com/rubyeventmachine/EventableDatagramChannel.java
88
+ - java/src/com/rubyeventmachine/EventableSocketChannel.java
89
+ - java/src/com/rubyeventmachine/PeriodicTimer.java
90
+ - java/src/com/rubyeventmachine/Timer.java
91
+ - java/src/com/rubyeventmachine/tests/ApplicationTest.java
92
+ - java/src/com/rubyeventmachine/tests/ConnectTest.java
93
+ - java/src/com/rubyeventmachine/tests/EMTest.java
94
+ - java/src/com/rubyeventmachine/tests/TestDatagrams.java
95
+ - java/src/com/rubyeventmachine/tests/TestServers.java
96
+ - java/src/com/rubyeventmachine/tests/TestTimers.java
97
+ - lib/em/buftok.rb
98
+ - lib/em/callback.rb
99
+ - lib/em/channel.rb
100
+ - lib/em/connection.rb
101
+ - lib/em/deferrable.rb
102
+ - lib/em/file_watch.rb
103
+ - lib/em/future.rb
104
+ - lib/em/messages.rb
105
+ - lib/em/process_watch.rb
106
+ - lib/em/processes.rb
107
+ - lib/em/protocols.rb
108
+ - lib/em/protocols/header_and_content.rb
109
+ - lib/em/protocols/httpclient.rb
110
+ - lib/em/protocols/httpclient2.rb
111
+ - lib/em/protocols/line_and_text.rb
112
+ - lib/em/protocols/linetext2.rb
113
+ - lib/em/protocols/memcache.rb
114
+ - lib/em/protocols/object_protocol.rb
115
+ - lib/em/protocols/postgres3.rb
116
+ - lib/em/protocols/saslauth.rb
117
+ - lib/em/protocols/smtpclient.rb
118
+ - lib/em/protocols/smtpserver.rb
119
+ - lib/em/protocols/stomp.rb
120
+ - lib/em/protocols/tcptest.rb
121
+ - lib/em/queue.rb
122
+ - lib/em/spawnable.rb
123
+ - lib/em/streamer.rb
124
+ - lib/em/timers.rb
125
+ - lib/em/version.rb
126
+ - lib/eventmachine.rb
127
+ - lib/evma.rb
128
+ - lib/evma/callback.rb
129
+ - lib/evma/container.rb
130
+ - lib/evma/factory.rb
131
+ - lib/evma/protocol.rb
132
+ - lib/evma/reactor.rb
133
+ - lib/jeventmachine.rb
134
+ - lib/pr_eventmachine.rb
135
+ - setup.rb
136
+ - tasks/cpp.rake
137
+ - tasks/project.rake
138
+ - tasks/tests.rake
139
+ - tests/client.crt
140
+ - tests/client.key
141
+ - tests/test_attach.rb
142
+ - tests/test_basic.rb
143
+ - tests/test_channel.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_exc.rb
150
+ - tests/test_file_watch.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_inactivity_timeout.rb
157
+ - tests/test_kb.rb
158
+ - tests/test_ltp.rb
159
+ - tests/test_ltp2.rb
160
+ - tests/test_next_tick.rb
161
+ - tests/test_object_protocol.rb
162
+ - tests/test_process_watch.rb
163
+ - tests/test_processes.rb
164
+ - tests/test_proxy_connection.rb
165
+ - tests/test_pure.rb
166
+ - tests/test_queue.rb
167
+ - tests/test_running.rb
168
+ - tests/test_sasl.rb
169
+ - tests/test_send_file.rb
170
+ - tests/test_servers.rb
171
+ - tests/test_smtpclient.rb
172
+ - tests/test_smtpserver.rb
173
+ - tests/test_spawn.rb
174
+ - tests/test_ssl_args.rb
175
+ - tests/test_ssl_methods.rb
176
+ - tests/test_ssl_verify.rb
177
+ - tests/test_timers.rb
178
+ - tests/test_ud.rb
179
+ - tests/testem.rb
180
+ - web/whatis
181
+ has_rdoc: true
182
+ homepage: http://rubyeventmachine.com
183
+ licenses:
184
+ post_install_message:
185
+ rdoc_options:
186
+ - --title
187
+ - EventMachine
188
+ - --main
189
+ - README
190
+ - --line-numbers
191
+ - -x
192
+ - lib/em/version
193
+ - -x
194
+ - lib/emva
195
+ - -x
196
+ - lib/evma/
197
+ - -x
198
+ - lib/pr_eventmachine
199
+ - -x
200
+ - lib/jeventmachine
201
+ require_paths:
202
+ - lib
203
+ required_ruby_version: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: "0"
208
+ version:
209
+ required_rubygems_version: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: "0"
214
+ version:
215
+ requirements: []
216
+
217
+ rubyforge_project: eventmachine
218
+ rubygems_version: 1.3.5
219
+ signing_key:
220
+ specification_version: 3
221
+ summary: Ruby/EventMachine library
222
+ test_files: []
223
+