~nchohan/appscale/zk3.3.4

« back to all changes in this revision

Viewing changes to AppController/doc/TaskQueueSQS.html

  • Committer: Chris Bunch
  • Date: 2012-02-19 06:46:43 UTC
  • Revision ID: cgb@cs.ucsb.edu-20120219064643-37oxvm2f8ajyz328
adding Neptune folder to rdoc generation, and automatically pushing/pulling tasks in rabbitmq from an arbitrary node

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0" encoding="UTF-8"?>
 
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 
3
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 
4
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 
5
<head>
 
6
  <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
 
7
 
 
8
  <title>Class: TaskQueueSQS</title>
 
9
 
 
10
  <link rel="stylesheet" href="./rdoc.css" type="text/css" media="screen" />
 
11
 
 
12
  <script src="./js/jquery.js" type="text/javascript"
 
13
    charset="utf-8"></script>
 
14
  <script src="./js/thickbox-compressed.js" type="text/javascript"
 
15
    charset="utf-8"></script>
 
16
  <script src="./js/quicksearch.js" type="text/javascript"
 
17
    charset="utf-8"></script>
 
18
  <script src="./js/darkfish.js" type="text/javascript"
 
19
    charset="utf-8"></script>
 
20
 
 
21
</head>
 
22
<body class="class">
 
23
 
 
24
  <div id="metadata">
 
25
    <div id="home-metadata">
 
26
      <div id="home-section" class="section">
 
27
        <h3 class="section-header">
 
28
          <a href="./index.html">Home</a>
 
29
          <a href="./index.html#classes">Classes</a>
 
30
          <a href="./index.html#methods">Methods</a>
 
31
        </h3>
 
32
      </div>
 
33
    </div>
 
34
 
 
35
    <div id="file-metadata">
 
36
      <div id="file-list-section" class="section">
 
37
        <h3 class="section-header">In Files</h3>
 
38
        <div class="section-body">
 
39
          <ul>
 
40
          
 
41
            <li><a href="./__/Neptune/task_queue_sqs_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
 
42
              class="thickbox" title="../Neptune/task_queue_sqs.rb">../Neptune/task_queue_sqs.rb</a></li>
 
43
          
 
44
          </ul>
 
45
        </div>
 
46
      </div>
 
47
 
 
48
      
 
49
    </div>
 
50
 
 
51
    <div id="class-metadata">
 
52
 
 
53
      <!-- Parent Class -->
 
54
      
 
55
      <div id="parent-class-section" class="section">
 
56
        <h3 class="section-header">Parent</h3>
 
57
        
 
58
        <p class="link"><a href="TaskQueue.html">TaskQueue</a></p>
 
59
        
 
60
      </div>
 
61
      
 
62
 
 
63
      <!-- Namespace Contents -->
 
64
      
 
65
 
 
66
      <!-- Method Quickref -->
 
67
      
 
68
      <div id="method-list-section" class="section">
 
69
        <h3 class="section-header">Methods</h3>
 
70
        <ul class="link-list">
 
71
          
 
72
          <li><a href="#method-c-new">::new</a></li>
 
73
          
 
74
          <li><a href="#method-i-get_creds">#get_creds</a></li>
 
75
          
 
76
          <li><a href="#method-i-pop">#pop</a></li>
 
77
          
 
78
          <li><a href="#method-i-push">#push</a></li>
 
79
          
 
80
          <li><a href="#method-i-size">#size</a></li>
 
81
          
 
82
          <li><a href="#method-i-to_s">#to_s</a></li>
 
83
          
 
84
        </ul>
 
85
      </div>
 
86
      
 
87
 
 
88
      <!-- Included Modules -->
 
89
      
 
90
    </div>
 
91
 
 
92
    <div id="project-metadata">
 
93
      
 
94
      
 
95
 
 
96
      <div id="classindex-section" class="section project-section">
 
97
        <h3 class="section-header">Class/Module Index
 
98
          <span class="search-toggle"><img src="./images/find.png"
 
99
            height="16" width="16" alt="[+]"
 
