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,94 +0,0 @@
1
- /*****************************************************************************
2
-
3
- $Id$
4
-
5
- File: files.cpp
6
- Date: 26Aug06
7
-
8
- Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
9
- Gmail: blackhedd
10
-
11
- This program is free software; you can redistribute it and/or modify
12
- it under the terms of either: 1) the GNU General Public License
13
- as published by the Free Software Foundation; either version 2 of the
14
- License, or (at your option) any later version; or 2) Ruby's License.
15
-
16
- See the file COPYING for complete licensing information.
17
-
18
- *****************************************************************************/
19
-
20
- #include "project.h"
21
-
22
-
23
- /******************************************
24
- FileStreamDescriptor::FileStreamDescriptor
25
- ******************************************/
26
-
27
- FileStreamDescriptor::FileStreamDescriptor (int fd, EventMachine_t *em):
28
- EventableDescriptor (fd, em),
29
- OutboundDataSize (0)
30
- {
31
- cerr << "#####";
32
- }
33
-
34
-
35
- /*******************************************
36
- FileStreamDescriptor::~FileStreamDescriptor
37
- *******************************************/
38
-
39
- FileStreamDescriptor::~FileStreamDescriptor()
40
- {
41
- // Run down any stranded outbound data.
42
- for (size_t i=0; i < OutboundPages.size(); i++)
43
- OutboundPages[i].Free();
44
- }
45
-
46
-
47
- /**************************
48
- FileStreamDescriptor::Read
49
- **************************/
50
-
51
- void FileStreamDescriptor::Read()
52
- {
53
- }
54
-
55
- /***************************
56
- FileStreamDescriptor::Write
57
- ***************************/
58
-
59
- void FileStreamDescriptor::Write()
60
- {
61
- }
62
-
63
-
64
- /*******************************
65
- FileStreamDescriptor::Heartbeat
66
- *******************************/
67
-
68
- void FileStreamDescriptor::Heartbeat()
69
- {
70
- }
71
-
72
-
73
- /***********************************
74
- FileStreamDescriptor::SelectForRead
75
- ***********************************/
76
-
77
- bool FileStreamDescriptor::SelectForRead()
78
- {
79
- cerr << "R?";
80
- return false;
81
- }
82
-
83
-
84
- /************************************
85
- FileStreamDescriptor::SelectForWrite
86
- ************************************/
87
-
88
- bool FileStreamDescriptor::SelectForWrite()
89
- {
90
- cerr << "W?";
91
- return false;
92
- }
93
-
94
-
@@ -1,65 +0,0 @@
1
- /*****************************************************************************
2
-
3
- $Id$
4
-
5
- File: files.h
6
- Date: 26Aug06
7
-
8
- Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
9
- Gmail: blackhedd
10
-
11
- This program is free software; you can redistribute it and/or modify
12
- it under the terms of either: 1) the GNU General Public License
13
- as published by the Free Software Foundation; either version 2 of the
14
- License, or (at your option) any later version; or 2) Ruby's License.
15
-
16
- See the file COPYING for complete licensing information.
17
-
18
- *****************************************************************************/
19
-
20
-
21
- #ifndef __FileStreamDescriptor__H_
22
- #define __FileStreamDescriptor__H_
23
-
24
-
25
-
26
- /**************************
27
- class FileStreamDescriptor
28
- **************************/
29
-
30
- class FileStreamDescriptor: public EventableDescriptor
31
- {
32
- public:
33
- FileStreamDescriptor (int, EventMachine_t*);
34
- virtual ~FileStreamDescriptor();
35
-
36
- virtual void Read();
37
- virtual void Write();
38
- virtual void Heartbeat();
39
-
40
- virtual bool SelectForRead();
41
- virtual bool SelectForWrite();
42
-
43
- // Do we have any data to write? This is used by ShouldDelete.
44
- virtual int GetOutboundDataSize() {return OutboundDataSize;}
45
-
46
- protected:
47
- struct OutboundPage {
48
- OutboundPage (const char *b, int l, int o=0): Buffer(b), Length(l), Offset(o) {}
49
- void Free() {if (Buffer) free ((char*)Buffer); }
50
- const char *Buffer;
51
- int Length;
52
- int Offset;
53
- };
54
-
55
- protected:
56
- deque<OutboundPage> OutboundPages;
57
- int OutboundDataSize;
58
-
59
- private:
60
-
61
- };
62
-
63
-
64
- #endif // __FileStreamDescriptor__H_
65
-
@@ -1,89 +0,0 @@
1
- /*****************************************************************************
2
-
3
- $Id$
4
-
5
- File: sigs.cpp
6
- Date: 06Apr06
7
-
8
- Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
9
- Gmail: blackhedd
10
-
11
- This program is free software; you can redistribute it and/or modify
12
- it under the terms of either: 1) the GNU General Public License
13
- as published by the Free Software Foundation; either version 2 of the
14
- License, or (at your option) any later version; or 2) Ruby's License.
15
-
16
- See the file COPYING for complete licensing information.
17
-
18
- *****************************************************************************/
19
-
20
- #include "project.h"
21
-
22
-
23
- bool gTerminateSignalReceived;
24
-
25
-
26
- /**************
27
- SigtermHandler
28
- **************/
29
-
30
- void SigtermHandler (int sig)
31
- {
32
- // This is a signal-handler, don't do anything frisky. Interrupts are disabled.
33
- // Set the terminate flag WITHOUT trying to lock a mutex- otherwise we can easily
34
- // self-deadlock, especially if the event machine is looping quickly.
35
- gTerminateSignalReceived = true;
36
- }
37
-
38
-
39
- /*********************
40
- InstallSignalHandlers
41
- *********************/
42
-
43
- void InstallSignalHandlers()
44
- {
45
- #ifdef OS_UNIX
46
- static bool bInstalled = false;
47
- if (!bInstalled) {
48
- bInstalled = true;
49
- signal (SIGINT, SigtermHandler);
50
- signal (SIGTERM, SigtermHandler);
51
- signal (SIGPIPE, SIG_IGN);
52
- }
53
- #endif
54
- }
55
-
56
-
57
-
58
- /*******************
59
- WintelSignalHandler
60
- *******************/
61
-
62
- #ifdef OS_WIN32
63
- BOOL WINAPI WintelSignalHandler (DWORD control)
64
- {
65
- if (control == CTRL_C_EVENT)
66
- gTerminateSignalReceived = true;
67
- return TRUE;
68
- }
69
- #endif
70
-
71
- /************
72
- HookControlC
73
- ************/
74
-
75
- #ifdef OS_WIN32
76
- void HookControlC (bool hook)
77
- {
78
- if (hook) {
79
- // INSTALL hook
80
- SetConsoleCtrlHandler (WintelSignalHandler, TRUE);
81
- }
82
- else {
83
- // UNINSTALL hook
84
- SetConsoleCtrlHandler (WintelSignalHandler, FALSE);
85
- }
86
- }
87
- #endif
88
-
89
-
data/ext/sigs.h DELETED
@@ -1,32 +0,0 @@
1
- /*****************************************************************************
2
-
3
- $Id$
4
-
5
- File: sigs.h
6
- Date: 06Apr06
7
-
8
- Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
9
- Gmail: blackhedd
10
-
11
- This program is free software; you can redistribute it and/or modify
12
- it under the terms of either: 1) the GNU General Public License
13
- as published by the Free Software Foundation; either version 2 of the
14
- License, or (at your option) any later version; or 2) Ruby's License.
15
-
16
- See the file COPYING for complete licensing information.
17
-
18
- *****************************************************************************/
19
-
20
-
21
- #ifndef __Signals__H_
22
- #define __Signals__H_
23
-
24
- void InstallSignalHandlers();
25
- extern bool gTerminateSignalReceived;
26
-
27
- #ifdef OS_WIN32
28
- void HookControlC (bool);
29
- #endif
30
-
31
- #endif // __Signals__H_
32
-
@@ -1,194 +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
- *
31
- */
32
- package com.rubyeventmachine.application;
33
-
34
- import java.nio.ByteBuffer;
35
- import java.nio.channels.*;
36
- import java.util.*;
37
- import java.io.*;
38
- import java.net.*;
39
- import java.net.SocketAddress;
40
-
41
- import com.rubyeventmachine.*;
42
-
43
- /**
44
- * @author francis
45
- *
46
- */
47
- public class Application {
48
-
49
-
50
- public class Reactor extends EmReactor {
51
-
52
- private Application application;
53
- private TreeMap<Long, Timer> timers;
54
- private TreeMap<Long, Connection> connections;
55
- private TreeMap<Long, ConnectionFactory> acceptors;
56
- /**
57
- *
58
- */
59
- public Reactor (Application app) {
60
- application = app;
61
- timers = new TreeMap<Long, Timer>();
62
- connections = new TreeMap<Long, Connection>();
63
- acceptors = new TreeMap<Long, ConnectionFactory>();
64
- }
65
-
66
-
67
- public void eventCallback (long sig, int eventType, ByteBuffer data, long data2) {
68
- if (eventType == EM_TIMER_FIRED) {
69
- Timer r = timers.remove(data2);
70
- if (r != null)
71
- r._fire();
72
- else
73
- throw new RuntimeException ("unable to run unknown timer");
74
- }
75
- else if (eventType == EM_CONNECTION_COMPLETED) {
76
- Connection c = connections.get(sig);
77
- if (c != null) {
78
- c.connectionCompleted();
79
- }
80
- else
81
- throw new RuntimeException ("connection completed to unknown object");
82
-
83
- }
84
- else if (eventType == EM_CONNECTION_UNBOUND) {
85
- Connection c = connections.get(sig);
86
- if (c != null) {
87
- c.unbind();
88
- }
89
- else
90
- throw new RuntimeException ("unbind received on unknown object");
91
- }
92
- else if (eventType == EM_CONNECTION_ACCEPTED) {
93
- ConnectionFactory f = acceptors.get(sig);
94
- if (f != null) {
95
- Connection c = f.connection();
96
- c.signature = data2;
97
- c.application = application;
98
- connections.put(c.signature, c);
99
- c.postInit();
100
- //System.out.println (sig+"..."+new String(data.array()));
101
- }
102
- else
103
- throw new RuntimeException ("received connection on unknown acceptor");
104
- }
105
- else if (eventType == EM_CONNECTION_READ) {
106
- Connection c = connections.get(sig);
107
- if (c != null) {
108
- c.receiveData(data);
109
- }
110
- else throw new RuntimeException ("received data on unknown object");
111
- }
112
- else {
113
- System.out.println ("unknown event type: " + eventType);
114
- }
115
- }
116
- }
117
-
118
-
119
- Reactor reactor;
120
-
121
- public Application() {
122
- reactor = new Reactor (this);
123
- }
124
- public void addTimer (double seconds, Timer t) {
125
- t.application = this;
126
- t.interval = seconds;
127
- long s = reactor.installOneshotTimer ((int)(seconds * 1000));
128
- reactor.timers.put(s, t);
129
-
130
- }
131
-
132
- public void bindConnect (String bindAddr, int bindPort, String host, int port, Connection c) {
133
- long s = reactor.connectTcpServer(bindAddr, bindPort, host, port);
134
- c.application = this;
135
- c.signature = s;
136
- reactor.connections.put(s, c);
137
- c.postInit();
138
- }
139
-
140
- public void connect (String host, int port, Connection c) {
141
- bindConnect(null, 0, host, port, c);
142
- }
143
-
144
- public void startServer (SocketAddress sa, ConnectionFactory f) throws EmReactorException {
145
- long s = reactor.startTcpServer(sa);
146
- reactor.acceptors.put(s, f);
147
- }
148
-
149
- public void stop() {
150
- reactor.stop();
151
- }
152
- public void run() {
153
- reactor.run();
154
- }
155
- public void run (final Runnable r) {
156
- addTimer(0, new Timer() {
157
- public void fire() {
158
- r.run();
159
- }
160
- });
161
- run();
162
- }
163
-
164
- public void sendData (long sig, ByteBuffer bb) {
165
- try {
166
- reactor.sendData(sig, bb);
167
- } catch (IOException e) {}
168
- }
169
-
170
- public void sendDatagram (long sig, ByteBuffer bb, InetSocketAddress target) {
171
- reactor.sendDatagram(sig, bb, target.getHostName(), target.getPort());
172
- }
173
-
174
- public void closeConnection (long sig, boolean afterWriting) {
175
- reactor.closeConnection(sig, afterWriting);
176
- }
177
-
178
- public void openDatagramSocket (Connection c) {
179
- openDatagramSocket (new InetSocketAddress ("0.0.0.0", 0), c);
180
- }
181
- public void openDatagramSocket (InetSocketAddress addr, Connection c) {
182
- try {
183
- long s = reactor.openUdpSocket(addr);
184
- c.application = this;
185
- c.signature = s;
186
- reactor.connections.put(s, c);
187
- c.postInit();
188
- } catch (ClosedChannelException e) {
189
- } catch (IOException e) {
190
- System.out.println ("Bad Datagram socket "+e+" "+addr);
191
- /* TODO, can't catch this here, because it can happen on a bad address */
192
- }
193
- }
194
- }