eventmachine 0.12.6-java

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 (136) hide show
  1. data/.gitignore +13 -0
  2. data/Rakefile +262 -0
  3. data/docs/COPYING +60 -0
  4. data/docs/ChangeLog +211 -0
  5. data/docs/DEFERRABLES +138 -0
  6. data/docs/EPOLL +141 -0
  7. data/docs/GNU +281 -0
  8. data/docs/INSTALL +15 -0
  9. data/docs/KEYBOARD +38 -0
  10. data/docs/LEGAL +25 -0
  11. data/docs/LIGHTWEIGHT_CONCURRENCY +72 -0
  12. data/docs/PURE_RUBY +77 -0
  13. data/docs/README +74 -0
  14. data/docs/RELEASE_NOTES +96 -0
  15. data/docs/SMTP +9 -0
  16. data/docs/SPAWNED_PROCESSES +93 -0
  17. data/docs/TODO +10 -0
  18. data/eventmachine.gemspec +32 -0
  19. data/ext/binder.cpp +126 -0
  20. data/ext/binder.h +48 -0
  21. data/ext/cmain.cpp +586 -0
  22. data/ext/cplusplus.cpp +193 -0
  23. data/ext/ed.cpp +1522 -0
  24. data/ext/ed.h +380 -0
  25. data/ext/em.cpp +1937 -0
  26. data/ext/em.h +186 -0
  27. data/ext/emwin.cpp +300 -0
  28. data/ext/emwin.h +94 -0
  29. data/ext/epoll.cpp +26 -0
  30. data/ext/epoll.h +25 -0
  31. data/ext/eventmachine.h +98 -0
  32. data/ext/eventmachine_cpp.h +95 -0
  33. data/ext/extconf.rb +129 -0
  34. data/ext/fastfilereader/extconf.rb +77 -0
  35. data/ext/fastfilereader/mapper.cpp +214 -0
  36. data/ext/fastfilereader/mapper.h +59 -0
  37. data/ext/fastfilereader/rubymain.cpp +127 -0
  38. data/ext/files.cpp +94 -0
  39. data/ext/files.h +65 -0
  40. data/ext/kb.cpp +82 -0
  41. data/ext/page.cpp +107 -0
  42. data/ext/page.h +51 -0
  43. data/ext/pipe.cpp +351 -0
  44. data/ext/project.h +119 -0
  45. data/ext/rubymain.cpp +847 -0
  46. data/ext/sigs.cpp +89 -0
  47. data/ext/sigs.h +32 -0
  48. data/ext/ssl.cpp +423 -0
  49. data/ext/ssl.h +90 -0
  50. data/java/.classpath +8 -0
  51. data/java/.project +17 -0
  52. data/java/src/com/rubyeventmachine/Application.java +196 -0
  53. data/java/src/com/rubyeventmachine/Connection.java +74 -0
  54. data/java/src/com/rubyeventmachine/ConnectionFactory.java +37 -0
  55. data/java/src/com/rubyeventmachine/DefaultConnectionFactory.java +46 -0
  56. data/java/src/com/rubyeventmachine/EmReactor.java +408 -0
  57. data/java/src/com/rubyeventmachine/EmReactorException.java +40 -0
  58. data/java/src/com/rubyeventmachine/EventableChannel.java +57 -0
  59. data/java/src/com/rubyeventmachine/EventableDatagramChannel.java +171 -0
  60. data/java/src/com/rubyeventmachine/EventableSocketChannel.java +244 -0
  61. data/java/src/com/rubyeventmachine/PeriodicTimer.java +38 -0
  62. data/java/src/com/rubyeventmachine/Timer.java +54 -0
  63. data/java/src/com/rubyeventmachine/tests/ApplicationTest.java +108 -0
  64. data/java/src/com/rubyeventmachine/tests/ConnectTest.java +124 -0
  65. data/java/src/com/rubyeventmachine/tests/EMTest.java +80 -0
  66. data/java/src/com/rubyeventmachine/tests/TestDatagrams.java +53 -0
  67. data/java/src/com/rubyeventmachine/tests/TestServers.java +74 -0
  68. data/java/src/com/rubyeventmachine/tests/TestTimers.java +89 -0
  69. data/lib/em/deferrable.rb +208 -0
  70. data/lib/em/eventable.rb +39 -0
  71. data/lib/em/future.rb +62 -0
  72. data/lib/em/messages.rb +66 -0
  73. data/lib/em/processes.rb +113 -0
  74. data/lib/em/spawnable.rb +88 -0
  75. data/lib/em/streamer.rb +112 -0
  76. data/lib/eventmachine.rb +1926 -0
  77. data/lib/eventmachine_version.rb +31 -0
  78. data/lib/evma.rb +32 -0
  79. data/lib/evma/callback.rb +32 -0
  80. data/lib/evma/container.rb +75 -0
  81. data/lib/evma/factory.rb +77 -0
  82. data/lib/evma/protocol.rb +87 -0
  83. data/lib/evma/reactor.rb +48 -0
  84. data/lib/jeventmachine.rb +137 -0
  85. data/lib/pr_eventmachine.rb +1011 -0
  86. data/lib/protocols/buftok.rb +127 -0
  87. data/lib/protocols/header_and_content.rb +129 -0
  88. data/lib/protocols/httpcli2.rb +803 -0
  89. data/lib/protocols/httpclient.rb +270 -0
  90. data/lib/protocols/line_and_text.rb +126 -0
  91. data/lib/protocols/linetext2.rb +161 -0
  92. data/lib/protocols/memcache.rb +293 -0
  93. data/lib/protocols/postgres.rb +261 -0
  94. data/lib/protocols/saslauth.rb +179 -0
  95. data/lib/protocols/smtpclient.rb +308 -0
  96. data/lib/protocols/smtpserver.rb +556 -0
  97. data/lib/protocols/stomp.rb +153 -0
  98. data/lib/protocols/tcptest.rb +57 -0
  99. data/setup.rb +1585 -0
  100. data/tasks/cpp.rake +77 -0
  101. data/tasks/project.rake +78 -0
  102. data/tasks/tests.rake +193 -0
  103. data/tests/test_attach.rb +83 -0
  104. data/tests/test_basic.rb +231 -0
  105. data/tests/test_connection_count.rb +45 -0
  106. data/tests/test_defer.rb +47 -0
  107. data/tests/test_epoll.rb +163 -0
  108. data/tests/test_error_handler.rb +35 -0
  109. data/tests/test_errors.rb +82 -0
  110. data/tests/test_eventables.rb +77 -0
  111. data/tests/test_exc.rb +58 -0
  112. data/tests/test_futures.rb +214 -0
  113. data/tests/test_handler_check.rb +37 -0
  114. data/tests/test_hc.rb +218 -0
  115. data/tests/test_httpclient.rb +215 -0
  116. data/tests/test_httpclient2.rb +155 -0
  117. data/tests/test_kb.rb +61 -0
  118. data/tests/test_ltp.rb +188 -0
  119. data/tests/test_ltp2.rb +320 -0
  120. data/tests/test_next_tick.rb +109 -0
  121. data/tests/test_processes.rb +95 -0
  122. data/tests/test_pure.rb +129 -0
  123. data/tests/test_running.rb +47 -0
  124. data/tests/test_sasl.rb +74 -0
  125. data/tests/test_send_file.rb +243 -0
  126. data/tests/test_servers.rb +80 -0
  127. data/tests/test_smtpclient.rb +83 -0
  128. data/tests/test_smtpserver.rb +93 -0
  129. data/tests/test_spawn.rb +329 -0
  130. data/tests/test_ssl_args.rb +68 -0
  131. data/tests/test_ssl_methods.rb +50 -0
  132. data/tests/test_timers.rb +148 -0
  133. data/tests/test_ud.rb +43 -0
  134. data/tests/testem.rb +31 -0
  135. data/web/whatis +7 -0
  136. metadata +214 -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