100
            title="show/hide quicksearch" /></span></h3>
 
101
        <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
 
102
        <fieldset>
 
103
          <legend>Quicksearch</legend>
 
104
          <input type="text" name="quicksearch" value=""
 
105
            class="quicksearch-field" />
 
106
        </fieldset>
 
107
        </form>
 
108
 
 
109
        <ul class="link-list">
 
110
        
 
111
          <li><a href="./AppControllerClient.html">AppControllerClient</a></li>
 
112
        
 
113
          <li><a href="./BadConfigurationException.html">BadConfigurationException</a></li>
 
114
        
 
115
          <li><a href="./BlobServer.html">BlobServer</a></li>
 
116
        
 
117
          <li><a href="./Collectd.html">Collectd</a></li>
 
118
        
 
119
          <li><a href="./CronHelper.html">CronHelper</a></li>
 
120
        
 
121
          <li><a href="./Djinn.html">Djinn</a></li>
 
122
        
 
123
          <li><a href="./DjinnJobData.html">DjinnJobData</a></li>
 
124
        
 
125
          <li><a href="./DjinnServer.html">DjinnServer</a></li>
 
126
        
 
127
          <li><a href="./Ejabberd.html">Ejabberd</a></li>
 
128
        
 
129
          <li><a href="./EngineFactory.html">EngineFactory</a></li>
 
130
        
 
131
          <li><a href="./GodInterface.html">GodInterface</a></li>
 
132
        
 
133
          <li><a href="./GoogleAppEnginePullQueue.html">GoogleAppEnginePullQueue</a></li>
 
134
        
 
135
          <li><a href="./GoogleAppEnginePushQueue.html">GoogleAppEnginePushQueue</a></li>
 
136
        
 
137
          <li><a href="./HAProxy.html">HAProxy</a></li>
 
138
        
 
139
          <li><a href="./HelperFunctions.html">HelperFunctions</a></li>
 
140
        
 
141
          <li><a href="./JSONClient.html">JSONClient</a></li>
 
142
        
 
143
          <li><a href="./LoadBalancer.html">LoadBalancer</a></li>
 
144
        
 
145
          <li><a href="./Monitoring.html">Monitoring</a></li>
 
146
        
 
147
          <li><a href="./NeptuneJobData.html">NeptuneJobData</a></li>
 
148
        
 
149
          <li><a href="./Nginx.html">Nginx</a></li>
 
150
        
 
151
          <li><a href="./Object.html">Object</a></li>
 
152
        
 
153
          <li><a href="./PbServer.html">PbServer</a></li>
 
154
        
 
155
          <li><a href="./QueueFactory.html">QueueFactory</a></li>
 
156
        
 
157
          <li><a href="./RabbitMQ.html">RabbitMQ</a></li>
 
158
        
 
159
          <li><a href="./Repo.html">Repo</a></li>
 
160
        
 
161
          <li><a href="./TaskEngine.html">TaskEngine</a></li>
 
162
        
 
163
          <li><a href="./TaskEngineAppScale.html">TaskEngineAppScale</a></li>
 
164
        
 
165
          <li><a href="./TaskEngineGoogleAppEngine.html">TaskEngineGoogleAppEngine</a></li>
 
166
        
 
167
          <li><a href="./TaskQueue.html">TaskQueue</a></li>
 
168
        
 
169
          <li><a href="./TaskQueueAzureQueue.html">TaskQueueAzureQueue</a></li>
 
170
        
 
171
          <li><a href="./TaskQueueGoogleAppEngine.html">TaskQueueGoogleAppEngine</a></li>
 
172
        
 
173
          <li><a href="./TaskQueueRabbitMQ.html">TaskQueueRabbitMQ</a></li>
 
174
        
 
175
          <li><a href="./TaskQueueSQS.html">TaskQueueSQS</a></li>
 
176
        
 
177
          <li><a href="./UserAppClient.html">UserAppClient</a></li>
 
178
        
 
179
          <li><a href="./ZKInterface.html">ZKInterface</a></li>
 
180
        
 
181
        </ul>
 
182
        <div id="no-class-search-results" style="display: none;">No matching classes.</div>
 
183
      </div>
 
184
 
 
185
      
 
186
    </div>
 
187
  </div>
 
188
 
 
189
  <div id="documentation">
 
190
    <h1 class="class">TaskQueueSQS</h1>
 
191
 
 
192
    <div id="description">
 
193
      
 
194
    </div>
 
195
 
 
196
    <!-- Constants -->
 
197
    
 
198
 
 
199
    <!-- Attributes -->
 
200
    
 
201
    <div id="attribute-method-details" class="method-section section">
 
202
      <h3 class="section-header">Attributes</h3>
 
203
 
 
204
      
 
205
      <div id="EC2_ACCESS_KEY-attribute-method" class="method-detail">
 
206
        <a name="EC2_ACCESS_KEY"></a>
 
207
        
 
208
        <a name="EC2_ACCESS_KEY="></a>
 
209
        
 
210
        <div class="method-heading attribute-method-heading">
 
211
          <span class="method-name">EC2_ACCESS_KEY</span><span
 
212
            class="attribute-access-type">[RW]</span>
 
213
        </div>
 
214
 
 
215
        <div class="method-description">
 
216
        
 
217
        
 
218
        
 
219
        </div>
 
220
      </div>
 
221
      
 
222
      <div id="EC2_SECRET_KEY-attribute-method" class="method-detail">
 
223
        <a name="EC2_SECRET_KEY"></a>
 
224
        
 
225
        <a name="EC2_SECRET_KEY="></a>
 
226
        
 
227
        <div class="method-heading attribute-method-heading">
 
228
          <span class="method-name">EC2_SECRET_KEY</span><span
 
229
            class="attribute-access-type">[RW]</span>
 
230
        </div>
 
231
 
 
232
        <div class="method-description">
 
233
        
 
234
        
 
235
        
 
236
        </div>
 
237
      </div>
 
238
      
 
239
    </div>
 
240
    
 
241
 
 
242
    <!-- Methods -->
 
243
    
 
244
    <div id="public-class-method-details" class="method-section section">
 
245
      <h3 class="section-header">Public Class Methods</h3>
 
246
 
 
247
    
 
248
      <div id="new-method" class="method-detail ">
 
249
        <a name="method-c-new"></a>
 
250
 
 
251
        
 
252
        <div class="method-heading">
 
253
          <span class="method-name">new</span><span
 
254
            class="method-args">(credentials)</span>
 
255
          <span class="method-click-advice">click to toggle source</span>
 
256
        </div>
 
257
        
 
258
 
 
259
        <div class="method-description">
 
260
          
 
261
          <p>creates a new SQS queue via the AWS RubyGem</p>
 
262
          
 
263
 
 
264
          
 
265
          <div class="method-source-code"
 
266
            id="new-source">
 
267
<pre>
 
268
<span class="ruby-comment"># File ../Neptune/task_queue_sqs.rb, line 20</span>
 
269
def initialize(credentials)
 
270
  if credentials.class != <span class="ruby-constant">Hash</span>
 
271
    raise <span class="ruby-constant">BadConfigurationException</span>.new
 
272
  end
 
273
 
 
274
  if credentials[<span class="ruby-string">'EC2_ACCESS_KEY'</span>].nil?
 
275
    raise <span class="ruby-constant">BadConfigurationException</span>.new
 
276
  end
 
277
  <span class="ruby-ivar">@EC2_ACCESS_KEY</span> = credentials[<span class="ruby-string">'EC2_ACCESS_KEY'</span>]
 
278
 
 
279
  if credentials[<span class="ruby-string">'EC2_SECRET_KEY'</span>].nil?
 
280
    raise <span class="ruby-constant">BadConfigurationException</span>.new
 
281
  end
 
282
  <span class="ruby-ivar">@EC2_SECRET_KEY</span> = credentials[<span class="ruby-string">'EC2_SECRET_KEY'</span>]
 
