eventmachine 0.12.10-x86-mswin32-60 → 1.0.0.beta.2-x86-mswin32-60

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 (150) hide show
  1. data/.gitignore +2 -0
  2. data/Gemfile +1 -0
  3. data/README +80 -81
  4. data/Rakefile +7 -370
  5. data/docs/COPYING +60 -60
  6. data/docs/ChangeLog +211 -211
  7. data/docs/DEFERRABLES +246 -133
  8. data/docs/EPOLL +141 -141
  9. data/docs/GNU +281 -281
  10. data/docs/INSTALL +13 -13
  11. data/docs/KEYBOARD +42 -38
  12. data/docs/LEGAL +25 -25
  13. data/docs/LIGHTWEIGHT_CONCURRENCY +130 -70
  14. data/docs/PURE_RUBY +75 -75
  15. data/docs/RELEASE_NOTES +94 -94
  16. data/docs/SMTP +4 -2
  17. data/docs/SPAWNED_PROCESSES +148 -89
  18. data/docs/TODO +8 -8
  19. data/eventmachine.gemspec +19 -26
  20. data/examples/ex_channel.rb +42 -42
  21. data/examples/ex_queue.rb +2 -2
  22. data/examples/ex_tick_loop_array.rb +15 -0
  23. data/examples/ex_tick_loop_counter.rb +32 -0
  24. data/examples/helper.rb +1 -1
  25. data/ext/binder.cpp +0 -1
  26. data/ext/cmain.cpp +36 -25
  27. data/ext/ed.cpp +104 -113
  28. data/ext/ed.h +24 -30
  29. data/ext/em.cpp +349 -283
  30. data/ext/em.h +25 -29
  31. data/ext/eventmachine.h +5 -4
  32. data/ext/extconf.rb +58 -49
  33. data/ext/fastfilereader/extconf.rb +5 -3
  34. data/ext/fastfilereader/mapper.cpp +214 -214
  35. data/ext/fastfilereader/mapper.h +59 -59
  36. data/ext/fastfilereader/rubymain.cpp +127 -127
  37. data/ext/kb.cpp +1 -3
  38. data/ext/page.cpp +107 -107
  39. data/ext/page.h +51 -51
  40. data/ext/pipe.cpp +9 -11
  41. data/ext/project.h +12 -8
  42. data/ext/rubymain.cpp +138 -104
  43. data/java/.classpath +8 -8
  44. data/java/.project +17 -17
  45. data/java/src/com/rubyeventmachine/EmReactor.java +1 -0
  46. data/java/src/com/rubyeventmachine/EmReactorException.java +40 -40
  47. data/lib/em/buftok.rb +138 -138
  48. data/lib/em/callback.rb +25 -25
  49. data/lib/em/channel.rb +1 -1
  50. data/lib/em/connection.rb +6 -1
  51. data/lib/em/deferrable.rb +16 -2
  52. data/lib/em/file_watch.rb +53 -53
  53. data/lib/em/future.rb +61 -61
  54. data/lib/em/iterator.rb +270 -0
  55. data/lib/em/messages.rb +66 -66
  56. data/lib/em/process_watch.rb +43 -43
  57. data/lib/em/protocols.rb +1 -1
  58. data/lib/em/protocols/header_and_content.rb +138 -138
  59. data/lib/em/protocols/httpclient.rb +267 -262
  60. data/lib/em/protocols/line_protocol.rb +28 -0
  61. data/lib/em/protocols/memcache.rb +322 -322
  62. data/lib/em/protocols/postgres3.rb +247 -247
  63. data/lib/em/protocols/saslauth.rb +175 -175
  64. data/lib/em/protocols/smtpserver.rb +640 -547
  65. data/lib/em/protocols/stomp.rb +200 -200
  66. data/lib/em/protocols/tcptest.rb +52 -52
  67. data/lib/{pr_eventmachine.rb → em/pure_ruby.rb} +1013 -1022
  68. data/lib/em/queue.rb +1 -0
  69. data/lib/em/spawnable.rb +85 -85
  70. data/lib/em/streamer.rb +130 -130
  71. data/lib/em/tick_loop.rb +85 -0
  72. data/lib/em/timers.rb +2 -1
  73. data/lib/em/version.rb +1 -1
  74. data/lib/eventmachine.rb +40 -84
  75. data/lib/jeventmachine.rb +2 -1
  76. data/lib/rubyeventmachine.rb +2 -0
  77. data/setup.rb +1585 -1585
  78. data/tasks/doc.rake +30 -0
  79. data/tasks/package.rake +85 -0
  80. data/tasks/test.rake +6 -0
  81. data/tests/client.crt +31 -31
  82. data/tests/client.key +51 -51
  83. data/tests/test_attach.rb +13 -3
  84. data/tests/test_basic.rb +60 -95
  85. data/tests/test_channel.rb +3 -2
  86. data/tests/test_defer.rb +49 -47
  87. data/tests/test_deferrable.rb +35 -0
  88. data/tests/test_error_handler.rb +35 -35
  89. data/tests/test_errors.rb +82 -82
  90. data/tests/test_exc.rb +55 -55
  91. data/tests/test_file_watch.rb +49 -49
  92. data/tests/test_futures.rb +198 -198
  93. data/tests/test_handler_check.rb +36 -36
  94. data/tests/test_hc.rb +190 -218
  95. data/tests/test_httpclient.rb +227 -218
  96. data/tests/test_httpclient2.rb +3 -2
  97. data/tests/test_inactivity_timeout.rb +3 -3
  98. data/tests/test_kb.rb +60 -60
  99. data/tests/test_ltp.rb +13 -5
  100. data/tests/test_ltp2.rb +317 -317
  101. data/tests/test_next_tick.rb +1 -1
  102. data/tests/test_object_protocol.rb +36 -36
  103. data/tests/test_pending_connect_timeout.rb +2 -2
  104. data/tests/test_process_watch.rb +50 -48
  105. data/tests/test_proxy_connection.rb +52 -0
  106. data/tests/test_pure.rb +134 -125
  107. data/tests/test_queue.rb +44 -44
  108. data/tests/test_running.rb +42 -42
  109. data/tests/test_sasl.rb +72 -72
  110. data/tests/test_send_file.rb +251 -242
  111. data/tests/test_servers.rb +76 -76
  112. data/tests/test_smtpclient.rb +83 -83
  113. data/tests/test_smtpserver.rb +85 -85
  114. data/tests/test_spawn.rb +322 -322
  115. data/tests/test_ssl_methods.rb +49 -49
  116. data/tests/test_ssl_verify.rb +82 -82
  117. data/tests/test_tick_loop.rb +59 -0
  118. data/tests/test_timers.rb +13 -15
  119. data/tests/test_ud.rb +36 -36
  120. data/tests/testem.rb +31 -31
  121. metadata +66 -51
  122. data/ext/cplusplus.cpp +0 -202
  123. data/ext/emwin.cpp +0 -300
  124. data/ext/emwin.h +0 -94
  125. data/ext/epoll.cpp +0 -26
  126. data/ext/epoll.h +0 -25
  127. data/ext/eventmachine_cpp.h +0 -96
  128. data/ext/files.cpp +0 -94
  129. data/ext/files.h +0 -65
  130. data/ext/sigs.cpp +0 -89
  131. data/ext/sigs.h +0 -32
  132. data/java/src/com/rubyeventmachine/application/Application.java +0 -194
  133. data/java/src/com/rubyeventmachine/application/Connection.java +0 -74
  134. data/java/src/com/rubyeventmachine/application/ConnectionFactory.java +0 -37
  135. data/java/src/com/rubyeventmachine/application/DefaultConnectionFactory.java +0 -46
  136. data/java/src/com/rubyeventmachine/application/PeriodicTimer.java +0 -38
  137. data/java/src/com/rubyeventmachine/application/Timer.java +0 -54
  138. data/java/src/com/rubyeventmachine/tests/ApplicationTest.java +0 -109
  139. data/java/src/com/rubyeventmachine/tests/ConnectTest.java +0 -148
  140. data/java/src/com/rubyeventmachine/tests/EMTest.java +0 -80
  141. data/java/src/com/rubyeventmachine/tests/TestDatagrams.java +0 -53
  142. data/java/src/com/rubyeventmachine/tests/TestServers.java +0 -75
  143. data/java/src/com/rubyeventmachine/tests/TestTimers.java +0 -90
  144. data/lib/evma.rb +0 -32
  145. data/lib/evma/callback.rb +0 -32
  146. data/lib/evma/container.rb +0 -75
  147. data/lib/evma/factory.rb +0 -77
  148. data/lib/evma/protocol.rb +0 -87
  149. data/lib/evma/reactor.rb +0 -48
  150. data/web/whatis +0 -7
