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

Sign up to get free protection for your applications and to get access to all the features.
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