starfish 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. data/LICENSE +10 -0
  2. data/README +136 -0
  3. data/Rakefile +89 -0
  4. data/bin/starfish +27 -0
  5. data/doc/classes/MapReduce/ActiveRecord/Base/Client.html +177 -0
  6. data/doc/classes/MapReduce/ActiveRecord/Base/Client.src/M000016.html +19 -0
  7. data/doc/classes/MapReduce/ActiveRecord/Base/Client.src/M000017.html +20 -0
  8. data/doc/classes/MapReduce/ActiveRecord/Base/Client.src/M000018.html +18 -0
  9. data/doc/classes/MapReduce/ActiveRecord/Base.html +170 -0
  10. data/doc/classes/MapReduce/ActiveRecord/Base.src/M000015.html +39 -0
  11. data/doc/classes/MapReduce/ActiveRecord.html +111 -0
  12. data/doc/classes/MapReduce/Array.html +105 -0
  13. data/doc/classes/MapReduce/File.html +105 -0
  14. data/doc/classes/MapReduce.html +395 -0
  15. data/doc/classes/MapReduce.src/M000001.html +31 -0
  16. data/doc/classes/MapReduce.src/M000002.html +18 -0
  17. data/doc/classes/MapReduce.src/M000003.html +25 -0
  18. data/doc/classes/MapReduce.src/M000004.html +21 -0
  19. data/doc/classes/MapReduce.src/M000005.html +18 -0
  20. data/doc/classes/MapReduce.src/M000006.html +18 -0
  21. data/doc/classes/MapReduce.src/M000007.html +19 -0
  22. data/doc/classes/MapReduce.src/M000008.html +18 -0
  23. data/doc/classes/MapReduce.src/M000009.html +19 -0
  24. data/doc/classes/MapReduce.src/M000010.html +23 -0
  25. data/doc/classes/MapReduce.src/M000011.html +24 -0
  26. data/doc/classes/MapReduce.src/M000012.html +23 -0
  27. data/doc/classes/MapReduce.src/M000013.html +18 -0
  28. data/doc/classes/MapReduce.src/M000014.html +26 -0
  29. data/doc/classes/MapReduceError.html +111 -0
  30. data/doc/classes/Starfish/RingFinger.html +131 -0
  31. data/doc/classes/Starfish/RingFinger.src/M000031.html +20 -0
  32. data/doc/classes/Starfish.html +357 -0
  33. data/doc/classes/Starfish.src/M000019.html +19 -0
  34. data/doc/classes/Starfish.src/M000020.html +18 -0
  35. data/doc/classes/Starfish.src/M000021.html +45 -0
  36. data/doc/classes/Starfish.src/M000022.html +71 -0
  37. data/doc/classes/Starfish.src/M000023.html +23 -0
  38. data/doc/classes/Starfish.src/M000024.html +36 -0
  39. data/doc/classes/Starfish.src/M000025.html +35 -0
  40. data/doc/classes/Starfish.src/M000026.html +18 -0
  41. data/doc/classes/Starfish.src/M000027.html +22 -0
  42. data/doc/classes/Starfish.src/M000028.html +18 -0
  43. data/doc/classes/Starfish.src/M000029.html +18 -0
  44. data/doc/classes/Starfish.src/M000030.html +18 -0
  45. data/doc/classes/StarfishError.html +111 -0
  46. data/doc/created.rid +1 -0
  47. data/doc/files/README.html +336 -0
  48. data/doc/files/lib/map_reduce/active_record_rb.html +109 -0
  49. data/doc/files/lib/map_reduce/array_rb.html +101 -0
  50. data/doc/files/lib/map_reduce/file_rb.html +101 -0
  51. data/doc/files/lib/map_reduce_rb.html +111 -0
  52. data/doc/files/lib/starfish_rb.html +114 -0
  53. data/doc/fr_class_index.html +36 -0
  54. data/doc/fr_file_index.html +32 -0
  55. data/doc/fr_method_index.html +57 -0
  56. data/doc/index.html +24 -0
  57. data/doc/rdoc-style.css +208 -0
  58. data/examples/foo.rb +20 -0
  59. data/examples/map_reduce/active_record.rb +10 -0
  60. data/examples/map_reduce/file.rb +11 -0
  61. data/lib/map_reduce/active_record.rb +98 -0
  62. data/lib/map_reduce/array.rb +4 -0
  63. data/lib/map_reduce/file.rb +4 -0
  64. data/lib/map_reduce.rb +121 -0
  65. data/lib/starfish.rb +200 -0
  66. metadata +124 -0
@@ -0,0 +1,357 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Starfish</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Starfish</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/starfish_rb.html">
59
+ lib/starfish.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+
82
+
83
+ </div>
84
+
85
+ <div id="method-list">
86
+ <h3 class="section-bar">Methods</h3>
87
+
88
+ <div class="name-list">
89
+ <a href="#M000022">client</a>&nbsp;&nbsp;
90
+ <a href="#M000029">client=</a>&nbsp;&nbsp;
91
+ <a href="#M000025">negotiate</a>&nbsp;&nbsp;
92
+ <a href="#M000019">new</a>&nbsp;&nbsp;
93
+ <a href="#M000030">options=</a>&nbsp;&nbsp;
94
+ <a href="#M000024">sanitize</a>&nbsp;&nbsp;
95
+ <a href="#M000021">server</a>&nbsp;&nbsp;
96
+ <a href="#M000028">server=</a>&nbsp;&nbsp;
97
+ <a href="#M000026">spawn</a>&nbsp;&nbsp;
98
+ <a href="#M000023">stats</a>&nbsp;&nbsp;
99
+ <a href="#M000027">stop</a>&nbsp;&nbsp;
100
+ <a href="#M000020">uniq</a>&nbsp;&nbsp;
101
+ </div>
102
+ </div>
103
+
104
+ </div>
105
+
106
+
107
+ <!-- if includes -->
108
+ <div id="includes">
109
+ <h3 class="section-bar">Included Modules</h3>
110
+
111
+ <div id="includes-list">
112
+ <span class="include-name">Rinda</span>
113
+ <span class="include-name">DRbUndumped</span>
114
+ </div>
115
+ </div>
116
+
117
+ <div id="section">
118
+
119
+ <div id="class-list">
120
+ <h3 class="section-bar">Classes and Modules</h3>
121
+
122
+ Module <a href="Starfish/RingFinger.html" class="link">Starfish::RingFinger</a><br />
123
+
124
+ </div>
125
+
126
+ <div id="constants-list">
127
+ <h3 class="section-bar">Constants</h3>
128
+
129
+ <div class="name-list">
130
+ <table summary="Constants">
131
+ <tr class="top-aligned-row context-row">
132
+ <td class="context-item-name">VERSION</td>
133
+ <td>=</td>
134
+ <td class="context-item-value">&quot;1.0.0&quot;</td>
135
+ </tr>
136
+ </table>
137
+ </div>
138
+ </div>
139
+
140
+
141
+
142
+ <div id="attribute-list">
143
+ <h3 class="section-bar">Attributes</h3>
144
+
145
+ <div class="name-list">
146
+ <table>
147
+ <tr class="top-aligned-row context-row">
148
+ <td class="context-item-name">ring_server</td>
149
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
150
+ <td class="context-item-desc"></td>
151
+ </tr>
152
+ <tr class="top-aligned-row context-row">
153
+ <td class="context-item-name">server</td>
154
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
155
+ <td class="context-item-desc"></td>
156
+ </tr>
157
+ <tr class="top-aligned-row context-row">
158
+ <td class="context-item-name">started</td>
159
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
160
+ <td class="context-item-desc"></td>
161
+ </tr>
162
+ </table>
163
+ </div>
164
+ </div>
165
+
166
+
167
+
168
+ <!-- if method_list -->
169
+ <div id="methods">
170
+ <h3 class="section-bar">Public Class methods</h3>
171
+
172
+ <div id="method-M000029" class="method-detail">
173
+ <a name="M000029"></a>
174
+
175
+ <div class="method-heading">
176
+ <a href="Starfish.src/M000029.html" target="Code" class="method-signature"
177
+ onclick="popupCode('Starfish.src/M000029.html');return false;">
178
+ <span class="method-name">client=</span><span class="method-args">(client)</span>
179
+ </a>
180
+ </div>
181
+
182
+ <div class="method-description">
183
+ </div>
184
+ </div>
185
+
186
+ <div id="method-M000019" class="method-detail">
187
+ <a name="M000019"></a>
188
+
189
+ <div class="method-heading">
190
+ <a href="Starfish.src/M000019.html" target="Code" class="method-signature"
191
+ onclick="popupCode('Starfish.src/M000019.html');return false;">
192
+ <span class="method-name">new</span><span class="method-args">(uniq=ARGV.first)</span>
193
+ </a>
194
+ </div>
195
+
196
+ <div class="method-description">
197
+ <p>
198
+ set the uniq identifier
199
+ </p>
200
+ </div>
201
+ </div>
202
+
203
+ <div id="method-M000030" class="method-detail">
204
+ <a name="M000030"></a>
205
+
206
+ <div class="method-heading">
207
+ <a href="Starfish.src/M000030.html" target="Code" class="method-signature"
208
+ onclick="popupCode('Starfish.src/M000030.html');return false;">
209
+ <span class="method-name">options=</span><span class="method-args">(options={})</span>
210
+ </a>
211
+ </div>
212
+
213
+ <div class="method-description">
214
+ </div>
215
+ </div>
216
+
217
+ <div id="method-M000028" class="method-detail">
218
+ <a name="M000028"></a>
219
+
220
+ <div class="method-heading">
221
+ <a href="Starfish.src/M000028.html" target="Code" class="method-signature"
222
+ onclick="popupCode('Starfish.src/M000028.html');return false;">
223
+ <span class="method-name">server=</span><span class="method-args">(server)</span>
224
+ </a>
225
+ </div>
226
+
227
+ <div class="method-description">
228
+ </div>
229
+ </div>
230
+
231
+ <h3 class="section-bar">Public Instance methods</h3>
232
+
233
+ <div id="method-M000022" class="method-detail">
234
+ <a name="M000022"></a>
235
+
236
+ <div class="method-heading">
237
+ <a href="Starfish.src/M000022.html" target="Code" class="method-signature"
238
+ onclick="popupCode('Starfish.src/M000022.html');return false;">
239
+ <span class="method-name">client</span><span class="method-args">()</span>
240
+ </a>
241
+ </div>
242
+
243
+ <div class="method-description">
244
+ </div>
245
+ </div>
246
+
247
+ <div id="method-M000025" class="method-detail">
248
+ <a name="M000025"></a>
249
+
250
+ <div class="method-heading">
251
+ <a href="Starfish.src/M000025.html" target="Code" class="method-signature"
252
+ onclick="popupCode('Starfish.src/M000025.html');return false;">
253
+ <span class="method-name">negotiate</span><span class="method-args">()</span>
254
+ </a>
255
+ </div>
256
+
257
+ <div class="method-description">
258
+ </div>
259
+ </div>
260
+
261
+ <div id="method-M000024" class="method-detail">
262
+ <a name="M000024"></a>
263
+
264
+ <div class="method-heading">
265
+ <a href="Starfish.src/M000024.html" target="Code" class="method-signature"
266
+ onclick="popupCode('Starfish.src/M000024.html');return false;">
267
+ <span class="method-name">sanitize</span><span class="method-args">(object)</span>
268
+ </a>
269
+ </div>
270
+
271
+ <div class="method-description">
272
+ </div>
273
+ </div>
274
+
275
+ <div id="method-M000021" class="method-detail">
276
+ <a name="M000021"></a>
277
+
278
+ <div class="method-heading">
279
+ <a href="Starfish.src/M000021.html" target="Code" class="method-signature"
280
+ onclick="popupCode('Starfish.src/M000021.html');return false;">
281
+ <span class="method-name">server</span><span class="method-args">()</span>
282
+ </a>
283
+ </div>
284
+
285
+ <div class="method-description">
286
+ </div>
287
+ </div>
288
+
289
+ <div id="method-M000026" class="method-detail">
290
+ <a name="M000026"></a>
291
+
292
+ <div class="method-heading">
293
+ <a href="Starfish.src/M000026.html" target="Code" class="method-signature"
294
+ onclick="popupCode('Starfish.src/M000026.html');return false;">
295
+ <span class="method-name">spawn</span><span class="method-args">()</span>
296
+ </a>
297
+ </div>
298
+
299
+ <div class="method-description">
300
+ </div>
301
+ </div>
302
+
303
+ <div id="method-M000023" class="method-detail">
304
+ <a name="M000023"></a>
305
+
306
+ <div class="method-heading">
307
+ <a href="Starfish.src/M000023.html" target="Code" class="method-signature"
308
+ onclick="popupCode('Starfish.src/M000023.html');return false;">
309
+ <span class="method-name">stats</span><span class="method-args">()</span>
310
+ </a>
311
+ </div>
312
+
313
+ <div class="method-description">
314
+ </div>
315
+ </div>
316
+
317
+ <div id="method-M000027" class="method-detail">
318
+ <a name="M000027"></a>
319
+
320
+ <div class="method-heading">
321
+ <a href="Starfish.src/M000027.html" target="Code" class="method-signature"
322
+ onclick="popupCode('Starfish.src/M000027.html');return false;">
323
+ <span class="method-name">stop</span><span class="method-args">()</span>
324
+ </a>
325
+ </div>
326
+
327
+ <div class="method-description">
328
+ </div>
329
+ </div>
330
+
331
+ <div id="method-M000020" class="method-detail">
332
+ <a name="M000020"></a>
333
+
334
+ <div class="method-heading">
335
+ <a href="Starfish.src/M000020.html" target="Code" class="method-signature"
336
+ onclick="popupCode('Starfish.src/M000020.html');return false;">
337
+ <span class="method-name">uniq</span><span class="method-args">()</span>
338
+ </a>
339
+ </div>
340
+
341
+ <div class="method-description">
342
+ </div>
343
+ </div>
344
+
345
+
346
+ </div>
347
+
348
+
349
+ </div>
350
+
351
+
352
+ <div id="validator-badges">
353
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
354
+ </div>
355
+
356
+ </body>
357
+ </html>
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>new (Starfish)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/starfish.rb, line 26</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">uniq</span>=<span class="ruby-constant">ARGV</span>.<span class="ruby-identifier">first</span>)
15
+ <span class="ruby-ivar">@retry_count</span> = <span class="ruby-value">0</span>
16
+ <span class="ruby-ivar">@uniq</span> = <span class="ruby-identifier">uniq</span>
17
+ <span class="ruby-keyword kw">end</span></pre>
18
+ </body>
19
+ </html>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>uniq (Starfish)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/starfish.rb, line 31</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">uniq</span>
15
+ <span class="ruby-constant">MD5</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@uniq</span>).<span class="ruby-identifier">to_s</span>
16
+ <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -0,0 +1,45 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>server (Starfish)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/starfish.rb, line 35</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">server</span>
15
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@@server</span>
16
+ <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;You must specify a server&quot;</span>
17
+ <span class="ruby-identifier">exit</span>
18
+ <span class="ruby-keyword kw">end</span>
19
+
20
+ <span class="ruby-identifier">map_reduce</span> = <span class="ruby-constant">MapReduce</span>.<span class="ruby-identifier">new</span>
21
+ <span class="ruby-identifier">object</span> = <span class="ruby-ivar">@@server</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">map_reduce</span>)
22
+
23
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">map_reduce</span>.<span class="ruby-identifier">valid?</span>
24
+ <span class="ruby-identifier">object</span> = <span class="ruby-identifier">map_reduce</span>
25
+ <span class="ruby-keyword kw">end</span>
26
+
27
+ <span class="ruby-identifier">sanitize</span> <span class="ruby-identifier">object</span>
28
+
29
+ <span class="ruby-identifier">ts</span> = <span class="ruby-constant">Rinda</span><span class="ruby-operator">::</span><span class="ruby-constant">TupleSpace</span>.<span class="ruby-identifier">new</span>
30
+ <span class="ruby-keyword kw">begin</span>
31
+ <span class="ruby-identifier">ts</span>.<span class="ruby-identifier">write</span>([<span class="ruby-identifier">:name</span>, <span class="ruby-identifier">uniq</span>.<span class="ruby-identifier">intern</span>, <span class="ruby-identifier">object</span>, <span class="ruby-ivar">@uniq</span>])
32
+ <span class="ruby-identifier">ring_server</span> = <span class="ruby-constant">Rinda</span><span class="ruby-operator">::</span><span class="ruby-constant">RingServer</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">ts</span>)
33
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">EADDRINUSE</span>
34
+ <span class="ruby-identifier">ts</span> = <span class="ruby-constant">RingFinger</span>.<span class="ruby-identifier">primary</span>
35
+ <span class="ruby-identifier">ts</span>.<span class="ruby-identifier">write</span>([<span class="ruby-identifier">:name</span>, <span class="ruby-identifier">uniq</span>.<span class="ruby-identifier">intern</span>, <span class="ruby-identifier">object</span>, <span class="ruby-ivar">@uniq</span>])
36
+ <span class="ruby-keyword kw">end</span>
37
+
38
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-ivar">@@options</span>[<span class="ruby-identifier">:pid</span>] <span class="ruby-operator">||</span> <span class="ruby-node">&quot;/tmp/starfish-#{uniq}.pid&quot;</span>,<span class="ruby-value str">&quot;w&quot;</span>){<span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">&lt;&lt;</span><span class="ruby-constant">Process</span>.<span class="ruby-identifier">pid</span>}
39
+
40
+ <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;server started for #{object.inspect}&quot;</span>
41
+
42
+ <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">thread</span>.<span class="ruby-identifier">join</span>
43
+ <span class="ruby-keyword kw">end</span></pre>
44
+ </body>
45
+ </html>
@@ -0,0 +1,71 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>client (Starfish)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/starfish.rb, line 66</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">client</span>
15
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@@client</span>
16
+ <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;You must specify a client&quot;</span>
17
+ <span class="ruby-identifier">exit</span>
18
+ <span class="ruby-keyword kw">end</span>
19
+
20
+ <span class="ruby-identifier">negotiate</span>
21
+ <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-identifier">timeout</span>(<span class="ruby-value">5</span>) { <span class="ruby-ivar">@server_object</span> = <span class="ruby-ivar">@ring_server</span>.<span class="ruby-identifier">read</span>([<span class="ruby-identifier">:name</span>, <span class="ruby-identifier">uniq</span>.<span class="ruby-identifier">intern</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>])[<span class="ruby-value">2</span>] }
22
+
23
+ <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
24
+ <span class="ruby-keyword kw">begin</span>
25
+ <span class="ruby-ivar">@server_object</span>.<span class="ruby-identifier">map_reduce?</span>
26
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">NoMethodError</span>
27
+ <span class="ruby-ivar">@called</span> = <span class="ruby-ivar">@@client</span>.<span class="ruby-identifier">call</span>(<span class="ruby-ivar">@server_object</span>)
28
+ <span class="ruby-keyword kw">end</span>
29
+
30
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@called</span>
31
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@server_object</span>.<span class="ruby-identifier">map_reduce?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@server_object</span>.<span class="ruby-identifier">valid?</span>
32
+ <span class="ruby-identifier">map_reduce_client</span> = <span class="ruby-identifier">eval</span>(<span class="ruby-node">&quot;MapReduce::#{@server_object.base_type_to_s}::Client&quot;</span>).<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@server_object</span>)
33
+
34
+ <span class="ruby-identifier">$server_object</span> = <span class="ruby-ivar">@server_object</span>
35
+ <span class="ruby-constant">Object</span>.<span class="ruby-identifier">instance_eval</span> <span class="ruby-keyword kw">do</span>
36
+ <span class="ruby-identifier">define_method</span>(<span class="ruby-identifier">:logger</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-operator">*</span><span class="ruby-identifier">args</span><span class="ruby-operator">|</span>
37
+ <span class="ruby-identifier">$server_object</span>.<span class="ruby-identifier">_logger</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
38
+ <span class="ruby-keyword kw">end</span>
39
+ <span class="ruby-keyword kw">end</span>
40
+
41
+ <span class="ruby-identifier">map_reduce_client</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">object</span><span class="ruby-operator">|</span>
42
+ <span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
43
+ <span class="ruby-ivar">@@client</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">object</span>)
44
+ <span class="ruby-ivar">@server_object</span>.<span class="ruby-identifier">add_time_spent_processing_objects</span>(<span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span><span class="ruby-operator">-</span><span class="ruby-identifier">t</span>)
45
+ <span class="ruby-keyword kw">end</span>
46
+ <span class="ruby-keyword kw">else</span>
47
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">MapReduceError</span>, <span class="ruby-value str">&quot;invalid map reduce server (possibly missing type or input)&quot;</span>
48
+ <span class="ruby-keyword kw">end</span>
49
+ <span class="ruby-keyword kw">end</span>
50
+ <span class="ruby-keyword kw">end</span>
51
+
52
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">m</span>
53
+ <span class="ruby-identifier">spawn</span>
54
+ <span class="ruby-ivar">@retry_count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
55
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@retry_count</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">5</span>
56
+ <span class="ruby-keyword kw">retry</span>
57
+ <span class="ruby-keyword kw">else</span>
58
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span>, <span class="ruby-identifier">m</span>
59
+ <span class="ruby-keyword kw">end</span>
60
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">DRb</span><span class="ruby-operator">::</span><span class="ruby-constant">DRbConnError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">m</span>
61
+ <span class="ruby-identifier">stop</span>
62
+ <span class="ruby-identifier">negotiate</span>
63
+ <span class="ruby-ivar">@retry_count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
64
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@retry_count</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">5</span>
65
+ <span class="ruby-keyword kw">retry</span>
66
+ <span class="ruby-keyword kw">else</span>
67
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">DRb</span><span class="ruby-operator">::</span><span class="ruby-constant">DRbConnError</span>, <span class="ruby-identifier">m</span>
68
+ <span class="ruby-keyword kw">end</span>
69
+ <span class="ruby-keyword kw">end</span></pre>
70
+ </body>
71
+ </html>
@@ -0,0 +1,23 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>stats (Starfish)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/starfish.rb, line 123</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stats</span>
15
+ <span class="ruby-identifier">negotiate</span>
16
+ <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-identifier">timeout</span>(<span class="ruby-value">5</span>) { <span class="ruby-ivar">@server_object</span> = <span class="ruby-ivar">@ring_server</span>.<span class="ruby-identifier">read</span>([<span class="ruby-identifier">:name</span>, <span class="ruby-identifier">uniq</span>.<span class="ruby-identifier">intern</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>])[<span class="ruby-value">2</span>] }
17
+
18
+ <span class="ruby-identifier">puts</span> <span class="ruby-ivar">@server_object</span>.<span class="ruby-identifier">stats</span>.<span class="ruby-identifier">to_yaml</span>
19
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">NoMethodError</span>
20
+ <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;The stats method is not defined for your server&quot;</span>
21
+ <span class="ruby-keyword kw">end</span></pre>
22
+ </body>
23
+ </html>
@@ -0,0 +1,36 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>sanitize (Starfish)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/starfish.rb, line 132</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sanitize</span>(<span class="ruby-identifier">object</span>)
15
+ <span class="ruby-identifier">object</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">instance_eval</span> { <span class="ruby-identifier">include</span> <span class="ruby-constant">DRbUndumped</span> }
16
+
17
+ <span class="ruby-ivar">@@log</span> = <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@@options</span>[<span class="ruby-identifier">:log</span>]
18
+ <span class="ruby-keyword kw">when</span> <span class="ruby-constant">String</span>
19
+ <span class="ruby-constant">Logger</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@@options</span>[<span class="ruby-identifier">:log</span>])
20
+ <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Class</span>
21
+ <span class="ruby-ivar">@@options</span>[<span class="ruby-identifier">:log</span>].<span class="ruby-identifier">new</span>
22
+ <span class="ruby-keyword kw">when</span> <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">false</span>
23
+ <span class="ruby-constant">Logger</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;/dev/null&quot;</span>)
24
+ <span class="ruby-keyword kw">else</span>
25
+ <span class="ruby-ivar">@@options</span>[<span class="ruby-identifier">:log</span>]
26
+ <span class="ruby-keyword kw">end</span>
27
+
28
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">object</span>.<span class="ruby-identifier">logger</span>
29
+ <span class="ruby-ivar">@logger</span> <span class="ruby-operator">||=</span> <span class="ruby-ivar">@@log</span>
30
+ <span class="ruby-keyword kw">end</span>
31
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">object</span>.<span class="ruby-identifier">_logger</span>
32
+ <span class="ruby-ivar">@logger</span> <span class="ruby-operator">||=</span> <span class="ruby-ivar">@@log</span>
33
+ <span class="ruby-keyword kw">end</span>
34
+ <span class="ruby-keyword kw">end</span></pre>
35
+ </body>
36
+ </html>
@@ -0,0 +1,35 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>negotiate (Starfish)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/starfish.rb, line 154</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">negotiate</span><span class="ruby-identifier">negotiate</span><span class="ruby-identifier">negotiate</span>
15
+ <span class="ruby-keyword kw">begin</span>
16
+ <span class="ruby-ivar">@ring_server</span> = <span class="ruby-constant">RingFinger</span>.<span class="ruby-identifier">primary</span>
17
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">RuntimeError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">m</span>
18
+ <span class="ruby-comment cmt"># allow multiple un-cached calls to RingFinger.finger</span>
19
+ <span class="ruby-keyword kw">def</span> <span class="ruby-constant">RingFinger</span>.<span class="ruby-identifier">finger</span>
20
+ <span class="ruby-ivar">@@finger</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>
21
+ <span class="ruby-ivar">@@finger</span>.<span class="ruby-identifier">lookup_ring_any</span>
22
+ <span class="ruby-ivar">@@finger</span>
23
+ <span class="ruby-keyword kw">end</span>
24
+
25
+ <span class="ruby-identifier">spawn</span>
26
+ <span class="ruby-ivar">@retry_count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
27
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@retry_count</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">5</span>
28
+ <span class="ruby-keyword kw">retry</span>
29
+ <span class="ruby-keyword kw">else</span>
30
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>, <span class="ruby-identifier">m</span>
31
+ <span class="ruby-keyword kw">end</span>
32
+ <span class="ruby-keyword kw">end</span>
33
+ <span class="ruby-keyword kw">end</span></pre>
34
+ </body>
35
+ </html>