@@ -1,80 +0,0 @@
1
- /**
2
- * $Id$
3
- *
4
- * Author:: Francis Cianfrocca (gmail: blackhedd)
5
- * Homepage:: http://rubyeventmachine.com
6
- * Date:: 15 Jul 2007
7
- *
8
- * See EventMachine and EventMachine::Connection for documentation and
9
- * usage examples.
10
- *
11
- *
12
- *----------------------------------------------------------------------------
13
- *
14
- * Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
15
- * Gmail: blackhedd
16
- *
17
- * This program is free software; you can redistribute it and/or modify
18
- * it under the terms of either: 1) the GNU General Public License
19
- * as published by the Free Software Foundation; either version 2 of the
20
- * License, or (at your option) any later version; or 2) Ruby's License.
21
- *
22
- * See the file COPYING for complete licensing information.
23
- *
24
- *---------------------------------------------------------------------------
25
- *
26
- *
27
- */
28
-
29
-
30
- package com.rubyeventmachine.tests;
31
-
32
- //import static org.junit.Assert.*;
33
-
34
- import org.junit.After;
35
- import org.junit.AfterClass;
36
- import org.junit.Before;
37
- import org.junit.BeforeClass;
38
- import org.junit.Test;
39
-
40
- import com.rubyeventmachine.EmReactor;
41
-
42
- import java.io.*;
43
- import java.nio.*;
44
-
45
-
46
- public class EMTest {
47
-
48
- class ShortTimer extends EmReactor {
49
- public void eventCallback (String sig, int eventCode, ByteBuffer data) {
50
- System.out.println ("Short Callback "+sig+" "+eventCode+" "+data);
51
- this.stop();
52
- }
53
- }
54
-
55
- @BeforeClass
56
- public static void setUpBeforeClass() throws Exception {
57
- }
58
-
59
- @AfterClass
60
- public static void tearDownAfterClass() throws Exception {
61
- }
62
-
63
- @Before
64
- public void setUp() throws Exception {
65
- }
66
-
67
- @After
68
- public void tearDown() throws Exception {
69
- }
70
-
71
-
72
- @Test
73
- public final void testOneShort() throws IOException {
74
- EmReactor em = new ShortTimer();
75
- em.installOneshotTimer(1050);
76
- em.run();
77
- }
78
-
79
-
80
- }
@@ -1,53 +0,0 @@
1
- package com.rubyeventmachine.tests;
2
-
3
- import com.rubyeventmachine.application.*;
4
- import java.net.*;
5
- import java.nio.*;
6
-
7
- import org.junit.After;
8
- import org.junit.AfterClass;
9
- import org.junit.Before;
10
- import org.junit.BeforeClass;
11
- import org.junit.Test;
12
-
13
-
14
- public class TestDatagrams {
15
-
16
- @BeforeClass
17
- public static void setUpBeforeClass() throws Exception {
18
- }
19
-
20
- @AfterClass
21
- public static void tearDownAfterClass() throws Exception {
22
- }
23
-
24
- @Before
25
- public void setUp() throws Exception {
26
- }
27
-
28
- @After
29
- public void tearDown() throws Exception {
30
- }
31
-
32
- class A extends Connection {
33
- public void receiveData (ByteBuffer bb) {
34
- application.stop();
35
- }
36
- }
37
- class B extends Connection {
38
- public void postInit() {
39
- this.sendDatagram(ByteBuffer.wrap(new String("ABC").getBytes()), new InetSocketAddress ("127.0.0.1", 9550));
40
- }
41
-
42
- }
43
- @Test
44
- public final void testA() {
45
- final Application a = new Application();
46
- a.run (new Runnable() {
47
- public void run() {
48
- a.openDatagramSocket( new InetSocketAddress ("0.0.0.0", 9550), new A() );
49
- a.openDatagramSocket( new B() );
50
- }
51
- });
52
- }
53
- }
@@ -1,75 +0,0 @@
1
- /**
2
- * $Id$
3
- *
4
- * Author:: Francis Cianfrocca (gmail: blackhedd)
5
- * Homepage:: http://rubyeventmachine.com
6
- * Date:: 15 Jul 2007
7
- *
8
- * See EventMachine and EventMachine::Connection for documentation and
9
- * usage examples.
10
- *
11
- *
12
- *----------------------------------------------------------------------------
13
- *
14
- * Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
15
- * Gmail: blackhedd
16
- *
17
- * This program is free software; you can redistribute it and/or modify
18
- * it under the terms of either: 1) the GNU General Public License
19
- * as published by the Free Software Foundation; either version 2 of the
20
- * License, or (at your option) any later version; or 2) Ruby's License.
21
- *
22
- * See the file COPYING for complete licensing information.
23
- *
24
- *---------------------------------------------------------------------------
25
- *
26
- *
27
- */
28
-
29
-
30
- package com.rubyeventmachine.tests;
31
-
32
-
33
- import com.rubyeventmachine.*;
34
- import com.rubyeventmachine.application.*;
35
- import java.net.*;
36
- import org.junit.After;
37
- import org.junit.AfterClass;
38
- import org.junit.Before;
39
- import org.junit.BeforeClass;
40
- import org.junit.Test;
41
- import org.junit.Assert;
42
-
43
- public class TestServers {
44
-
45
- @BeforeClass
46
- public static void setUpBeforeClass() throws Exception {
47
- }
48
-
49
- @AfterClass
50
- public static void tearDownAfterClass() throws Exception {
51
- }
52
-
53
- @Before
54
- public void setUp() throws Exception {
55
- }
56
-
57
- @After
58
- public void tearDown() throws Exception {
59
- }
60
-
61
-
62
- @Test
63
- public void testBadServerAddress() {
64
- final Application a = new Application();
65
- a.run (new Runnable() {
66
- public void run() {
67
- try {
68
- a.startServer(new InetSocketAddress ("100.100.100.100", 100), new DefaultConnectionFactory());
69
- Assert.fail ("was supposed to throw a reactor exception");
70
- } catch (EmReactorException e) {}
71
- a.stop();
72
- }
73
- });
74
- }
75
- }
@@ -1,90 +0,0 @@
1
- /**
2
- * $Id$
3
- *
4
- * Author:: Francis Cianfrocca (gmail: blackhedd)
5
- * Homepage:: http://rubyeventmachine.com
6
- * Date:: 15 Jul 2007
7
- *
8
- * See EventMachine and EventMachine::Connection for documentation and
9
- * usage examples.
10
- *
11
- *
12
- *----------------------------------------------------------------------------
13
- *
14
- * Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
15
- * Gmail: blackhedd
16
- *
17
- * This program is free software; you can redistribute it and/or modify
18
- * it under the terms of either: 1) the GNU General Public License
19
- * as published by the Free Software Foundation; either version 2 of the
20
- * License, or (at your option) any later version; or 2) Ruby's License.
21
- *
22
- * See the file COPYING for complete licensing information.
23
- *
24
- *---------------------------------------------------------------------------
25
- *
26
- *
27
- */
28
-
29
-
30
- package com.rubyeventmachine.tests;
31
-
32
- import com.rubyeventmachine.*;
33
- import com.rubyeventmachine.application.*;
34
- import java.io.*;
35
-
36
- import org.junit.Assert;
37
- import org.junit.After;
38
- import org.junit.AfterClass;
39
- import org.junit.Before;
40
- import org.junit.BeforeClass;
41
- import org.junit.Test;
42
-
43
-
44
- public class TestTimers {
45
-
46
- @BeforeClass
47
- public static void setUpBeforeClass() throws Exception {
48
- }
49
-
50
- @AfterClass
51
- public static void tearDownAfterClass() throws Exception {
52
- }
53
-
54
- @Before
55
- public void setUp() throws Exception {
56
- }
57
-
58
- @After
59
- public void tearDown() throws Exception {
60
- }
61
-
62
-
63
-
64
- @Test
65
- public final void test2() throws IOException {
66
- Application a = new Application();
67
- a.addTimer(0, new Timer() {
68
- public void fire() {
69
- application.stop();
70
- }
71
- });
72
- a.run();
73
- Assert.assertEquals (1, 1); // just to make sure the reactor halts.
74
- }
75
-
76
- @Test
77
- public final void test3() throws IOException {
78
- Application a = new Application();
79
- a.addTimer (0.1, new PeriodicTimer() {
80
- int n = 0;
81
- public void fire() {
82
- n++;
83
- if (n == 5)
84
- application.stop();
85
- }
86
- });
87
- a.run();
88
- Assert.assertEquals(1, 1);
89
- }
90
- }
@@ -1,32 +0,0 @@
1
- #--
2
- #
3
- # Author:: Francis Cianfrocca (gmail: blackhedd)
4
- # Homepage:: http://rubyeventmachine.com
5
- # Date:: 8 Apr 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
- require 'rubyeventmachine'
27
- require 'evma/reactor'
28
- require 'evma/callback'
29
- require 'evma/protocol'
30
- require 'evma/factory'
31
- require 'evma/container'
32
-
@@ -1,32 +0,0 @@
1
- # $Id$
2
- #
3
- # Author:: Francis Cianfrocca (gmail: blackhedd)
4
- # Homepage:: http://rubyeventmachine.com
5
- # Date:: 19 May 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
- module EventMachine
27
-
28
- def self.event_callback target, opcode, data
29
- Evma::Container.callback target, opcode, data
30
- end
31
-
32
- end # module EventMachine
@@ -1,75 +0,0 @@
1
- # $Id$
2
- #
3
- # Author:: Francis Cianfrocca (gmail: blackhedd)
4
- # Homepage:: http://rubyeventmachine.com
5
- # Date:: 19 May 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
- require 'singleton'
28
-
29
- module Evma
30
-
31
- class ContainerHasObject < Exception; end
32
- class UnsupportedCallback < Exception; end
33
- class UnknownTarget < Exception; end
34
-
35
- class Container
36
- include Singleton
37
-
38
- def initialize
39
- @objects = {}
40
- end
41
-
42
- def self.store obj
43
- instance.store obj
44
- end
45
-
46
- def self.callback target, opcode, data
47
- instance.callback target, opcode, data
48
- end
49
-
50
- def store obj
51
- sig = obj.signature
52
- raise ContainerHasObject.new(sig) if @objects.has_key?(sig)
53
- @objects[sig] = obj
54
- end
55
-
56
- def callback target, opcode, data
57
- case opcode
58
- when 101 # received data
59
- obj = @objects[target] or raise UnknownTarget.new( target )
60
- obj.receive_data data
61
- when 102 # unbind
62
- obj = @objects[target] or raise UnknownTarget.new( target )
63
- obj.unbind
64
- @objects.delete obj.signature
65
- when 103 # accept
66
- obj = @objects[target] or raise UnknownTarget.new( target )
67
- obj.accept data
68
- else
69
- raise UnsupportedCallback.new( opcode.to_s )
70
- end
71
- end
72
-
73
- end # class Container
74
- end # module Evma
75
-
@@ -1,77 +0,0 @@
1
- # $Id$
2
- #
3
- # Author:: Francis Cianfrocca (gmail: blackhedd)
4
- # Homepage:: http://rubyeventmachine.com
5
- # Date:: 19 May 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
- module Evma
27
- class ProtocolFactory < Protocol
28
-
29
- #--
30
- # default implementation raises an exception.
31
- # we expect subclasses to override this.
32
- # we can't do anything reasonable here because
33
- def accept new_object
34
- # don't bother calling Evma::Reactor.instance, since only Reactor can call accept
35
- Evma::Container.store Evma::Protocol.new( new_object )
36
- EventMachine.close_connection new_object, false
37
- end
38
-
39
-
40
- end # class ProtocolFactory
41
- end # module Evma
42
-
43
- ######################################
44
-
45
- module Evma
46
- class TcpSocket
47
-
48
- def self.connect server, port, protocol_handler = Evma::Protocol
49
- Evma::Reactor.instance # ensure initialization
50
- sig = EventMachine.connect_server server, port
51
- Evma::Container.store protocol_handler.new( sig )
52
- end
53
-
54
- end
55
- end # module Evma
56
-
57
- ######################################
58
-
59
- module Evma
60
- class TcpServerFactory < Evma::ProtocolFactory
61
-
62
- def initialize server, port, protocol_handler = Evma::Protocol
63
- Evma::Reactor.instance # ensure initialization
64
- sig = EventMachine.start_tcp_server server, port
65
- super sig
66
- @protocol_handler = protocol_handler
67
- Evma::Container.store self
68
- end
69
-
70
- def accept new_obj
71
- # don't bother calling Evma::Reactor.instance, since only Reactor can call accept
72
- Evma::Container.store @protocol_handler.new( new_obj )
73
- end
74
-
75
- end
76
- end # module Evma
77
-