eventmachine-eventmachine 0.12.7 → 0.12.8
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.
- data/{docs/README → README} +21 -13
- data/Rakefile +14 -4
- data/docs/DEFERRABLES +0 -5
- data/docs/INSTALL +2 -4
- data/docs/LEGAL +1 -1
- data/docs/LIGHTWEIGHT_CONCURRENCY +0 -2
- data/docs/PURE_RUBY +0 -2
- data/docs/RELEASE_NOTES +0 -2
- data/docs/SMTP +0 -7
- data/docs/SPAWNED_PROCESSES +0 -4
- data/docs/TODO +0 -2
- data/eventmachine.gemspec +17 -8
- data/examples/ex_channel.rb +43 -0
- data/examples/ex_queue.rb +2 -0
- data/examples/helper.rb +2 -0
- data/ext/cmain.cpp +119 -20
- data/ext/cplusplus.cpp +15 -6
- data/ext/ed.cpp +303 -93
- data/ext/ed.h +49 -22
- data/ext/em.cpp +368 -42
- data/ext/em.h +43 -6
- data/ext/eventmachine.h +21 -8
- data/ext/eventmachine_cpp.h +1 -0
- data/ext/extconf.rb +4 -0
- data/ext/kb.cpp +1 -2
- data/ext/pipe.cpp +1 -3
- data/ext/project.h +21 -0
- data/ext/rubymain.cpp +232 -32
- data/ext/ssl.cpp +38 -1
- data/ext/ssl.h +5 -1
- data/java/src/com/rubyeventmachine/Application.java +7 -3
- data/java/src/com/rubyeventmachine/EmReactor.java +16 -1
- data/java/src/com/rubyeventmachine/tests/ConnectTest.java +25 -3
- data/lib/{protocols → em}/buftok.rb +16 -5
- data/lib/em/callback.rb +26 -0
- data/lib/em/channel.rb +57 -0
- data/lib/em/connection.rb +505 -0
- data/lib/em/deferrable.rb +144 -165
- data/lib/em/file_watch.rb +54 -0
- data/lib/em/future.rb +24 -25
- data/lib/em/messages.rb +1 -1
- data/lib/em/process_watch.rb +44 -0
- data/lib/em/processes.rb +58 -52
- data/lib/em/protocols/header_and_content.rb +138 -0
- data/lib/em/protocols/httpclient.rb +263 -0
- data/lib/em/protocols/httpclient2.rb +582 -0
- data/lib/{protocols → em/protocols}/line_and_text.rb +2 -2
- data/lib/em/protocols/linetext2.rb +160 -0
- data/lib/{protocols → em/protocols}/memcache.rb +37 -7
- data/lib/em/protocols/object_protocol.rb +39 -0
- data/lib/em/protocols/postgres3.rb +247 -0
- data/lib/em/protocols/saslauth.rb +175 -0
- data/lib/em/protocols/smtpclient.rb +331 -0
- data/lib/em/protocols/smtpserver.rb +547 -0
- data/lib/em/protocols/stomp.rb +200 -0
- data/lib/{protocols → em/protocols}/tcptest.rb +21 -25
- data/lib/em/protocols.rb +35 -0
- data/lib/em/queue.rb +61 -0
- data/lib/em/spawnable.rb +53 -56
- data/lib/em/streamer.rb +92 -74
- data/lib/em/timers.rb +55 -0
- data/lib/em/version.rb +3 -0
- data/lib/eventmachine.rb +1008 -1298
- data/lib/evma.rb +1 -1
- data/lib/jeventmachine.rb +106 -101
- data/lib/pr_eventmachine.rb +47 -36
- data/tasks/project.rake +2 -1
- data/tests/client.crt +31 -0
- data/tests/client.key +51 -0
- data/tests/test_attach.rb +18 -0
- data/tests/test_basic.rb +108 -54
- data/tests/test_channel.rb +63 -0
- data/tests/test_connection_count.rb +2 -2
- data/tests/test_epoll.rb +109 -110
- data/tests/test_errors.rb +36 -36
- data/tests/test_exc.rb +22 -25
- data/tests/test_file_watch.rb +49 -0
- data/tests/test_futures.rb +77 -93
- data/tests/test_hc.rb +2 -2
- data/tests/test_httpclient.rb +55 -52
- data/tests/test_httpclient2.rb +110 -112
- data/tests/test_inactivity_timeout.rb +30 -0
- data/tests/test_kb.rb +8 -9
- data/tests/test_ltp2.rb +274 -277
- data/tests/test_next_tick.rb +91 -65
- data/tests/test_object_protocol.rb +37 -0
- data/tests/test_process_watch.rb +48 -0
- data/tests/test_processes.rb +56 -23
- data/tests/test_proxy_connection.rb +92 -0
- data/tests/test_pure.rb +1 -5
- data/tests/test_queue.rb +44 -0
- data/tests/test_running.rb +9 -14
- data/tests/test_sasl.rb +32 -34
- data/tests/test_send_file.rb +175 -176
- data/tests/test_servers.rb +37 -41
- data/tests/test_smtpserver.rb +47 -55
- data/tests/test_spawn.rb +284 -291
- data/tests/test_ssl_args.rb +1 -1
- data/tests/test_ssl_methods.rb +1 -1
- data/tests/test_ssl_verify.rb +82 -0
- data/tests/test_timers.rb +81 -88
- data/tests/test_ud.rb +0 -7
- data/tests/testem.rb +1 -1
- metadata +53 -37
- data/lib/em/eventable.rb +0 -39
- data/lib/eventmachine_version.rb +0 -31
- data/lib/protocols/header_and_content.rb +0 -129
- data/lib/protocols/httpcli2.rb +0 -803
- data/lib/protocols/httpclient.rb +0 -270
- data/lib/protocols/linetext2.rb +0 -161
- data/lib/protocols/postgres.rb +0 -261
- data/lib/protocols/saslauth.rb +0 -179
- data/lib/protocols/smtpclient.rb +0 -308
- data/lib/protocols/smtpserver.rb +0 -556
- data/lib/protocols/stomp.rb +0 -153
- data/tests/test_eventables.rb +0 -77
data/ext/ed.h
CHANGED
|
@@ -67,27 +67,28 @@ class EventableDescriptor: public Bindable_t
|
|
|
67
67
|
virtual bool GetSubprocessPid (pid_t*) {return false;}
|
|
68
68
|
|
|
69
69
|
virtual void StartTls() {}
|
|
70
|
-
virtual void SetTlsParms (const char *privkey_filename, const char *certchain_filename) {}
|
|
70
|
+
virtual void SetTlsParms (const char *privkey_filename, const char *certchain_filename, bool verify_peer) {}
|
|
71
71
|
|
|
72
72
|
#ifdef WITH_SSL
|
|
73
73
|
virtual X509 *GetPeerCert() {return NULL;}
|
|
74
74
|
#endif
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
virtual int GetCommInactivityTimeout (int *value) {return 0;}
|
|
79
|
-
virtual int SetCommInactivityTimeout (int *value) {return 0;}
|
|
76
|
+
virtual float GetCommInactivityTimeout() {return 0.0;}
|
|
77
|
+
virtual int SetCommInactivityTimeout (float value) {return 0;}
|
|
80
78
|
|
|
81
79
|
#ifdef HAVE_EPOLL
|
|
82
80
|
struct epoll_event *GetEpollEvent() { return &EpollEvent; }
|
|
83
81
|
#endif
|
|
84
82
|
|
|
83
|
+
virtual void StartProxy(const char*);
|
|
84
|
+
virtual void StopProxy();
|
|
85
|
+
|
|
85
86
|
private:
|
|
86
87
|
bool bCloseNow;
|
|
87
88
|
bool bCloseAfterWriting;
|
|
88
|
-
int MySocket;
|
|
89
89
|
|
|
90
90
|
protected:
|
|
91
|
+
int MySocket;
|
|
91
92
|
enum {
|
|
92
93
|
// 4 seconds is too short, most other libraries default to OS settings
|
|
93
94
|
// which in 2.6 kernel defaults to a 60 second connect timeout.
|
|
@@ -96,16 +97,17 @@ class EventableDescriptor: public Bindable_t
|
|
|
96
97
|
//
|
|
97
98
|
// updating to 50 seconds, so we catch it before the OS does
|
|
98
99
|
|
|
99
|
-
|
|
100
|
+
// can easily be made an instance variable
|
|
101
|
+
PendingConnectTimeout = 50000000 // now in usec
|
|
100
102
|
};
|
|
101
103
|
|
|
102
104
|
void (*EventCallback)(const char*, int, const char*, int);
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
time_t LastWritten;
|
|
105
|
+
void _GenericInboundDispatch(const char*, int);
|
|
106
|
+
|
|
107
|
+
Int64 CreatedAt;
|
|
107
108
|
bool bCallbackUnbind;
|
|
108
109
|
int UnbindReasonCode;
|
|
110
|
+
char *ProxyTarget;
|
|
109
111
|
|
|
110
112
|
#ifdef HAVE_EPOLL
|
|
111
113
|
struct epoll_event EpollEvent;
|
|
@@ -153,8 +155,8 @@ class ConnectionDescriptor: public EventableDescriptor
|
|
|
153
155
|
|
|
154
156
|
void SetConnectPending (bool f);
|
|
155
157
|
|
|
156
|
-
void SetNotifyReadable (bool
|
|
157
|
-
void SetNotifyWritable (bool
|
|
158
|
+
void SetNotifyReadable (bool);
|
|
159
|
+
void SetNotifyWritable (bool);
|
|
158
160
|
|
|
159
161
|
virtual void Read();
|
|
160
162
|
virtual void Write();
|
|
@@ -167,10 +169,12 @@ class ConnectionDescriptor: public EventableDescriptor
|
|
|
167
169
|
virtual int GetOutboundDataSize() {return OutboundDataSize;}
|
|
168
170
|
|
|
169
171
|
virtual void StartTls();
|
|
170
|
-
virtual void SetTlsParms (const char *privkey_filename, const char *certchain_filename);
|
|
172
|
+
virtual void SetTlsParms (const char *privkey_filename, const char *certchain_filename, bool verify_peer);
|
|
171
173
|
|
|
172
174
|
#ifdef WITH_SSL
|
|
173
175
|
virtual X509 *GetPeerCert();
|
|
176
|
+
virtual bool VerifySslPeer(const char*);
|
|
177
|
+
virtual void AcceptSslPeer();
|
|
174
178
|
#endif
|
|
175
179
|
|
|
176
180
|
void SetServerMode() {bIsServer = true;}
|
|
@@ -178,8 +182,8 @@ class ConnectionDescriptor: public EventableDescriptor
|
|
|
178
182
|
virtual bool GetPeername (struct sockaddr*);
|
|
179
183
|
virtual bool GetSockname (struct sockaddr*);
|
|
180
184
|
|
|
181
|
-
virtual
|
|
182
|
-
virtual int SetCommInactivityTimeout (
|
|
185
|
+
virtual float GetCommInactivityTimeout();
|
|
186
|
+
virtual int SetCommInactivityTimeout (float value);
|
|
183
187
|
|
|
184
188
|
|
|
185
189
|
protected:
|
|
@@ -208,10 +212,16 @@ class ConnectionDescriptor: public EventableDescriptor
|
|
|
208
212
|
std::string CertChainFilename;
|
|
209
213
|
std::string PrivateKeyFilename;
|
|
210
214
|
bool bHandshakeSignaled;
|
|
215
|
+
bool bSslVerifyPeer;
|
|
216
|
+
bool bSslPeerAccepted;
|
|
211
217
|
#endif
|
|
212
218
|
bool bIsServer;
|
|
213
219
|
|
|
214
|
-
|
|
220
|
+
#ifdef HAVE_KQUEUE
|
|
221
|
+
bool bGotExtraKqueueEvent;
|
|
222
|
+
#endif
|
|
223
|
+
|
|
224
|
+
Int64 LastIo;
|
|
215
225
|
int InactivityTimeout;
|
|
216
226
|
|
|
217
227
|
private:
|
|
@@ -251,8 +261,8 @@ class DatagramDescriptor: public EventableDescriptor
|
|
|
251
261
|
virtual bool GetPeername (struct sockaddr*);
|
|
252
262
|
virtual bool GetSockname (struct sockaddr*);
|
|
253
263
|
|
|
254
|
-
virtual
|
|
255
|
-
virtual int SetCommInactivityTimeout (
|
|
264
|
+
virtual float GetCommInactivityTimeout();
|
|
265
|
+
virtual int SetCommInactivityTimeout (float value);
|
|
256
266
|
|
|
257
267
|
static int SendDatagram (const char*, const char*, int, const char*, int);
|
|
258
268
|
|
|
@@ -272,7 +282,7 @@ class DatagramDescriptor: public EventableDescriptor
|
|
|
272
282
|
|
|
273
283
|
struct sockaddr_in ReturnAddress;
|
|
274
284
|
|
|
275
|
-
|
|
285
|
+
Int64 LastIo;
|
|
276
286
|
int InactivityTimeout;
|
|
277
287
|
};
|
|
278
288
|
|
|
@@ -333,7 +343,7 @@ class PipeDescriptor: public EventableDescriptor
|
|
|
333
343
|
|
|
334
344
|
protected:
|
|
335
345
|
bool bReadAttemptedAfterClose;
|
|
336
|
-
|
|
346
|
+
Int64 LastIo;
|
|
337
347
|
int InactivityTimeout;
|
|
338
348
|
|
|
339
349
|
deque<OutboundPage> OutboundPages;
|
|
@@ -366,7 +376,7 @@ class KeyboardDescriptor: public EventableDescriptor
|
|
|
366
376
|
|
|
367
377
|
protected:
|
|
368
378
|
bool bReadAttemptedAfterClose;
|
|
369
|
-
|
|
379
|
+
Int64 LastIo;
|
|
370
380
|
int InactivityTimeout;
|
|
371
381
|
|
|
372
382
|
private:
|
|
@@ -374,6 +384,23 @@ class KeyboardDescriptor: public EventableDescriptor
|
|
|
374
384
|
};
|
|
375
385
|
|
|
376
386
|
|
|
387
|
+
/***********************
|
|
388
|
+
class InotifyDescriptor
|
|
389
|
+
************************/
|
|
390
|
+
|
|
391
|
+
class InotifyDescriptor: public EventableDescriptor
|
|
392
|
+
{
|
|
393
|
+
public:
|
|
394
|
+
InotifyDescriptor (EventMachine_t*);
|
|
395
|
+
virtual ~InotifyDescriptor();
|
|
396
|
+
|
|
397
|
+
void Read();
|
|
398
|
+
void Write();
|
|
399
|
+
|
|
400
|
+
virtual void Heartbeat() {}
|
|
401
|
+
virtual bool SelectForRead() {return true;}
|
|
402
|
+
virtual bool SelectForWrite() {return false;}
|
|
403
|
+
};
|
|
377
404
|
|
|
378
405
|
#endif // __EventableDescriptor__H_
|
|
379
406
|
|