eventmachine 1.0.0.beta.3 → 1.0.0.beta.4

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 (96) 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 +4 -1
  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 +47 -55
  40. data/ext/em.h +12 -2
  41. data/ext/pipe.cpp +2 -2
  42. data/ext/project.h +1 -1
  43. data/ext/rubymain.cpp +48 -3
  44. data/ext/ssl.cpp +5 -0
  45. data/java/src/com/rubyeventmachine/EmReactor.java +2 -2
  46. data/lib/em/buftok.rb +35 -63
  47. data/lib/em/callback.rb +43 -11
  48. data/lib/em/channel.rb +21 -14
  49. data/lib/em/completion.rb +304 -0
  50. data/lib/em/connection.rb +339 -209
  51. data/lib/em/deferrable.rb +4 -0
  52. data/lib/em/deferrable/pool.rb +2 -0
  53. data/lib/em/file_watch.rb +37 -18
  54. data/lib/em/iterator.rb +42 -42
  55. data/lib/em/pool.rb +146 -0
  56. data/lib/em/process_watch.rb +5 -4
  57. data/lib/em/processes.rb +8 -4
  58. data/lib/em/protocols/httpclient.rb +22 -11
  59. data/lib/em/protocols/httpclient2.rb +15 -5
  60. data/lib/em/protocols/line_protocol.rb +2 -1
  61. data/lib/em/protocols/memcache.rb +17 -9
  62. data/lib/em/protocols/object_protocol.rb +2 -1
  63. data/lib/em/protocols/postgres3.rb +8 -9
  64. data/lib/em/protocols/smtpclient.rb +19 -11
  65. data/lib/em/protocols/smtpserver.rb +1 -1
  66. data/lib/em/protocols/stomp.rb +8 -6
  67. data/lib/em/protocols/tcptest.rb +3 -2
  68. data/lib/em/pure_ruby.rb +212 -208
  69. data/lib/em/queue.rb +22 -13
  70. data/lib/em/resolver.rb +70 -64
  71. data/lib/em/spawnable.rb +6 -3
  72. data/lib/em/streamer.rb +33 -45
  73. data/lib/em/threaded_resource.rb +90 -0
  74. data/lib/em/timers.rb +6 -2
  75. data/lib/em/version.rb +1 -1
  76. data/lib/eventmachine.rb +538 -602
  77. data/lib/jeventmachine.rb +22 -1
  78. data/tasks/package.rake +12 -2
  79. data/tasks/test.rake +1 -0
  80. data/tests/em_test_helper.rb +12 -3
  81. data/tests/test_completion.rb +177 -0
  82. data/tests/test_epoll.rb +2 -2
  83. data/tests/test_httpclient.rb +9 -9
  84. data/tests/test_httpclient2.rb +11 -9
  85. data/tests/test_ltp.rb +2 -10
  86. data/tests/test_pool.rb +128 -0
  87. data/tests/test_processes.rb +20 -2
  88. data/tests/test_queue.rb +8 -0
  89. data/tests/test_resolver.rb +1 -1
  90. data/tests/test_set_sock_opt.rb +37 -0
  91. data/tests/test_shutdown_hooks.rb +23 -0
  92. data/tests/test_threaded_resource.rb +53 -0
  93. data/tests/test_unbind_reason.rb +31 -0
  94. metadata +262 -192
  95. data/README +0 -81
  96. 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,39 +1,72 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eventmachine
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: true
4
+ hash: 62196363
5
+ prerelease: 6
5
6
  segments:
6
- - 1
7
- - 0
8
- - 0
9
- - beta
10
- - 3
11
- version: 1.0.0.beta.3
7
+ - 1
8
+ - 0
9
+ - 0
10
+ - beta
11
+ - 4
12
+ version: 1.0.0.beta.4
12
13
  platform: ruby
13
14
  authors:
14
- - Francis Cianfrocca
15
- - Aman Gupta
15
+ - Francis Cianfrocca
16
+ - Aman Gupta
16
17
  autorequire:
17
18
  bindir: bin