@@ -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
@@ -0,0 +1,148 @@
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
+
33
+ class TestTimers < Test::Unit::TestCase
34
+
35
+ def setup
36
+ end
37
+
38
+ def teardown
39
+ end
40
+
41
+ def test_timer_with_block
42
+ x = false
43
+ EventMachine.run {
44
+ EventMachine::Timer.new(0.25) {
45
+ x = true
46
+ EventMachine.stop
47
+ }
48
+ }
49
+ assert x
50
+ end
51
+
52
+ def test_timer_with_proc
53
+ x = false
54
+ EventMachine.run {
55
+ EventMachine::Timer.new(0.25, proc {
56
+ x = true
57
+ EventMachine.stop
58
+ })
59
+ }
60
+ assert x
61
+ end
62
+
63
+ def test_timer_cancel
64
+ x = true
65
+ EventMachine.run {
66
+ timer = EventMachine::Timer.new(0.25, proc { x = false })
67
+ timer.cancel
68
+ EventMachine::Timer.new(0.5, proc {EventMachine.stop})
69
+ }
70
+ assert x
71
+ end
72
+
73
+ def test_periodic_timer
74
+ x = 0
75
+ EventMachine.run {
76
+ EventMachine::PeriodicTimer.new(0.1) do
77
+ x += 1
78
+ EventMachine.stop if x == 4
79
+ end
80
+ }
81
+ assert( x == 4 )
82
+ end
83
+
84
+ def test_periodic_timer_cancel
85
+ x = 0
86
+ EventMachine.run {
87
+ pt = EventMachine::PeriodicTimer.new(0.25, proc { x += 1 })
88
+ pt.cancel
89
+ EventMachine::Timer.new(0.5) {EventMachine.stop}
90
+ }
91
+ assert( x == 0 )
92
+ end
93
+
94
+ def test_periodic_timer_self_cancel
95
+ x = 0
96
+ EventMachine.run {
97
+ pt = EventMachine::PeriodicTimer.new(0.1) {
98
+ x += 1
99
+ if x == 4
100
+ pt.cancel
101
+ EventMachine.stop
102
+ end
103
+ }
104
+ }
105
+ assert( x == 4 )
106
+ end
107
+
108
+
109
+ # This test is only applicable to compiled versions of the reactor.
110
+ # Pure ruby and java versions have no built-in limit on the number of outstanding timers.
111
+ #
112
+ def test_timer_change_max_outstanding
113
+ ten_thousand_timers = proc {
114
+ 10000.times {
115
+ EM.add_timer(5) {}
116
+ }
117
+ }
118
+ EM.run {
119
+ if EM.library_type == :pure_ruby
120
+ ten_thousand_timers.call
121
+ elsif EM.library_type == :java
122
+ ten_thousand_timers.call
123
+ else
124
+ begin
125
+ assert_raises( RuntimeError ) {
126
+ ten_thousand_timers.call
127
+ }
128
+ rescue Object
129
+ p $!
130
+ assert(false, $!.message)
131
+ end
132
+ end
133
+ EM.stop
134
+ }
135
+
136
+ assert(!EM.reactor_running?, 'Reactor running when it should not be.')
137
+ assert( EM.get_max_timers != 10001 )
138
+ EM.set_max_timers( 10001 )
139
+ assert( EM.get_max_timers == 10001 )
140
+
141
+ EM.run {
142
+ ten_thousand_timers.call
143
+ EM.stop
144
+ }
145
+ end
146
+
147
+ end
148
+
@@ -0,0 +1,43 @@
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 setup
34
+ end
35
+
36
+ def teardown
37
+ end
38
+
39
+ def test_a
40
+ end
41
+
42
+ end
43
+
@@ -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
@@ -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,214 @@
1
+ --- !ruby/object:Gem::Specification
2
+ extensions: []
3
+
4
+ homepage: http://rubyeventmachine.com
5
+ executables: []
6
+
7
+ version: !ruby/object:Gem::Version
8
+ version: 0.12.6
9
+ post_install_message:
10
+ date: 2009-04-04 07:00:00 +00:00
11
+ files:
12
+ - .gitignore
13
+ - Rakefile
14
+ - docs/COPYING
15
+ - docs/ChangeLog
16
+ - docs/DEFERRABLES
17
+ - docs/EPOLL
18
+ - docs/GNU
19
+ - docs/INSTALL
20
+ - docs/KEYBOARD
21
+ - docs/LEGAL
22
+ - docs/LIGHTWEIGHT_CONCURRENCY
23
+ - docs/PURE_RUBY
24
+ - docs/README
25
+ - docs/RELEASE_NOTES
26
+ - docs/SMTP
27
+ - docs/SPAWNED_PROCESSES
28
+ - docs/TODO
29
+ - eventmachine.gemspec
30
+ - ext/binder.cpp
31
+ - ext/binder.h
32
+ - ext/cmain.cpp
33
+ - ext/cplusplus.cpp
34
+ - ext/ed.cpp
35
+ - ext/ed.h
36
+ - ext/em.cpp
37
+ - ext/em.h
38
+ - ext/emwin.cpp
39
+ - ext/emwin.h
40
+ - ext/epoll.cpp
41
+ - ext/epoll.h
42
+ - ext/eventmachine.h
43
+ - ext/eventmachine_cpp.h
44
+ - ext/extconf.rb
45
+ - ext/fastfilereader/extconf.rb
46
+ - ext/fastfilereader/mapper.cpp
47
+ - ext/fastfilereader/mapper.h
48
+ - ext/fastfilereader/rubymain.cpp
49
+ - ext/files.cpp
50
+ - ext/files.h
51
+ - ext/kb.cpp
52
+ - ext/page.cpp
53
+ - ext/page.h
54
+ - ext/pipe.cpp
55
+ - ext/project.h
56
+ - ext/rubymain.cpp
57
+ - ext/sigs.cpp
58
+ - ext/sigs.h
59
+ - ext/ssl.cpp
60
+ - ext/ssl.h
61
+ - java/.classpath
62
+ - java/.project
63
+ - java/src/com/rubyeventmachine/Application.java
64
+ - java/src/com/rubyeventmachine/Connection.java
65
+ - java/src/com/rubyeventmachine/ConnectionFactory.java
66
+ - java/src/com/rubyeventmachine/DefaultConnectionFactory.java
67
+ - java/src/com/rubyeventmachine/EmReactor.java
68
+ - java/src/com/rubyeventmachine/EmReactorException.java
69
+ - java/src/com/rubyeventmachine/EventableChannel.java
70
+ - java/src/com/rubyeventmachine/EventableDatagramChannel.java
71
+ - java/src/com/rubyeventmachine/EventableSocketChannel.java
72
+ - java/src/com/rubyeventmachine/PeriodicTimer.java
73
+ - java/src/com/rubyeventmachine/Timer.java
74
+ - java/src/com/rubyeventmachine/tests/ApplicationTest.java
75
+ - java/src/com/rubyeventmachine/tests/ConnectTest.java
76
+ - java/src/com/rubyeventmachine/tests/EMTest.java
77
+ - java/src/com/rubyeventmachine/tests/TestDatagrams.java
78
+ - java/src/com/rubyeventmachine/tests/TestServers.java
79
+ - java/src/com/rubyeventmachine/tests/TestTimers.java
80
+ - lib/em/deferrable.rb
81
+ - lib/em/eventable.rb
82
+ - lib/em/future.rb
83
+ - lib/em/messages.rb
84
+ - lib/em/processes.rb
85
+ - lib/em/spawnable.rb
86
+ - lib/em/streamer.rb
87
+ - lib/eventmachine.rb
88
+ - lib/eventmachine_version.rb
89
+ - lib/evma.rb
90
+ - lib/evma/callback.rb
91
+ - lib/evma/container.rb
92
+ - lib/evma/factory.rb
93
+ - lib/evma/protocol.rb
94
+ - lib/evma/reactor.rb
95
+ - lib/jeventmachine.rb
96
+ - lib/pr_eventmachine.rb
97
+ - lib/protocols/buftok.rb
98
+ - lib/protocols/header_and_content.rb
99
+ - lib/protocols/httpcli2.rb
100
+ - lib/protocols/httpclient.rb
101
+ - lib/protocols/line_and_text.rb
102
+ - lib/protocols/linetext2.rb
103
+ - lib/protocols/memcache.rb
104
+ - lib/protocols/postgres.rb
105
+ - lib/protocols/saslauth.rb
106
+ - lib/protocols/smtpclient.rb
107
+ - lib/protocols/smtpserver.rb
108
+ - lib/protocols/stomp.rb
109
+ - lib/protocols/tcptest.rb
110
+ - setup.rb
111
+ - tasks/cpp.rake
112
+ - tasks/project.rake
113
+ - tasks/tests.rake
114
+ - tests/test_attach.rb
115
+ - tests/test_basic.rb
116
+ - tests/test_connection_count.rb
117
+ - tests/test_defer.rb
118
+ - tests/test_epoll.rb
119
+ - tests/test_error_handler.rb
120
+ - tests/test_errors.rb
121
+ - tests/test_eventables.rb
122
+ - tests/test_exc.rb
123
+ - tests/test_futures.rb
124
+ - tests/test_handler_check.rb
125
+ - tests/test_hc.rb
126
+ - tests/test_httpclient.rb
127
+ - tests/test_httpclient2.rb
128
+ - tests/test_kb.rb
129
+ - tests/test_ltp.rb
130
+ - tests/test_ltp2.rb
131
+ - tests/test_next_tick.rb
132
+ - tests/test_processes.rb
133
+ - tests/test_pure.rb
134
+ - tests/test_running.rb
135
+ - tests/test_sasl.rb
136
+ - tests/test_send_file.rb
137
+ - tests/test_servers.rb
138
+ - tests/test_smtpclient.rb
139
+ - tests/test_smtpserver.rb
140
+ - tests/test_spawn.rb
141
+ - tests/test_ssl_args.rb
142
+ - tests/test_ssl_methods.rb
143
+ - tests/test_timers.rb
144
+ - tests/test_ud.rb
145
+ - tests/testem.rb
146
+ - web/whatis
147
+ - lib/em_reactor.jar
148
+ rubygems_version: 1.3.1
149
+ rdoc_options:
150
+ - --title
151
+ - EventMachine
152
+ - --main
153
+ - docs/README
154
+ - --line-numbers
155
+ signing_key:
156
+ cert_chain: []
157
+
158
+ name: eventmachine
159
+ has_rdoc: true
160
+ platform: java
161
+ summary: Ruby/EventMachine library
162
+ default_executable:
163
+ bindir: bin
164
+ required_rubygems_version: !ruby/object:Gem::Requirement
165
+ version:
166
+ requirements:
167
+ - - '>='
168
+ - !ruby/object:Gem::Version
169
+ version: "0"
170
+ required_ruby_version: !ruby/object:Gem::Requirement
171
+ version:
172
+ requirements:
173
+ - - '>='
174
+ - !ruby/object:Gem::Version
175
+ version: "0"
176
+ require_paths:
177
+ - lib
178
+ specification_version: 2
179
+ test_files: []
180
+
181
+ dependencies: []
182
+
183
+ description: EventMachine implements a fast, single-threaded engine for arbitrary
184
+ network communications. It's extremely easy to use in Ruby. EventMachine wraps all
185
+ interactions with IP sockets, allowing programs to concentrate on the implementation
186
+ of network protocols. It can be used to create both network servers and clients.
187
+ To create a server or client, a Ruby program only needs to specify the IP address
188
+ and port, and provide a Module that implements the communications protocol. Implementations
189
+ of several standard network protocols are provided with the package, primarily to
190
+ serve as examples. The real goal of EventMachine is to enable programs to easily
191
+ interface with other programs using TCP/IP, especially if custom protocols are required.
192
+ email: garbagecat10@gmail.com
193
+ authors:
194
+ - Francis Cianfrocca
195
+ extra_rdoc_files:
196
+ - docs/ChangeLog
197
+ - docs/COPYING
198
+ - docs/DEFERRABLES
199
+ - docs/EPOLL
200
+ - docs/GNU
201
+ - docs/INSTALL
202
+ - docs/KEYBOARD
203
+ - docs/LEGAL
204
+ - docs/LIGHTWEIGHT_CONCURRENCY
205
+ - docs/PURE_RUBY
206
+ - docs/README
207
+ - docs/RELEASE_NOTES
208
+ - docs/SMTP
209
+ - docs/SPAWNED_PROCESSES
210
+ - docs/TODO
211
+ requirements: []
212
+
213
+ rubyforge_project: eventmachine
214
+ autorequire: