sidekick-client 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (162) hide show
  1. data/VERSION +1 -1
  2. data/lib/sidekick/client/sidekick_client.rb +0 -3
  3. data/lib/sidekick/shared/sidekick_queue_publisher.rb +1 -1
  4. data/sidekick-client.gemspec +1 -158
  5. metadata +1 -158
  6. data/lib/ext/eventmachine-0.12.10/.gitignore +0 -14
  7. data/lib/ext/eventmachine-0.12.10/README +0 -82
  8. data/lib/ext/eventmachine-0.12.10/Rakefile +0 -374
  9. data/lib/ext/eventmachine-0.12.10/docs/COPYING +0 -60
  10. data/lib/ext/eventmachine-0.12.10/docs/ChangeLog +0 -211
  11. data/lib/ext/eventmachine-0.12.10/docs/DEFERRABLES +0 -133
  12. data/lib/ext/eventmachine-0.12.10/docs/EPOLL +0 -141
  13. data/lib/ext/eventmachine-0.12.10/docs/GNU +0 -281
  14. data/lib/ext/eventmachine-0.12.10/docs/INSTALL +0 -13
  15. data/lib/ext/eventmachine-0.12.10/docs/KEYBOARD +0 -38
  16. data/lib/ext/eventmachine-0.12.10/docs/LEGAL +0 -25
  17. data/lib/ext/eventmachine-0.12.10/docs/LIGHTWEIGHT_CONCURRENCY +0 -70
  18. data/lib/ext/eventmachine-0.12.10/docs/PURE_RUBY +0 -75
  19. data/lib/ext/eventmachine-0.12.10/docs/RELEASE_NOTES +0 -94
  20. data/lib/ext/eventmachine-0.12.10/docs/SMTP +0 -2
  21. data/lib/ext/eventmachine-0.12.10/docs/SPAWNED_PROCESSES +0 -89
  22. data/lib/ext/eventmachine-0.12.10/docs/TODO +0 -8
  23. data/lib/ext/eventmachine-0.12.10/eventmachine.gemspec +0 -40
  24. data/lib/ext/eventmachine-0.12.10/examples/ex_channel.rb +0 -43
  25. data/lib/ext/eventmachine-0.12.10/examples/ex_queue.rb +0 -2
  26. data/lib/ext/eventmachine-0.12.10/examples/helper.rb +0 -2
  27. data/lib/ext/eventmachine-0.12.10/ext/binder.cpp +0 -125
  28. data/lib/ext/eventmachine-0.12.10/ext/binder.h +0 -46
  29. data/lib/ext/eventmachine-0.12.10/ext/cmain.cpp +0 -827
  30. data/lib/ext/eventmachine-0.12.10/ext/cplusplus.cpp +0 -202
  31. data/lib/ext/eventmachine-0.12.10/ext/ed.cpp +0 -1893
  32. data/lib/ext/eventmachine-0.12.10/ext/ed.h +0 -424
  33. data/lib/ext/eventmachine-0.12.10/ext/em.cpp +0 -2282
  34. data/lib/ext/eventmachine-0.12.10/ext/em.h +0 -232
  35. data/lib/ext/eventmachine-0.12.10/ext/emwin.cpp +0 -300
  36. data/lib/ext/eventmachine-0.12.10/ext/emwin.h +0 -94
  37. data/lib/ext/eventmachine-0.12.10/ext/epoll.cpp +0 -26
  38. data/lib/ext/eventmachine-0.12.10/ext/epoll.h +0 -25
  39. data/lib/ext/eventmachine-0.12.10/ext/eventmachine.h +0 -122
  40. data/lib/ext/eventmachine-0.12.10/ext/eventmachine_cpp.h +0 -96
  41. data/lib/ext/eventmachine-0.12.10/ext/extconf.rb +0 -148
  42. data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/extconf.rb +0 -83
  43. data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/mapper.cpp +0 -214
  44. data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/mapper.h +0 -59
  45. data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/rubymain.cpp +0 -127
  46. data/lib/ext/eventmachine-0.12.10/ext/files.cpp +0 -94
  47. data/lib/ext/eventmachine-0.12.10/ext/files.h +0 -65
  48. data/lib/ext/eventmachine-0.12.10/ext/kb.cpp +0 -81
  49. data/lib/ext/eventmachine-0.12.10/ext/page.cpp +0 -107
  50. data/lib/ext/eventmachine-0.12.10/ext/page.h +0 -51
  51. data/lib/ext/eventmachine-0.12.10/ext/pipe.cpp +0 -349
  52. data/lib/ext/eventmachine-0.12.10/ext/project.h +0 -151
  53. data/lib/ext/eventmachine-0.12.10/ext/rubymain.cpp +0 -1166
  54. data/lib/ext/eventmachine-0.12.10/ext/sigs.cpp +0 -89
  55. data/lib/ext/eventmachine-0.12.10/ext/sigs.h +0 -32
  56. data/lib/ext/eventmachine-0.12.10/ext/ssl.cpp +0 -460
  57. data/lib/ext/eventmachine-0.12.10/ext/ssl.h +0 -94
  58. data/lib/ext/eventmachine-0.12.10/java/.classpath +0 -8
  59. data/lib/ext/eventmachine-0.12.10/java/.project +0 -17
  60. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EmReactor.java +0 -570
  61. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EmReactorException.java +0 -40
  62. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableChannel.java +0 -69
  63. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableDatagramChannel.java +0 -189
  64. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableSocketChannel.java +0 -364
  65. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Application.java +0 -194
  66. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Connection.java +0 -74
  67. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/ConnectionFactory.java +0 -37
  68. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/DefaultConnectionFactory.java +0 -46
  69. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/PeriodicTimer.java +0 -38
  70. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Timer.java +0 -54
  71. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/ApplicationTest.java +0 -109
  72. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/ConnectTest.java +0 -148
  73. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/EMTest.java +0 -80
  74. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestDatagrams.java +0 -53
  75. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestServers.java +0 -75
  76. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestTimers.java +0 -90
  77. data/lib/ext/eventmachine-0.12.10/lib/em/buftok.rb +0 -138
  78. data/lib/ext/eventmachine-0.12.10/lib/em/callback.rb +0 -26
  79. data/lib/ext/eventmachine-0.12.10/lib/em/channel.rb +0 -57
  80. data/lib/ext/eventmachine-0.12.10/lib/em/connection.rb +0 -564
  81. data/lib/ext/eventmachine-0.12.10/lib/em/deferrable.rb +0 -192
  82. data/lib/ext/eventmachine-0.12.10/lib/em/file_watch.rb +0 -54
  83. data/lib/ext/eventmachine-0.12.10/lib/em/future.rb +0 -61
  84. data/lib/ext/eventmachine-0.12.10/lib/em/messages.rb +0 -66
  85. data/lib/ext/eventmachine-0.12.10/lib/em/process_watch.rb +0 -44
  86. data/lib/ext/eventmachine-0.12.10/lib/em/processes.rb +0 -119
  87. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/header_and_content.rb +0 -138
  88. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/httpclient.rb +0 -263
  89. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/httpclient2.rb +0 -590
  90. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/line_and_text.rb +0 -125
  91. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/linetext2.rb +0 -161
  92. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/memcache.rb +0 -323
  93. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/object_protocol.rb +0 -45
  94. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/postgres3.rb +0 -247
  95. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/saslauth.rb +0 -175
  96. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/smtpclient.rb +0 -357
  97. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/smtpserver.rb +0 -547
  98. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/socks4.rb +0 -66
  99. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/stomp.rb +0 -200
  100. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/tcptest.rb +0 -53
  101. data/lib/ext/eventmachine-0.12.10/lib/em/protocols.rb +0 -36
  102. data/lib/ext/eventmachine-0.12.10/lib/em/queue.rb +0 -61
  103. data/lib/ext/eventmachine-0.12.10/lib/em/spawnable.rb +0 -85
  104. data/lib/ext/eventmachine-0.12.10/lib/em/streamer.rb +0 -130
  105. data/lib/ext/eventmachine-0.12.10/lib/em/timers.rb +0 -56
  106. data/lib/ext/eventmachine-0.12.10/lib/em/version.rb +0 -3
  107. data/lib/ext/eventmachine-0.12.10/lib/eventmachine.rb +0 -1592
  108. data/lib/ext/eventmachine-0.12.10/lib/evma/callback.rb +0 -32
  109. data/lib/ext/eventmachine-0.12.10/lib/evma/container.rb +0 -75
  110. data/lib/ext/eventmachine-0.12.10/lib/evma/factory.rb +0 -77
  111. data/lib/ext/eventmachine-0.12.10/lib/evma/protocol.rb +0 -87
  112. data/lib/ext/eventmachine-0.12.10/lib/evma/reactor.rb +0 -48
  113. data/lib/ext/eventmachine-0.12.10/lib/evma.rb +0 -32
  114. data/lib/ext/eventmachine-0.12.10/lib/jeventmachine.rb +0 -257
  115. data/lib/ext/eventmachine-0.12.10/lib/pr_eventmachine.rb +0 -1022
  116. data/lib/ext/eventmachine-0.12.10/setup.rb +0 -1585
  117. data/lib/ext/eventmachine-0.12.10/tasks/cpp.rake_example +0 -77
  118. data/lib/ext/eventmachine-0.12.10/tests/client.crt +0 -31
  119. data/lib/ext/eventmachine-0.12.10/tests/client.key +0 -51
  120. data/lib/ext/eventmachine-0.12.10/tests/test_attach.rb +0 -126
  121. data/lib/ext/eventmachine-0.12.10/tests/test_basic.rb +0 -284
  122. data/lib/ext/eventmachine-0.12.10/tests/test_channel.rb +0 -63
  123. data/lib/ext/eventmachine-0.12.10/tests/test_connection_count.rb +0 -35
  124. data/lib/ext/eventmachine-0.12.10/tests/test_defer.rb +0 -47
  125. data/lib/ext/eventmachine-0.12.10/tests/test_epoll.rb +0 -160
  126. data/lib/ext/eventmachine-0.12.10/tests/test_error_handler.rb +0 -35
  127. data/lib/ext/eventmachine-0.12.10/tests/test_errors.rb +0 -82
  128. data/lib/ext/eventmachine-0.12.10/tests/test_exc.rb +0 -55
  129. data/lib/ext/eventmachine-0.12.10/tests/test_file_watch.rb +0 -49
  130. data/lib/ext/eventmachine-0.12.10/tests/test_futures.rb +0 -198
  131. data/lib/ext/eventmachine-0.12.10/tests/test_get_sock_opt.rb +0 -30
  132. data/lib/ext/eventmachine-0.12.10/tests/test_handler_check.rb +0 -37
  133. data/lib/ext/eventmachine-0.12.10/tests/test_hc.rb +0 -218
  134. data/lib/ext/eventmachine-0.12.10/tests/test_httpclient.rb +0 -218
  135. data/lib/ext/eventmachine-0.12.10/tests/test_httpclient2.rb +0 -153
  136. data/lib/ext/eventmachine-0.12.10/tests/test_inactivity_timeout.rb +0 -50
  137. data/lib/ext/eventmachine-0.12.10/tests/test_kb.rb +0 -60
  138. data/lib/ext/eventmachine-0.12.10/tests/test_ltp.rb +0 -182
  139. data/lib/ext/eventmachine-0.12.10/tests/test_ltp2.rb +0 -317
  140. data/lib/ext/eventmachine-0.12.10/tests/test_next_tick.rb +0 -133
  141. data/lib/ext/eventmachine-0.12.10/tests/test_object_protocol.rb +0 -37
  142. data/lib/ext/eventmachine-0.12.10/tests/test_pause.rb +0 -70
  143. data/lib/ext/eventmachine-0.12.10/tests/test_pending_connect_timeout.rb +0 -48
  144. data/lib/ext/eventmachine-0.12.10/tests/test_process_watch.rb +0 -48
  145. data/lib/ext/eventmachine-0.12.10/tests/test_processes.rb +0 -128
  146. data/lib/ext/eventmachine-0.12.10/tests/test_proxy_connection.rb +0 -92
  147. data/lib/ext/eventmachine-0.12.10/tests/test_pure.rb +0 -125
  148. data/lib/ext/eventmachine-0.12.10/tests/test_queue.rb +0 -44
  149. data/lib/ext/eventmachine-0.12.10/tests/test_running.rb +0 -42
  150. data/lib/ext/eventmachine-0.12.10/tests/test_sasl.rb +0 -72
  151. data/lib/ext/eventmachine-0.12.10/tests/test_send_file.rb +0 -242
  152. data/lib/ext/eventmachine-0.12.10/tests/test_servers.rb +0 -76
  153. data/lib/ext/eventmachine-0.12.10/tests/test_smtpclient.rb +0 -83
  154. data/lib/ext/eventmachine-0.12.10/tests/test_smtpserver.rb +0 -85
  155. data/lib/ext/eventmachine-0.12.10/tests/test_spawn.rb +0 -322
  156. data/lib/ext/eventmachine-0.12.10/tests/test_ssl_args.rb +0 -79
  157. data/lib/ext/eventmachine-0.12.10/tests/test_ssl_methods.rb +0 -50
  158. data/lib/ext/eventmachine-0.12.10/tests/test_ssl_verify.rb +0 -82
  159. data/lib/ext/eventmachine-0.12.10/tests/test_timers.rb +0 -162
  160. data/lib/ext/eventmachine-0.12.10/tests/test_ud.rb +0 -36
  161. data/lib/ext/eventmachine-0.12.10/tests/testem.rb +0 -31
  162. data/lib/ext/eventmachine-0.12.10/web/whatis +0 -7