18
19
  cert_chain: []
19
20
 
20
- date: 2011-03-03 00:00:00 -08:00
21
+ date: 2011-09-09 00:00:00 -07:00
21
22
  default_executable:
22
23
  dependencies:
23
- - !ruby/object:Gem::Dependency
24
- name: rake-compiler
25
- prerelease: false
26
- requirement: &id001 !ruby/object:Gem::Requirement
27
- requirements:
28
- - - "="
29
- - !ruby/object:Gem::Version
30
- segments:
31
- - 0
32
- - 7
33
- - 6
34
- version: 0.7.6
35
- type: :development
36
- version_requirements: *id001
24
+ - !ruby/object:Gem::Dependency
25
+ name: rake-compiler
26
+ prerelease: false
27
+ requirement: &id001 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - "="
31
+ - !ruby/object:Gem::Version
32
+ hash: 15
33
+ segments:
34
+ - 0
35
+ - 7
36
+ - 6
37
+ version: 0.7.6
38
+ type: :development
39
+ version_requirements: *id001
40
+ - !ruby/object:Gem::Dependency
41
+ name: yard
42
+ prerelease: false
43
+ requirement: &id002 !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ hash: 7
49
+ segments:
50
+ - 0
51
+ - 7
52
+ - 2
53
+ version: 0.7.2
54
+ type: :development
55
+ version_requirements: *id002
56
+ - !ruby/object:Gem::Dependency
57
+ name: bluecloth
58
+ prerelease: false
59
+ requirement: &id003 !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ hash: 3
65
+ segments:
66
+ - 0
67
+ version: "0"
68
+ type: :development
69
+ version_requirements: *id003
37
70
  description: |-
38
71
  EventMachine implements a fast, single-threaded engine for arbitrary network
39
72
  communications. It's extremely easy to use in Ruby. EventMachine wraps all
@@ -46,192 +79,229 @@ description: |-
46
79
  of EventMachine is to enable programs to easily interface with other programs
47
80
  using TCP/IP, especially if custom protocols are required.
48
81
  email:
49
- - garbagecat10@gmail.com
50
- - aman@tmm1.net
82
+ - garbagecat10@gmail.com
83
+ - aman@tmm1.net
51
84
  executables: []
52
85
 
53
86
  extensions:
54
- - ext/extconf.rb
55
- - ext/fastfilereader/extconf.rb
56
- extra_rdoc_files: []
57
-
87
+ - ext/extconf.rb
88
+ - ext/fastfilereader/extconf.rb
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
58
105
  files:
