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