@@ -1,232 +0,0 @@
1
- /*****************************************************************************
2
-
3
- $Id$
4
-
5
- File: em.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
-
22
- #ifdef OS_WIN32
23
- #include "emwin.h"
24
- #endif
25
-
26
-
27
- // THIS ENTIRE FILE WILL EVENTUALLY BE FOR UNIX BUILDS ONLY.
28
- //#ifdef OS_UNIX
29
-
30
- #ifndef __EventMachine__H_
31
- #define __EventMachine__H_
32
-
33
- #ifdef BUILD_FOR_RUBY
34
- #include <ruby.h>
35
- #define EmSelect rb_thread_select
36
-
37
- #if defined(HAVE_RBTRAP)
38
- #include <rubysig.h>
39
- #elif defined(HAVE_RB_THREAD_CHECK_INTS)
40
- extern "C" {
41
- void rb_enable_interrupt(void);
42
- void rb_disable_interrupt(void);
43
- }
44
-
45
- #define TRAP_BEG rb_enable_interrupt()
46
- #define TRAP_END do { rb_disable_interrupt(); rb_thread_check_ints(); } while(0)
47
- #else
48
- #define TRAP_BEG
49
- #define TRAP_END
50
- #endif
51
-
52
- // 1.9.0 compat
53
- #ifndef RUBY_UBF_IO
54
- #define RUBY_UBF_IO RB_UBF_DFL
55
- #endif
56
- #else
57
- #define EmSelect select
58
- #endif
59
-
60
-
61
- #ifdef OS_UNIX
62
- typedef long long Int64;
63
- #endif
64
- #ifdef OS_WIN32
65
- typedef __int64 Int64;
66
- #endif
67
-
68
- extern Int64 gCurrentLoopTime;
69
-
70
- class EventableDescriptor;
71
- class InotifyDescriptor;
72
-
73
-
74
- /********************
75
- class EventMachine_t
76
- ********************/
77
-
78
- class EventMachine_t
79
- {
80
- public:
81
- static int GetMaxTimerCount();
82
- static void SetMaxTimerCount (int);
83
-
84
- public:
85
- EventMachine_t (void(*event_callback)(const unsigned long, int, const char*, const unsigned long));
86
- virtual ~EventMachine_t();
87
-
88
- void Run();
89
- void ScheduleHalt();
90
- void SignalLoopBreaker();
91
- const unsigned long InstallOneshotTimer (int);
92
- const unsigned long ConnectToServer (const char *, int, const char *, int);
93
- const unsigned long ConnectToUnixServer (const char *);
94
-
95
- const unsigned long CreateTcpServer (const char *, int);
96
- const unsigned long OpenDatagramSocket (const char *, int);
97
- const unsigned long CreateUnixDomainServer (const char*);
98
- const unsigned long _OpenFileForWriting (const char*);
99
- const unsigned long OpenKeyboard();
100
- //const char *Popen (const char*, const char*);
101
- const unsigned long Socketpair (char* const*);
102
-
103
- void Add (EventableDescriptor*);
104
- void Modify (EventableDescriptor*);
105
-
106
- const unsigned long AttachFD (int, bool);
107
- int DetachFD (EventableDescriptor*);
108
-
109
- void ArmKqueueWriter (EventableDescriptor*);
110
- void ArmKqueueReader (EventableDescriptor*);
111
-
112
- void SetTimerQuantum (int);
113
- static void SetuidString (const char*);
114
- static int SetRlimitNofile (int);
115
-
116
- pid_t SubprocessPid;
117
- int SubprocessExitStatus;
118
-
119
- int GetConnectionCount();
120
- float GetHeartbeatInterval();
121
- int SetHeartbeatInterval(float);
122
-
123
- const unsigned long WatchFile (const char*);
124
- void UnwatchFile (int);
125
- void UnwatchFile (const unsigned long);
126
-
127
- #ifdef HAVE_KQUEUE
128
- void _HandleKqueueFileEvent (struct kevent*);
129
- void _RegisterKqueueFileEvent(int);
130
- #endif
131
-
132
- const unsigned long WatchPid (int);
133
- void UnwatchPid (int);
134
- void UnwatchPid (const unsigned long);
135
-
136
- #ifdef HAVE_KQUEUE
137
- void _HandleKqueuePidEvent (struct kevent*);
138
- #endif
139
-
140
- // Temporary:
141
- void _UseEpoll();
142
- void _UseKqueue();
143
-
144
- bool UsingKqueue() { return bKqueue; }
145
- bool UsingEpoll() { return bEpoll; }
146
-
147
- private:
148
- bool _RunOnce();
149
- bool _RunTimers();
150
- void _UpdateTime();
151
- void _AddNewDescriptors();
152
- void _ModifyDescriptors();
153
- void _InitializeLoopBreaker();
154
-
155
- bool _RunSelectOnce();
156
- bool _RunEpollOnce();
157
- bool _RunKqueueOnce();
158
-
159
- void _ModifyEpollEvent (EventableDescriptor*);
160
-
161
- public:
162
- void _ReadLoopBreaker();
163
- void _ReadInotifyEvents();
164
-
165
- private:
166
- enum {
167
- MaxEpollDescriptors = 64*1024,
168
- MaxEvents = 4096
169
- };
170
- int HeartbeatInterval;
171
- void (*EventCallback)(const unsigned long, int, const char*, const unsigned long);
172
-
173
- class Timer_t: public Bindable_t {
174
- };
175
-
176
- multimap<Int64, Timer_t> Timers;
177
- map<int, Bindable_t*> Files;
178
- map<int, Bindable_t*> Pids;
179
- vector<EventableDescriptor*> Descriptors;
180
- vector<EventableDescriptor*> NewDescriptors;
181
- set<EventableDescriptor*> ModifiedDescriptors;
182
-
183
- Int64 NextHeartbeatTime;
184
-
185
- int LoopBreakerReader;
186
- int LoopBreakerWriter;
187
- #ifdef OS_WIN32
188
- struct sockaddr_in LoopBreakerTarget;
189
- #endif
190
-
191
- timeval Quantum;
192
-
193
- private:
194
- bool bEpoll;
195
- int epfd; // Epoll file-descriptor
196
- #ifdef HAVE_EPOLL
197
- struct epoll_event epoll_events [MaxEvents];
198
- #endif
199
-
200
- bool bKqueue;
201
- int kqfd; // Kqueue file-descriptor
202
- #ifdef HAVE_KQUEUE
203
- struct kevent Karray [MaxEvents];
204
- #endif
205
-
206
- InotifyDescriptor *inotify; // pollable descriptor for our inotify instance
207
- };
208
-
209
-
210
- /*******************
211
- struct SelectData_t
212
- *******************/
213
-
214
- struct SelectData_t
215
- {
216
- SelectData_t();
217
-
218
- int _Select();
219
-
220
- int maxsocket;
221
- fd_set fdreads;
222
- fd_set fdwrites;
223
- fd_set fderrors;
224
- timeval tv;
225
- int nSockets;
226
- };
227
-
228
-
229
-
230
- #endif // __EventMachine__H_
231
-
232
- //#endif // OS_UNIX
@@ -1,300 +0,0 @@
1
- /*****************************************************************************
2
-
3
- $Id$
4
-
5
- File: emwin.cpp
6
- Date: 05May06
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
- // THIS ENTIRE FILE IS FOR WINDOWS BUILDS ONLY
22
- // INCOMPLETE AND DISABLED FOR NOW.
23
- #ifdef xOS_WIN32
24
-
25
- #include "project.h"
26
-
27
-
28
- // Keep a global variable floating around
29
- // with the current loop time as set by the Event Machine.
30
- // This avoids the need for frequent expensive calls to time(NULL);
31
- time_t gCurrentLoopTime;
32
-
33
-
34
- /******************************
35
- EventMachine_t::EventMachine_t
36
- ******************************/
37
-
38
- EventMachine_t::EventMachine_t (void (*event_callback)(const char*, int, const char*, int)):
39
- EventCallback (event_callback),
40
- NextHeartbeatTime (0)
41
- {
42
- gTerminateSignalReceived = false;
43
- Iocp = NULL;
44
- }
45
-
46
-
47
- /*******************************
48
- EventMachine_t::~EventMachine_t
49
- *******************************/
50
-
51
- EventMachine_t::~EventMachine_t()
52
- {
53
- cerr << "EM __dt\n";
54
- if (Iocp)
55
- CloseHandle (Iocp);
56
- }
57
-
58
-
59
- /****************************
60
- EventMachine_t::ScheduleHalt
61
- ****************************/
62
-
63
- void EventMachine_t::ScheduleHalt()
64
- {
65
- /* This is how we stop the machine.
66
- * This can be called by clients. Signal handlers will probably
67
- * set the global flag.
68
- * For now this means there can only be one EventMachine ever running at a time.
69
- */
70
- gTerminateSignalReceived = true;
71
- }
72
-
73
-
74
-
75
- /*******************
76
- EventMachine_t::Run
77
- *******************/
78
-
79
- void EventMachine_t::Run()
80
- {
81
- HookControlC (true);
82
-
83
- Iocp = CreateIoCompletionPort (INVALID_HANDLE_VALUE, NULL, 0, 0);
84
- if (Iocp == NULL)
85
- throw std::runtime_error ("no completion port");
86
-
87
-
88
- DWORD nBytes, nCompletionKey;
89
- LPOVERLAPPED Overlapped;
90
-
91
- do {
92
- gCurrentLoopTime = time(NULL);
93
- // Have some kind of strategy that will dequeue maybe up to 10 completions
94
- // without running the timers as long as they are available immediately.
95
- // Otherwise in a busy server we're calling them every time through the loop.
96
- if (!_RunTimers())
97
- break;
98
- if (GetQueuedCompletionStatus (Iocp, &nBytes, &nCompletionKey, &Overlapped, 1000)) {
99
- }
100
- cerr << "+";
101
- } while (!gTerminateSignalReceived);
102
-
103
-
104
- /*
105
- while (true) {
106
- gCurrentLoopTime = time(NULL);
107
- if (!_RunTimers())
108
- break;
109
- _AddNewDescriptors();
110
- if (!_RunOnce())
111
- break;
112
- if (gTerminateSignalReceived)
113
- break;
114
- }
115
- */
116
-
117
- HookControlC (false);
118
- }
119
-
120
-
121
- /**************************
122
- EventMachine_t::_RunTimers
123
- **************************/
124
-
125
- bool EventMachine_t::_RunTimers()
126
- {
127
- // These are caller-defined timer handlers.
128
- // Return T/F to indicate whether we should continue the main loop.
129
- // We rely on the fact that multimaps sort by their keys to avoid
130
- // inspecting the whole list every time we come here.
131
- // Just keep inspecting and processing the list head until we hit
132
- // one that hasn't expired yet.
133
-
134
- while (true) {
135
- multimap<time_t,Timer_t>::iterator i = Timers.begin();
136
- if (i == Timers.end())
137
- break;
138
- if (i->first > gCurrentLoopTime)
139
- break;
140
- if (EventCallback)
141
- (*EventCallback) (NULL, EM_TIMER_FIRED, NULL, i->second.GetBinding());
142
- Timers.erase (i);
143
- }
144
- return true;
145
- }
146
-
147
-
148
- /***********************************
149
- EventMachine_t::InstallOneshotTimer
150
- ***********************************/
151
-
152
- const char *EventMachine_t::InstallOneshotTimer (int seconds)
153
- {
154
- if (Timers.size() > MaxOutstandingTimers)
155
- return false;
156
- // Don't use the global loop-time variable here, because we might
157
- // get called before the main event machine is running.
158
-
159
- Timer_t t;
160
- Timers.insert (make_pair (time(NULL) + seconds, t));
161
- return t.GetBinding();
162
- }
163
-
164
-
165
- /**********************************
166
- EventMachine_t::OpenDatagramSocket
167
- **********************************/
168
-
169
- const char *EventMachine_t::OpenDatagramSocket (const char *address, int port)
170
- {
171
- cerr << "OPEN DATAGRAM SOCKET\n";
172
- return "Unimplemented";
173
- }
174
-
175
-
176
- /*******************************
177
- EventMachine_t::CreateTcpServer
178
- *******************************/
179
-
180
- const char *EventMachine_t::CreateTcpServer (const char *server, int port)
181
- {
182
- /* Create a TCP-acceptor (server) socket and add it to the event machine.
183
- * Return the binding of the new acceptor to the caller.
184
- * This binding will be referenced when the new acceptor sends events
185
- * to indicate accepted connections.
186
- */
187
-
188
- const char *output_binding = NULL;
189
-
190
- struct sockaddr_in sin;
191
-
192
- SOCKET sd_accept = socket (AF_INET, SOCK_STREAM, 0);
193
- if (sd_accept == INVALID_SOCKET) {
194
- goto fail;
195
- }
196
-
197
- memset (&sin, 0, sizeof(sin));
198
- sin.sin_family = AF_INET;
199
- sin.sin_addr.s_addr = INADDR_ANY;
200
- sin.sin_port = htons (port);
201
-
202
- if (server && *server) {
203
- sin.sin_addr.s_addr = inet_addr (server);
204
- if (sin.sin_addr.s_addr == INADDR_NONE) {
205
- hostent *hp = gethostbyname (server);
206
- if (hp == NULL) {
207
- //__warning ("hostname not resolved: ", server);
208
- goto fail;
209
- }
210
- sin.sin_addr.s_addr = ((in_addr*)(hp->h_addr))->s_addr;
211
- }
212
- }
213
-
214
-
215
- // No need to set reuseaddr on Windows.
216
-
217
-
218
- if (bind (sd_accept, (struct sockaddr*)&sin, sizeof(sin))) {
219
- //__warning ("binding failed");
220
- goto fail;
221
- }
222
-
223
- if (listen (sd_accept, 100)) {
224
- //__warning ("listen failed");
225
- goto fail;
226
- }
227
-
228
- { // Looking good.
229
- AcceptorDescriptor *ad = new AcceptorDescriptor (this, sd_accept);
230
- if (!ad)
231
- throw std::runtime_error ("unable to allocate acceptor");
232
- Add (ad);
233
- output_binding = ad->GetBinding();
234
-
235
- CreateIoCompletionPort ((HANDLE)sd_accept, Iocp, NULL, 0);
236
- SOCKET sd = socket (AF_INET, SOCK_STREAM, 0);
237
- CreateIoCompletionPort ((HANDLE)sd, Iocp, NULL, 0);
238
- AcceptEx (sd_accept, sd,
239
- }
240
-
241
- return output_binding;
242
-
243
- fail:
244
- if (sd_accept != INVALID_SOCKET)
245
- closesocket (sd_accept);
246
- return NULL;
247
- }
248
-
249
-
250
- /*******************************
251
- EventMachine_t::ConnectToServer
252
- *******************************/
253
-
254
- const char *EventMachine_t::ConnectToServer (const char *server, int port)
255
- {
256
- if (!server || !*server || !port)
257
- return NULL;
258
-
259
- sockaddr_in pin;
260
- unsigned long HostAddr;
261
-
262
- HostAddr = inet_addr (server);
263
- if (HostAddr == INADDR_NONE) {
264
- hostent *hp = gethostbyname (server);
265
- if (!hp)
266
- return NULL;
267
- HostAddr = ((in_addr*)(hp->h_addr))->s_addr;
268
- }
269
-
270
- memset (&pin, 0, sizeof(pin));
271
- pin.sin_family = AF_INET;
272
- pin.sin_addr.s_addr = HostAddr;
273
- pin.sin_port = htons (port);
274
-
275
- int sd = socket (AF_INET, SOCK_STREAM, 0);
276
- if (sd == INVALID_SOCKET)
277
- return NULL;
278
-
279
-
280
- LPOVERLAPPED olap = (LPOVERLAPPED) calloc (1, sizeof (OVERLAPPED));
281
- cerr << "I'm dying now\n";
282
- throw runtime_error ("UNIMPLEMENTED!!!\n");
283
-
284
- }
285
-
286
-
287
-
288
- /*******************
289
- EventMachine_t::Add
290
- *******************/
291
-
292
- void EventMachine_t::Add (EventableDescriptor *ed)
293
- {
294
- cerr << "ADD\n";
295
- }
296
-
297
-
298
-
299
- #endif // OS_WIN32
300
-
@@ -1,94 +0,0 @@
1
- /*****************************************************************************
2
-
3
- $Id$
4
-
5
- File: emwin.h
6
- Date: 05May06
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
- // THIS ENTIRE FILE IS FOR WINDOWS BUILDS ONLY.
22
- // INCOMPLETE AND DISABLED FOR NOW.
23
- #ifdef xOS_WIN32
24
-
25
- #ifndef __EventMachine__H_
26
- #define __EventMachine__H_
27
-
28
-
29
- extern time_t gCurrentLoopTime;
30
-
31
- class EventableDescriptor;
32
-
33
-
34
- /********************
35
- class EventMachine_t
36
- ********************/
37
-
38
- class EventMachine_t
39
- {
40
- public:
41
- EventMachine_t (void(*event_callback)(const char*, int, const char*, int));
42
- virtual ~EventMachine_t();
43
-
44
- void Run();
45
- void ScheduleHalt();
46
- const char *InstallOneshotTimer (int);
47
- const char *ConnectToServer (const char *, int);
48
- const char *CreateTcpServer (const char *, int);
49
- const char *OpenDatagramSocket (const char *, int);
50
-
51
- void Add (EventableDescriptor*);
52
-
53
- public:
54
- enum { // Event names
55
- TIMER_FIRED = 100,
56
- CONNECTION_READ = 101,
57
- CONNECTION_UNBOUND = 102,
58
- CONNECTION_ACCEPTED = 103,
59
- CONNECTION_COMPLETED = 104,
60
- LOOPBREAK_SIGNAL = 105
61
- };
62
-
63
- private:
64
- HANDLE Iocp;
65
-
66
- private:
67
- bool _RunOnce();
68
- bool _RunTimers();
69
- void _AddNewDescriptors();
70
-
71
- private:
72
- enum {
73
- MaxOutstandingTimers = 40,
74
- HeartbeatInterval = 2
75
- };
76
- void (*EventCallback)(const char*, int, const char*, int);
77
-
78
- class Timer_t: public Bindable_t {
79
- };
80
-
81
- multimap<time_t, Timer_t> Timers;
82
- vector<EventableDescriptor*> Descriptors;
83
- vector<EventableDescriptor*> NewDescriptors;
84
-
85
- time_t NextHeartbeatTime;
86
- };
87
-
88
-
89
-
90
-
91
- #endif // __EventMachine__H_
92
-
93
- #endif // OS_WIN32
94
-
@@ -1,26 +0,0 @@
1
- /*****************************************************************************
2
-
3
- $Id$
4
-
5
- File: epoll.cpp
6
- Date: 06Jun07
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
- #ifdef HAVE_EPOLL
22
-
23
- #include "project.h"
24
-
25
- #endif // HAVE_EPOLL
26
-
@@ -1,25 +0,0 @@
1
- /*****************************************************************************
2
-
3
- $Id$
4
-
5
- File: epoll.h
6
- Date: 06Jun07
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
- #ifdef HAVE_EPOLL
22
-
23
-
24
- #endif // HAVE_EPOLL
25
-