59
- - .gitignore
60
- - .yardopts
61
- - Gemfile
62
- - README
63
- - Rakefile
64
- - docs/COPYING
65
- - docs/ChangeLog
66
- - docs/DEFERRABLES
67
- - docs/EPOLL
68
- - docs/GNU
69
- - docs/INSTALL
70
- - docs/KEYBOARD
71
- - docs/LEGAL
72
- - docs/LIGHTWEIGHT_CONCURRENCY
73
- - docs/PURE_RUBY
74
- - docs/RELEASE_NOTES
75
- - docs/SMTP
76
- - docs/SPAWNED_PROCESSES
77
- - docs/TODO
78
- - eventmachine.gemspec
79
- - examples/ex_channel.rb
80
- - examples/ex_queue.rb
81
- - examples/ex_tick_loop_array.rb
82
- - examples/ex_tick_loop_counter.rb
83
- - examples/helper.rb
84
- - ext/binder.cpp
85
- - ext/binder.h
86
- - ext/cmain.cpp
87
- - ext/ed.cpp
88
- - ext/ed.h
89
- - ext/em.cpp
90
- - ext/em.h
91
- - ext/eventmachine.h
92
- - ext/extconf.rb
93
- - ext/fastfilereader/extconf.rb
94
- - ext/fastfilereader/mapper.cpp
95
- - ext/fastfilereader/mapper.h
96
- - ext/fastfilereader/rubymain.cpp
97
- - ext/kb.cpp
98
- - ext/page.cpp
99
- - ext/page.h
100
- - ext/pipe.cpp
101
- - ext/project.h
102
- - ext/rubymain.cpp
103
- - ext/ssl.cpp
104
- - ext/ssl.h
105
- - java/.classpath
106
- - java/.project
107
- - java/src/com/rubyeventmachine/EmReactor.java
108
- - java/src/com/rubyeventmachine/EmReactorException.java
109
- - java/src/com/rubyeventmachine/EventableChannel.java
110
- - java/src/com/rubyeventmachine/EventableDatagramChannel.java
111
- - java/src/com/rubyeventmachine/EventableSocketChannel.java
112
- - lib/em/buftok.rb
113
- - lib/em/callback.rb
114
- - lib/em/channel.rb
115
- - lib/em/connection.rb
116
- - lib/em/deferrable.rb
117
- - lib/em/file_watch.rb
118
- - lib/em/future.rb
119
- - lib/em/iterator.rb
120
- - lib/em/messages.rb
121
- - lib/em/process_watch.rb
122
- - lib/em/processes.rb
123
- - lib/em/protocols.rb
124
- - lib/em/protocols/header_and_content.rb
125
- - lib/em/protocols/httpclient.rb
126
- - lib/em/protocols/httpclient2.rb
127
- - lib/em/protocols/line_and_text.rb
128
- - lib/em/protocols/line_protocol.rb
129
- - lib/em/protocols/linetext2.rb
130
- - lib/em/protocols/memcache.rb
131
- - lib/em/protocols/object_protocol.rb
132
- - lib/em/protocols/postgres3.rb
133
- - lib/em/protocols/saslauth.rb
134
- - lib/em/protocols/smtpclient.rb
135
- - lib/em/protocols/smtpserver.rb
136
- - lib/em/protocols/socks4.rb
137
- - lib/em/protocols/stomp.rb
138
- - lib/em/protocols/tcptest.rb
139
- - lib/em/pure_ruby.rb
140
- - lib/em/queue.rb
141
- - lib/em/resolver.rb
142
- - lib/em/spawnable.rb
143
- - lib/em/streamer.rb
144
- - lib/em/tick_loop.rb
145
- - lib/em/timers.rb
146
- - lib/em/version.rb
147
- - lib/eventmachine.rb
148
- - lib/jeventmachine.rb
149
- - tasks/cpp.rake_example
150
- - tasks/doc.rake
151
- - tasks/package.rake
152
- - tasks/test.rake
153
- - tests/client.crt
154
- - tests/client.key
155
- - tests/em_test_helper.rb
156
- - tests/test_attach.rb
157
- - tests/test_basic.rb
158
- - tests/test_channel.rb
159
- - tests/test_connection_count.rb
160
- - tests/test_defer.rb
161
- - tests/test_deferrable.rb
162
- - tests/test_epoll.rb
163
- - tests/test_error_handler.rb
164
- - tests/test_exc.rb
165
- - tests/test_file_watch.rb
166
- - tests/test_futures.rb
167
- - tests/test_get_sock_opt.rb
168
- - tests/test_handler_check.rb
169
- - tests/test_hc.rb
170
- - tests/test_httpclient.rb
171
- - tests/test_httpclient2.rb
172
- - tests/test_inactivity_timeout.rb
173
- - tests/test_kb.rb
174
- - tests/test_ltp.rb
175
- - tests/test_ltp2.rb
176
- - tests/test_next_tick.rb
177
- - tests/test_object_protocol.rb
178
- - tests/test_pause.rb
179
- - tests/test_pending_connect_timeout.rb
180
- - tests/test_process_watch.rb
181
- - tests/test_processes.rb
182
- - tests/test_proxy_connection.rb
183
- - tests/test_pure.rb
184
- - tests/test_queue.rb
185
- - tests/test_resolver.rb
186
- - tests/test_running.rb
187
- - tests/test_sasl.rb
188
- - tests/test_send_file.rb
189
- - tests/test_servers.rb
190
- - tests/test_smtpclient.rb
191
- - tests/test_smtpserver.rb
192
- - tests/test_spawn.rb
193
- - tests/test_ssl_args.rb
194
- - tests/test_ssl_methods.rb
195
- - tests/test_ssl_verify.rb
196
- - tests/test_tick_loop.rb
197
- - tests/test_timers.rb
198
- - tests/test_ud.rb
106
+ - .gitignore
107
+ - .yardopts
108
+ - GNU
109
+ - Gemfile
110
+ - LICENSE
111
+ - README.md
112
+ - Rakefile
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
127
+ - eventmachine.gemspec
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
141
+ - ext/binder.cpp
142
+ - ext/binder.h
143
+ - ext/cmain.cpp
144
+ - ext/ed.cpp
145
+ - ext/ed.h
146
+ - ext/em.cpp
147
+ - ext/em.h
148
+ - ext/eventmachine.h
149
+ - ext/extconf.rb
150
+ - ext/fastfilereader/extconf.rb
151
+ - ext/fastfilereader/mapper.cpp
152
+ - ext/fastfilereader/mapper.h
153
+ - ext/fastfilereader/rubymain.cpp
154
+ - ext/kb.cpp
155
+ - ext/page.cpp
156
+ - ext/page.h
157
+ - ext/pipe.cpp
158
+ - ext/project.h
159
+ - ext/rubymain.cpp
160
+ - ext/ssl.cpp
161
+ - ext/ssl.h
162
+ - java/.classpath
163
+ - java/.project
164
+ - java/src/com/rubyeventmachine/EmReactor.java
165
+ - java/src/com/rubyeventmachine/EmReactorException.java
166
+ - java/src/com/rubyeventmachine/EventableChannel.java
167
+ - java/src/com/rubyeventmachine/EventableDatagramChannel.java
168
+ - java/src/com/rubyeventmachine/EventableSocketChannel.java
169
+ - lib/em/buftok.rb
170
+ - lib/em/callback.rb
171
+ - lib/em/channel.rb
172
+ - lib/em/completion.rb
173
+ - lib/em/connection.rb
174
+ - lib/em/deferrable.rb
175
+ - lib/em/deferrable/pool.rb
176
+ - lib/em/file_watch.rb
177
+ - lib/em/future.rb
178
+ - lib/em/iterator.rb
179
+ - lib/em/messages.rb
180
+ - lib/em/pool.rb
181
+ - lib/em/process_watch.rb
182
+ - lib/em/processes.rb
183
+ - lib/em/protocols.rb
184
+ - lib/em/protocols/header_and_content.rb
185
+ - lib/em/protocols/httpclient.rb
186
+ - lib/em/protocols/httpclient2.rb
187
+ - lib/em/protocols/line_and_text.rb
188
+ - lib/em/protocols/line_protocol.rb
189
+ - lib/em/protocols/linetext2.rb
190
+ - lib/em/protocols/memcache.rb
191
+ - lib/em/protocols/object_protocol.rb
192
+ - lib/em/protocols/postgres3.rb
193
+ - lib/em/protocols/saslauth.rb
194
+ - lib/em/protocols/smtpclient.rb
195
+ - lib/em/protocols/smtpserver.rb
196
+ - lib/em/protocols/socks4.rb
197
+ - lib/em/protocols/stomp.rb
198
+ - lib/em/protocols/tcptest.rb
199
+ - lib/em/pure_ruby.rb
200
+ - lib/em/queue.rb
201
+ - lib/em/resolver.rb
202
+ - lib/em/spawnable.rb
203
+ - lib/em/streamer.rb
204
+ - lib/em/threaded_resource.rb
205
+ - lib/em/tick_loop.rb
206
+ - lib/em/timers.rb
207
+ - lib/em/version.rb
208
+ - lib/eventmachine.rb
209
+ - lib/jeventmachine.rb
210
+ - tasks/cpp.rake_example
211
+ - tasks/package.rake
212
+ - tasks/test.rake
213
+ - tests/client.crt
214
+ - tests/client.key
215
+ - tests/em_test_helper.rb
216
+ - tests/test_attach.rb
217
+ - tests/test_basic.rb
218
+ - tests/test_channel.rb
219
+ - tests/test_completion.rb
220
+ - tests/test_connection_count.rb
221
+ - tests/test_defer.rb
222
+ - tests/test_deferrable.rb
223
+ - tests/test_epoll.rb
224
+ - tests/test_error_handler.rb
225
+ - tests/test_exc.rb
226
+ - tests/test_file_watch.rb
227
+ - tests/test_futures.rb
228
+ - tests/test_get_sock_opt.rb
229
+ - tests/test_handler_check.rb
230
+ - tests/test_hc.rb
231
+ - tests/test_httpclient.rb
232
+ - tests/test_httpclient2.rb
233
+ - tests/test_inactivity_timeout.rb
234
+ - tests/test_kb.rb
235
+ - tests/test_ltp.rb
236
+ - tests/test_ltp2.rb
237
+ - tests/test_next_tick.rb
238
+ - tests/test_object_protocol.rb
239
+ - tests/test_pause.rb
240
+ - tests/test_pending_connect_timeout.rb
241
+ - tests/test_pool.rb
242
+ - tests/test_process_watch.rb
243
+ - tests/test_processes.rb
244
+ - tests/test_proxy_connection.rb
245
+ - tests/test_pure.rb
246
+ - tests/test_queue.rb
247
+ - tests/test_resolver.rb
248
+ - tests/test_running.rb
249
+ - tests/test_sasl.rb
250
+ - tests/test_send_file.rb
251
+ - tests/test_servers.rb
252
+ - tests/test_set_sock_opt.rb
253
+ - tests/test_shutdown_hooks.rb
254
+ - tests/test_smtpclient.rb
255
+ - tests/test_smtpserver.rb
256
+ - tests/test_spawn.rb
257
+ - tests/test_ssl_args.rb
258
+ - tests/test_ssl_methods.rb
259
+ - tests/test_ssl_verify.rb
260
+ - tests/test_threaded_resource.rb
261
+ - tests/test_tick_loop.rb
262
+ - tests/test_timers.rb
263
+ - tests/test_ud.rb
264
+ - tests/test_unbind_reason.rb
199
265
  has_rdoc: true