283
 
 
284
  <span class="ruby-ivar">@sqs</span> = <span class="ruby-constant">AWS</span>::<span class="ruby-constant">SQS</span>.new(:access_key_id =&gt; <span class="ruby-ivar">@EC2_ACCESS_KEY</span>,
 
285
    :secret_access_key =&gt; <span class="ruby-ivar">@EC2_SECRET_KEY</span>)
 
286
  <span class="ruby-ivar">@queue</span> = <span class="ruby-ivar">@sqs</span>.queues.create(<span class="ruby-constant">TASK_QUEUE_NAME</span>)
 
287
end</pre>
 
288
          </div>
 
289
          
 
290
        </div>
 
291
 
 
292
        
 
293
 
 
294
        
 
295
      </div>
 
296
 
 
297
    
 
298
    </div>
 
299
  
 
300
    <div id="public-instance-method-details" class="method-section section">
 
301
      <h3 class="section-header">Public Instance Methods</h3>
 
302
 
 
303
    
 
304
      <div id="get_creds-method" class="method-detail ">
 
305
        <a name="method-i-get_creds"></a>
 
306
 
 
307
        
 
308
        <div class="method-heading">
 
309
          <span class="method-name">get_creds</span><span
 
310
            class="method-args">()</span>
 
311
          <span class="method-click-advice">click to toggle source</span>
 
312
        </div>
 
313
        
 
314
 
 
315
        <div class="method-description">
 
316
          
 
317
          <p>returns all the credentials needed to access this queue for SQS, it’s
 
318
just the access key and secret key</p>
 
319
          
 
320
 
 
321
          
 
322
          <div class="method-source-code"
 
323
            id="get_creds-source">
 
324
<pre>
 
325
<span class="ruby-comment"># File ../Neptune/task_queue_sqs.rb, line 64</span>
 
326
def get_creds()
 
327
  return {<span class="ruby-string">'@EC2_ACCESS_KEY'</span> =&gt; <span class="ruby-ivar">@EC2_ACCESS_KEY</span>,
 
328
    <span class="ruby-string">'@EC2_SECRET_KEY'</span> =&gt; <span class="ruby-ivar">@EC2_SECRET_KEY</span>}
 
329
end</pre>
 
330
          </div>
 
331
          
 
332
        </div>
 
333
 
 
334
        
 
335
 
 
336
        
 
337
      </div>
 
338
 
 
339
    
 
340
      <div id="pop-method" class="method-detail ">
 
341
        <a name="method-i-pop"></a>
 
342
 
 
343
        
 
344
        <div class="method-heading">
 
345
          <span class="method-name">pop</span><span
 
346
            class="method-args">()</span>
 
347
          <span class="method-click-advice">click to toggle source</span>
 
348
        </div>
 
349
        
 
350
 
 
351
        <div class="method-description">
 
352
          
 
353
          
 
354
          
 
355
 
 
356
          
 
357
          <div class="method-source-code"
 
358
            id="pop-source">
 
359
<pre>
 
360
<span class="ruby-comment"># File ../Neptune/task_queue_sqs.rb, line 52</span>
 
361
def pop()
 
362
  json_item = <span class="ruby-ivar">@queue</span>.receive_message()
 
363
  return nil if json_item.nil?  <span class="ruby-comment"># occurs when the queue is empty</span>
 
364
  json_item.delete  <span class="ruby-comment"># TODO(cgb) - maybe delete messages after the task is done</span>
 
365
 
 
366
  item = <span class="ruby-constant">JSON</span>.load(json_item.body)
 
367
  return item
 
368
end</pre>
 
369
          </div>
 
370
          
 
371
        </div>
 
372
 
 
373
        
 
374
 
 
375
        
 
376
      </div>
 
377
 
 
378
    
 
379
      <div id="push-method" class="method-detail ">
 
380
        <a name="method-i-push"></a>
 
381
 
 
382
        
 
383
        <div class="method-heading">
 
384
          <span class="method-name">push</span><span
 
385
            class="method-args">(item)</span>
 
386
          <span class="method-click-advice">click to toggle source</span>
 
