sidekick-client 0.2.1 → 0.2.2

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 (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
-