200
266
  homepage: http://rubyeventmachine.com
201
267
  licenses: []
202
268
 
203
269
  post_install_message:
204
270
  rdoc_options:
205
- - --title
206
- - EventMachine
207
- - --main
208
- - README
209
- - -x
210
- - lib/em/version
211
- - -x
212
- - lib/jeventmachine
271
+ - --title
272
+ - EventMachine
273
+ - --main
274
+ - README.md
275
+ - -x
276
+ - lib/em/version
277
+ - -x
278
+ - lib/jeventmachine
213
279
  require_paths:
214
- - lib
280
+ - lib
215
281
  required_ruby_version: !ruby/object:Gem::Requirement
282
+ none: false
216
283
  requirements:
217
- - - ">="
218
- - !ruby/object:Gem::Version
219
- segments:
220
- - 0
221
- version: "0"
284
+ - - ">="
285
+ - !ruby/object:Gem::Version
286
+ hash: 3
287
+ segments:
288
+ - 0
289
+ version: "0"
222
290
  required_rubygems_version: !ruby/object:Gem::Requirement
291
+ none: false
223
292
  requirements:
224
- - - ">"
225
- - !ruby/object:Gem::Version
226
- segments:
227
- - 1
228
- - 3
229
- - 1
230
- version: 1.3.1
293
+ - - ">"
294
+ - !ruby/object:Gem::Version
295
+ hash: 25
296
+ segments:
297
+ - 1
298
+ - 3
299
+ - 1
300
+ version: 1.3.1
231
301
  requirements: []
232
302
 
233
303
  rubyforge_project: eventmachine
234
- rubygems_version: 1.3.6
304
+ rubygems_version: 1.6.2
235
305
  signing_key:
236
306
  specification_version: 3
237
307
  summary: Ruby/EventMachine library