387
        </div>
 
388
        
 
389
 
 
390
        <div class="method-description">
 
391
          
 
392
          <p>stores a hash in the queue for later processing, by converting it to JSON</p>
 
393
          
 
394
 
 
395
          
 
396
          <div class="method-source-code"
 
397
            id="push-source">
 
398
<pre>
 
399
<span class="ruby-comment"># File ../Neptune/task_queue_sqs.rb, line 42</span>
 
400
def push(item)
 
401
  if item.class != <span class="ruby-constant">Hash</span>
 
402
    raise <span class="ruby-constant">BadConfigurationException</span>.new
 
403
  end
 
404
 
 
405
  json_item = <span class="ruby-constant">JSON</span>.dump(item)
 
406
  <span class="ruby-ivar">@queue</span>.send_message(json_item)
 
407
end</pre>
 
408
          </div>
 
409
          
 
410
        </div>
 
411
 
 
412
        
 
413
 
 
414
        
 
415
      </div>
 
416
 
 
417
    
 
418
      <div id="size-method" class="method-detail ">
 
419
        <a name="method-i-size"></a>
 
420
 
 
421
        
 
422
        <div class="method-heading">
 
423
          <span class="method-name">size</span><span
 
424
            class="method-args">()</span>
 
425
          <span class="method-click-advice">click to toggle source</span>
 
426
        </div>
 
427
        
 
428
 
 
429
        <div class="method-description">
 
430
          
 
431
          <p>returns the number of messages in the queue</p>
 
432
          
 
433
 
 
434
          
 
435
          <div class="method-source-code"
 
436
            id="size-source">
 
437
<pre>
 
438
<span class="ruby-comment"># File ../Neptune/task_queue_sqs.rb, line 71</span>
 
439
def size()
 
440
  return <span class="ruby-ivar">@queue</span>.visible_messages
 
441
end</pre>
 
442
          </div>
 
443
          
 
444
        </div>
 
445
 
 
446
        
 
447
 
 
448
        
 
449
      </div>
 
450
 
 
451
    
 
452
      <div id="to_s-method" class="method-detail ">
 
453
        <a name="method-i-to_s"></a>
 
454
 
 
455
        
 
456
        <div class="method-heading">
 
457
          <span class="method-name">to_s</span><span
 
458
            class="method-args">()</span>
 
459
          <span class="method-click-advice">click to toggle source</span>
 
460
        </div>
 
461
        
 
462
 
 
463
        <div class="method-description">
 
464
          
 
465
          <p>returns a string representation of this queue, which is just the queue name
 
466
and the credentials TODO(cgb): this seems generic enough to move into <a
 
467
href="TaskQueue.html">TaskQueue</a>, so do so</p>
 
468
          
 
469
 
 
470
          
 
471
          <div class="method-source-code"
 
472
            id="to_s-source">
 
473
<pre>
 
474
<span class="ruby-comment"># File ../Neptune/task_queue_sqs.rb, line 80</span>
 
475
def to_s()
 
476
  access_key = <span class="ruby-constant">HelperFunctions</span>.obscure_string(<span class="ruby-ivar">@EC2_ACCESS_KEY</span>)
 
477
  secret_key = <span class="ruby-constant">HelperFunctions</span>.obscure_string(<span class="ruby-ivar">@EC2_SECRET_KEY</span>)
 
478
  return &quot;Queue type: SQS, EC2_ACCESS_KEY: #{access_key}, &quot; +
 
479
    &quot;EC2_SECRET_KEY: #{secret_key}&quot;
 
480
end</pre>
 
481
          </div>
 
482
          
 
483
        </div>
 
484
 
 
485
        
 
486
 
 
487
        
 
488
      </div>
 
489
 
 
490
    
 
491
    </div>
 
492
  
 
493
 
 
494
  </div>
 
495
 
 
496
  <div id="validator-badges">
 
497
    <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
 
498
    <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
 
499
      Rdoc Generator</a> 2</small>.</p>
 
500
  </div>
 
501
 
 
502
</body>
 
503
</html>
 
504