boogaloo 0.1

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 (57) hide show
  1. data/CHANGELOG +2 -0
  2. data/DEBUGGING +4 -0
  3. data/MIT-LICENSE +7 -0
  4. data/README +106 -0
  5. data/RUNNING_UNIT_TESTS +5 -0
  6. data/Rakefile +44 -0
  7. data/bin/boogaloo +159 -0
  8. data/doc/classes/Boogaloo.html +149 -0
  9. data/doc/classes/Boogaloo/Cache.html +121 -0
  10. data/doc/classes/Boogaloo/Cache/Base.html +664 -0
  11. data/doc/classes/Boogaloo/Cache/Persistent.html +122 -0
  12. data/doc/classes/Boogaloo/Cache/Temporary.html +439 -0
  13. data/doc/classes/Boogaloo/Client.html +111 -0
  14. data/doc/classes/Boogaloo/Client/Connection.html +228 -0
  15. data/doc/classes/Boogaloo/Config.html +540 -0
  16. data/doc/classes/Boogaloo/ServiceGateway.html +176 -0
  17. data/doc/classes/Boogaloo/ServiceRequest.html +210 -0
  18. data/doc/classes/Boogaloo/ThreadPool.html +205 -0
  19. data/doc/classes/Boogaloo/WorkerThread.html +239 -0
  20. data/doc/created.rid +1 -0
  21. data/doc/files/DEBUGGING.html +113 -0
  22. data/doc/files/MIT-LICENSE.html +129 -0
  23. data/doc/files/README.html +261 -0
  24. data/doc/files/examples/boogaloo_conf.html +130 -0
  25. data/doc/files/lib/boogaloo/cache/base_rb.html +101 -0
  26. data/doc/files/lib/boogaloo/cache/persistent_rb.html +108 -0
  27. data/doc/files/lib/boogaloo/cache/temporary_rb.html +101 -0
  28. data/doc/files/lib/boogaloo/client/connection_rb.html +101 -0
  29. data/doc/files/lib/boogaloo/config_rb.html +109 -0
  30. data/doc/files/lib/boogaloo/service_gateway_rb.html +110 -0
  31. data/doc/files/lib/boogaloo/service_request_rb.html +108 -0
  32. data/doc/files/lib/boogaloo/thread_pool_rb.html +101 -0
  33. data/doc/files/lib/boogaloo/util_rb.html +240 -0
  34. data/doc/files/lib/boogaloo/version_rb.html +114 -0
  35. data/doc/files/lib/boogaloo/worker_thread_rb.html +101 -0
  36. data/doc/fr_class_index.html +38 -0
  37. data/doc/fr_file_index.html +41 -0
  38. data/doc/fr_method_index.html +67 -0
  39. data/doc/index.html +24 -0
  40. data/doc/rdoc-style.css +208 -0
  41. data/examples/boogaloo.conf +17 -0
  42. data/lib/boogaloo/cache/base.rb +222 -0
  43. data/lib/boogaloo/cache/persistent.rb +15 -0
  44. data/lib/boogaloo/cache/temporary.rb +173 -0
  45. data/lib/boogaloo/client/connection.rb +55 -0
  46. data/lib/boogaloo/config.rb +206 -0
  47. data/lib/boogaloo/service_gateway.rb +37 -0
  48. data/lib/boogaloo/service_request.rb +39 -0
  49. data/lib/boogaloo/thread_pool.rb +40 -0
  50. data/lib/boogaloo/util.rb +29 -0
  51. data/lib/boogaloo/version.rb +1 -0
  52. data/lib/boogaloo/worker_thread.rb +46 -0
  53. data/test/test_persistent_cache.rb +99 -0
  54. data/test/test_service_gateway.rb +27 -0
  55. data/test/test_synchronicity.rb +29 -0
  56. data/test/test_temporary_cache.rb +42 -0
  57. metadata +113 -0
@@ -0,0 +1,121 @@
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>Module: Boogaloo::Cache</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>Module</strong></td>
53
+ <td class="class-name-in-header">Boogaloo::Cache</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/boogaloo/cache/temporary_rb.html">
59
+ lib/boogaloo/cache/temporary.rb
60
+ </a>
61
+ <br />
62
+ <a href="../../files/lib/boogaloo/cache/persistent_rb.html">
63
+ lib/boogaloo/cache/persistent.rb
64
+ </a>
65
+ <br />
66
+ <a href="../../files/lib/boogaloo/cache/base_rb.html">
67
+ lib/boogaloo/cache/base.rb
68
+ </a>
69
+ <br />
70
+ </td>
71
+ </tr>
72
+
73
+ </table>
74
+ </div>
75
+ <!-- banner header -->
76
+
77
+ <div id="bodyContent">
78
+
79
+
80
+
81
+ <div id="contextContent">
82
+
83
+
84
+
85
+ </div>
86
+
87
+
88
+ </div>
89
+
90
+
91
+ <!-- if includes -->
92
+
93
+ <div id="section">
94
+
95
+ <div id="class-list">
96
+ <h3 class="section-bar">Classes and Modules</h3>
97
+
98
+ Class <a href="Cache/Base.html" class="link">Boogaloo::Cache::Base</a><br />
99
+ Class <a href="Cache/Persistent.html" class="link">Boogaloo::Cache::Persistent</a><br />
100
+ Class <a href="Cache/Temporary.html" class="link">Boogaloo::Cache::Temporary</a><br />
101
+
102
+ </div>
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+ <!-- if method_list -->
111
+
112
+
113
+ </div>
114
+
115
+
116
+ <div id="validator-badges">
117
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
118
+ </div>
119
+
120
+ </body>
121
+ </html>
@@ -0,0 +1,664 @@
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: Boogaloo::Cache::Base</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">Boogaloo::Cache::Base</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../../files/lib/boogaloo/cache/base_rb.html">
59
+ lib/boogaloo/cache/base.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
+ <div id="description">
82
+ <p>
83
+ Provides fundemental cache operations such as add, set, get and various
84
+ statistical operations.
85
+ </p>
86
+
87
+ </div>
88
+
89
+
90
+ </div>
91
+
92
+ <div id="method-list">
93
+ <h3 class="section-bar">Methods</h3>
94
+
95
+ <div class="name-list">
96
+ <a href="#M000010">add</a>&nbsp;&nbsp;
97
+ <a href="#M000008">get</a>&nbsp;&nbsp;
98
+ <a href="#M000018">inspect_keys</a>&nbsp;&nbsp;
99
+ <a href="#M000007">new</a>&nbsp;&nbsp;
100
+ <a href="#M000009">pull</a>&nbsp;&nbsp;
101
+ <a href="#M000019">reset</a>&nbsp;&nbsp;
102
+ <a href="#M000011">set</a>&nbsp;&nbsp;
103
+ <a href="#M000012">stat_all</a>&nbsp;&nbsp;
104
+ <a href="#M000014">stat_hits</a>&nbsp;&nbsp;
105
+ <a href="#M000015">stat_misses</a>&nbsp;&nbsp;
106
+ <a href="#M000016">stat_namespaces</a>&nbsp;&nbsp;
107
+ <a href="#M000017">stat_objects</a>&nbsp;&nbsp;
108
+ <a href="#M000013">stat_reset_at</a>&nbsp;&nbsp;
109
+ </div>
110
+ </div>
111
+
112
+ </div>
113
+
114
+
115
+ <!-- if includes -->
116
+ <div id="includes">
117
+ <h3 class="section-bar">Included Modules</h3>
118
+
119
+ <div id="includes-list">
120
+ <span class="include-name">DRbUndumped</span>
121
+ </div>
122
+ </div>
123
+
124
+ <div id="section">
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+ <!-- if method_list -->
134
+ <div id="methods">
135
+ <h3 class="section-bar">Public Class methods</h3>
136
+
137
+ <div id="method-M000007" class="method-detail">
138
+ <a name="M000007"></a>
139
+
140
+ <div class="method-heading">
141
+ <a href="#M000007" class="method-signature">
142
+ <span class="method-name">new</span><span class="method-args">(name, config)</span>
143
+ </a>
144
+ </div>
145
+
146
+ <div class="method-description">
147
+ <p>
148
+ Initialize a new base cache instance.
149
+ </p>
150
+ <p>
151
+ Parameters: name: The name of the cache config: A Hash containing
152
+ configuration for the cache.
153
+ </p>
154
+ <p><a class="source-toggle" href="#"
155
+ onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
156
+ <div class="method-source-code" id="M000007-source">
157
+ <pre>
158
+ <span class="ruby-comment cmt"># File lib/boogaloo/cache/base.rb, line 15</span>
159
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">config</span>)
160
+
161
+ <span class="ruby-ivar">@name</span> = <span class="ruby-identifier">name</span>
162
+ <span class="ruby-ivar">@config</span> = <span class="ruby-identifier">config</span>
163
+ <span class="ruby-identifier">reset</span>
164
+
165
+ <span class="ruby-keyword kw">end</span>
166
+ </pre>
167
+ </div>
168
+ </div>
169
+ </div>
170
+
171
+ <h3 class="section-bar">Public Instance methods</h3>
172
+
173
+ <div id="method-M000010" class="method-detail">
174
+ <a name="M000010"></a>
175
+
176
+ <div class="method-heading">
177
+ <a href="#M000010" class="method-signature">
178
+ <span class="method-name">add</span><span class="method-args">(namespace, key, obj)</span>
179
+ </a>
180
+ </div>
181
+
182
+ <div class="method-description">
183
+ <p>
184
+ Add an object to the cache only if it doesn&#8217;t already exist.
185
+ </p>
186
+ <p>
187
+ Parameters:
188
+ </p>
189
+ <table>
190
+ <tr><td valign="top"><tt>namespace</tt>:</td><td>The namespace in which the object will exist. Use <tt>nil</tt> if global
191
+ namespace should be used.
192
+
193
+ </td></tr>
194
+ <tr><td valign="top"><tt>key</tt>:</td><td>A uniqeue identifier for the object relative to the given namespace.
195
+
196
+ </td></tr>
197
+ <tr><td valign="top"><tt>obj</tt>:</td><td>The object to add to the cache.
198
+
199
+ </td></tr>
200
+ </table>
201
+ <p><a class="source-toggle" href="#"
202
+ onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
203
+ <div class="method-source-code" id="M000010-source">
204
+ <pre>
205
+ <span class="ruby-comment cmt"># File lib/boogaloo/cache/base.rb, line 79</span>
206
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add</span>(<span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span>, <span class="ruby-identifier">obj</span>)
207
+
208
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">nil_error</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">nil?</span>
209
+ <span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;[#{@name}] ADD: #{namespace or 'nil'}, #{key}&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$debug</span>
210
+
211
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">nil?</span>
212
+
213
+ <span class="ruby-ivar">@global_store</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">obj</span> <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-ivar">@global_store</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">key</span>)
214
+
215
+ <span class="ruby-keyword kw">else</span>
216
+
217
+ <span class="ruby-identifier">create_namespace</span>(<span class="ruby-identifier">namespace</span>)
218
+ <span class="ruby-ivar">@namespace_store</span>[<span class="ruby-identifier">namespace</span>][<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">obj</span> <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-ivar">@namespace_store</span>[<span class="ruby-identifier">namespace</span>].<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">key</span>)
219
+
220
+ <span class="ruby-keyword kw">end</span>
221
+
222
+ <span class="ruby-keyword kw">end</span>
223
+ </pre>
224
+ </div>
225
+ </div>
226
+ </div>
227
+
228
+ <div id="method-M000008" class="method-detail">
229
+ <a name="M000008"></a>
230
+
231
+ <div class="method-heading">
232
+ <a href="#M000008" class="method-signature">
233
+ <span class="method-name">get</span><span class="method-args">(namespace, key)</span>
234
+ </a>
235
+ </div>
236
+
237
+ <div class="method-description">
238
+ <p>
239
+ Get an object from the cache.
240
+ </p>
241
+ <p>
242
+ Parameters:
243
+ </p>
244
+ <table>
245
+ <tr><td valign="top"><tt>namespace</tt>:</td><td>The namespace to get the object from. Use <tt>nil</tt> if global namespace
246
+ should be used.
247
+
248
+ </td></tr>
249
+ <tr><td valign="top"><tt>key</tt>:</td><td>A uniqeue identifier for the object relative to the given namespace.
250
+
251
+ </td></tr>
252
+ </table>
253
+ <p><a class="source-toggle" href="#"
254
+ onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
255
+ <div class="method-source-code" id="M000008-source">
256
+ <pre>
257
+ <span class="ruby-comment cmt"># File lib/boogaloo/cache/base.rb, line 28</span>
258
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get</span>(<span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span>)
259
+
260
+ <span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;[#{@name}] GET: #{namespace or 'nil'}, #{key}&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$debug</span>
261
+
262
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">nil?</span>
263
+
264
+ <span class="ruby-ivar">@global_store</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">key</span>) <span class="ruby-operator">?</span> <span class="ruby-ivar">@hit</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@miss</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
265
+ <span class="ruby-ivar">@global_store</span>[<span class="ruby-identifier">key</span>]
266
+
267
+ <span class="ruby-keyword kw">else</span>
268
+
269
+ <span class="ruby-ivar">@miss</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-ivar">@namespace_store</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">namespace</span>)
270
+ <span class="ruby-ivar">@namespace_store</span>[<span class="ruby-identifier">namespace</span>].<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">key</span>) <span class="ruby-operator">?</span> <span class="ruby-ivar">@hit</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@miss</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
271
+ <span class="ruby-ivar">@namespace_store</span>[<span class="ruby-identifier">namespace</span>][<span class="ruby-identifier">key</span>]
272
+
273
+ <span class="ruby-keyword kw">end</span>
274
+
275
+ <span class="ruby-keyword kw">end</span>
276
+ </pre>
277
+ </div>
278
+ </div>
279
+ </div>
280
+
281
+ <div id="method-M000018" class="method-detail">
282
+ <a name="M000018"></a>
283
+
284
+ <div class="method-heading">
285
+ <a href="#M000018" class="method-signature">
286
+ <span class="method-name">inspect_keys</span><span class="method-args">()</span>
287
+ </a>
288
+ </div>
289
+
290
+ <div class="method-description">
291
+ <p>
292
+ Returns an Array of all object keys currently contained in the cache.
293
+ </p>
294
+ <p>
295
+ Array elements:
296
+ </p>
297
+ <table>
298
+ <tr><td valign="top"><tt>0</tt>:</td><td>Keys in global scope (Array).
299
+
300
+ </td></tr>
301
+ <tr><td valign="top"><tt>1</tt>:</td><td>Namespaces and their respective keys (Hash).
302
+
303
+ </td></tr>
304
+ </table>
305
+ <p><a class="source-toggle" href="#"
306
+ onclick="toggleCode('M000018-source');return false;">[Source]</a></p>
307
+ <div class="method-source-code" id="M000018-source">
308
+ <pre>
309
+ <span class="ruby-comment cmt"># File lib/boogaloo/cache/base.rb, line 177</span>
310
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">inspect_keys</span>
311
+
312
+ <span class="ruby-identifier">tmp</span> = {}
313
+ <span class="ruby-ivar">@namespace_store</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">key</span><span class="ruby-operator">|</span> <span class="ruby-identifier">tmp</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-ivar">@namespace_store</span>[<span class="ruby-identifier">key</span>].<span class="ruby-identifier">keys</span> }
314
+ [<span class="ruby-ivar">@global_store</span>.<span class="ruby-identifier">keys</span>, <span class="ruby-identifier">tmp</span>]
315
+
316
+ <span class="ruby-keyword kw">end</span>
317
+ </pre>
318
+ </div>
319
+ </div>
320
+ </div>
321
+
322
+ <div id="method-M000009" class="method-detail">
323
+ <a name="M000009"></a>
324
+
325
+ <div class="method-heading">
326
+ <a href="#M000009" class="method-signature">
327
+ <span class="method-name">pull</span><span class="method-args">(namespace, key)</span>
328
+ </a>
329
+ </div>
330
+
331
+ <div class="method-description">
332
+ <p>
333
+ Pull and object from the cache (get and delete).
334
+ </p>
335
+ <p>
336
+ Parameters:
337
+ </p>
338
+ <table>
339
+ <tr><td valign="top"><tt>namespace</tt>:</td><td>The namespace to get the object from. Use <tt>nil</tt> if global namespace
340
+ should be used.
341
+
342
+ </td></tr>
343
+ <tr><td valign="top"><tt>key</tt>:</td><td>A uniqeue identifier for the object relative to the given namespace.
344
+
345
+ </td></tr>
346
+ </table>
347
+ <p><a class="source-toggle" href="#"
348
+ onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
349
+ <div class="method-source-code" id="M000009-source">
350
+ <pre>
351
+ <span class="ruby-comment cmt"># File lib/boogaloo/cache/base.rb, line 52</span>
352
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pull</span>(<span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span>)
353
+
354
+ <span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;[#{@name}] PULL: #{namespace or 'nil'}, #{key}&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$debug</span>
355
+
356
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">nil?</span>
357
+
358
+ <span class="ruby-ivar">@global_store</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">key</span>) <span class="ruby-operator">?</span> <span class="ruby-ivar">@hit</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@miss</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
359
+ <span class="ruby-ivar">@global_store</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">key</span>)
360
+
361
+ <span class="ruby-keyword kw">else</span>
362
+
363
+ <span class="ruby-ivar">@miss</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-ivar">@namespace_store</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">namespace</span>)
364
+ <span class="ruby-ivar">@namespace_store</span>[<span class="ruby-identifier">namespace</span>].<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">key</span>) <span class="ruby-operator">?</span> <span class="ruby-ivar">@hit</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@miss</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
365
+ <span class="ruby-identifier">ret</span> = <span class="ruby-ivar">@namespace_store</span>[<span class="ruby-identifier">namespace</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">key</span>)
366
+ <span class="ruby-ivar">@namespace_store</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">namespace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@namespace_store</span>[<span class="ruby-identifier">namespace</span>].<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
367
+ <span class="ruby-identifier">ret</span>
368
+
369
+ <span class="ruby-keyword kw">end</span>
370
+
371
+ <span class="ruby-keyword kw">end</span>
372
+ </pre>
373
+ </div>
374
+ </div>
375
+ </div>
376
+
377
+ <div id="method-M000019" class="method-detail">
378
+ <a name="M000019"></a>
379
+
380
+ <div class="method-heading">
381
+ <a href="#M000019" class="method-signature">
382
+ <span class="method-name">reset</span><span class="method-args">()</span>
383
+ </a>
384
+ </div>
385
+
386
+ <div class="method-description">
387
+ <p>
388
+ Reset the cache to an empty state.
389
+ </p>
390
+ <p><a class="source-toggle" href="#"
391
+ onclick="toggleCode('M000019-source');return false;">[Source]</a></p>
392
+ <div class="method-source-code" id="M000019-source">
393
+ <pre>
394
+ <span class="ruby-comment cmt"># File lib/boogaloo/cache/base.rb, line 186</span>
395
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reset</span>
396
+
397
+ <span class="ruby-ivar">@hit</span> = <span class="ruby-value">0</span>
398
+ <span class="ruby-ivar">@miss</span> = <span class="ruby-value">0</span>
399
+ <span class="ruby-ivar">@global_store</span> = {}
400
+ <span class="ruby-ivar">@namespace_store</span> = {}
401
+ <span class="ruby-ivar">@reset_at</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
402
+
403
+ <span class="ruby-keyword kw">end</span>
404
+ </pre>
405
+ </div>
406
+ </div>
407
+ </div>
408
+
409
+ <div id="method-M000011" class="method-detail">
410
+ <a name="M000011"></a>
411
+
412
+ <div class="method-heading">
413
+ <a href="#M000011" class="method-signature">
414
+ <span class="method-name">set</span><span class="method-args">(namespace, key, obj)</span>
415
+ </a>
416
+ </div>
417
+
418
+ <div class="method-description">
419
+ <p>
420
+ Add an object to the cache, overwriting if one already exists.
421
+ </p>
422
+ <p>
423
+ Parameters:
424
+ </p>
425
+ <table>
426
+ <tr><td valign="top"><tt>namespace</tt>:</td><td>The namespace in which the object will exist. Use <tt>nil</tt> if global
427
+ namespace should be used.
428
+
429
+ </td></tr>
430
+ <tr><td valign="top"><tt>key</tt>:</td><td>A uniqeue identifier for the object relative to the given namespace.
431
+
432
+ </td></tr>
433
+ <tr><td valign="top"><tt>obj</tt>:</td><td>The object to add to the cache.
434
+
435
+ </td></tr>
436
+ </table>
437
+ <p><a class="source-toggle" href="#"
438
+ onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
439
+ <div class="method-source-code" id="M000011-source">
440
+ <pre>
441
+ <span class="ruby-comment cmt"># File lib/boogaloo/cache/base.rb, line 103</span>
442
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set</span>(<span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span>, <span class="ruby-identifier">obj</span>)
443
+
444
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">nil_error</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">nil?</span>
445
+ <span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;[#{@name}] SET: #{namespace or 'nil'}, #{key}&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$debug</span>
446
+
447
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">nil?</span>
448
+
449
+ <span class="ruby-ivar">@global_store</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">obj</span>
450
+
451
+ <span class="ruby-keyword kw">else</span>
452
+
453
+ <span class="ruby-identifier">create_namespace</span>(<span class="ruby-identifier">namespace</span>)
454
+ <span class="ruby-ivar">@namespace_store</span>[<span class="ruby-identifier">namespace</span>][<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">obj</span>
455
+
456
+ <span class="ruby-keyword kw">end</span>
457
+
458
+ <span class="ruby-keyword kw">end</span>
459
+ </pre>
460
+ </div>
461
+ </div>
462
+ </div>
463
+
464
+ <div id="method-M000012" class="method-detail">
465
+ <a name="M000012"></a>
466
+
467
+ <div class="method-heading">
468
+ <a href="#M000012" class="method-signature">
469
+ <span class="method-name">stat_all</span><span class="method-args">()</span>
470
+ </a>
471
+ </div>
472
+
473
+ <div class="method-description">
474
+ <p>
475
+ Returns all available statistics in an Array.
476
+ </p>
477
+ <p>
478
+ Array elements:
479
+ </p>
480
+ <table>
481
+ <tr><td valign="top"><tt>0</tt>:</td><td><a href="Base.html#M000013">stat_reset_at</a>
482
+
483
+ </td></tr>
484
+ <tr><td valign="top"><tt>1</tt>:</td><td><a href="Base.html#M000014">stat_hits</a>
485
+
486
+ </td></tr>
487
+ <tr><td valign="top"><tt>2</tt>:</td><td><a href="Base.html#M000015">stat_misses</a>
488
+
489
+ </td></tr>
490
+ <tr><td valign="top"><tt>3</tt>:</td><td><a href="Base.html#M000016">stat_namespaces</a>
491
+
492
+ </td></tr>
493
+ <tr><td valign="top"><tt>4</tt>:</td><td><a href="Base.html#M000017">stat_objects</a>
494
+
495
+ </td></tr>
496
+ </table>
497
+ <p><a class="source-toggle" href="#"
498
+ onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
499
+ <div class="method-source-code" id="M000012-source">
500
+ <pre>
501
+ <span class="ruby-comment cmt"># File lib/boogaloo/cache/base.rb, line 130</span>
502
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stat_all</span>
503
+
504
+ <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">stat_reset_at</span>, <span class="ruby-identifier">stat_hits</span>, <span class="ruby-identifier">stat_misses</span>, <span class="ruby-identifier">stat_namespaces</span>, <span class="ruby-identifier">stat_objects</span>]
505
+
506
+ <span class="ruby-keyword kw">end</span>
507
+ </pre>
508
+ </div>
509
+ </div>
510
+ </div>
511
+
512
+ <div id="method-M000014" class="method-detail">
513
+ <a name="M000014"></a>
514
+
515
+ <div class="method-heading">
516
+ <a href="#M000014" class="method-signature">
517
+ <span class="method-name">stat_hits</span><span class="method-args">()</span>
518
+ </a>
519
+ </div>
520
+
521
+ <div class="method-description">
522
+ <p>
523
+ The number of successful cache gets.
524
+ </p>
525
+ <p><a class="source-toggle" href="#"
526
+ onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
527
+ <div class="method-source-code" id="M000014-source">
528
+ <pre>
529
+ <span class="ruby-comment cmt"># File lib/boogaloo/cache/base.rb, line 144</span>
530
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stat_hits</span>
531
+
532
+ <span class="ruby-ivar">@hit</span>
533
+
534
+ <span class="ruby-keyword kw">end</span>
535
+ </pre>
536
+ </div>
537
+ </div>
538
+ </div>
539
+
540
+ <div id="method-M000015" class="method-detail">
541
+ <a name="M000015"></a>
542
+
543
+ <div class="method-heading">
544
+ <a href="#M000015" class="method-signature">
545
+ <span class="method-name">stat_misses</span><span class="method-args">()</span>
546
+ </a>
547
+ </div>
548
+
549
+ <div class="method-description">
550
+ <p>
551
+ The number of unsuccessful cache gets.
552
+ </p>
553
+ <p><a class="source-toggle" href="#"
554
+ onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
555
+ <div class="method-source-code" id="M000015-source">
556
+ <pre>
557
+ <span class="ruby-comment cmt"># File lib/boogaloo/cache/base.rb, line 151</span>
558
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stat_misses</span>
559
+
560
+ <span class="ruby-ivar">@miss</span>
561
+
562
+ <span class="ruby-keyword kw">end</span>
563
+ </pre>
564
+ </div>
565
+ </div>
566
+ </div>
567
+
568
+ <div id="method-M000016" class="method-detail">
569
+ <a name="M000016"></a>
570
+
571
+ <div class="method-heading">
572
+ <a href="#M000016" class="method-signature">
573
+ <span class="method-name">stat_namespaces</span><span class="method-args">()</span>
574
+ </a>
575
+ </div>
576
+
577
+ <div class="method-description">
578
+ <p>
579
+ The number of namespaces (plus the global namespace).
580
+ </p>
581
+ <p><a class="source-toggle" href="#"
582
+ onclick="toggleCode('M000016-source');return false;">[Source]</a></p>
583
+ <div class="method-source-code" id="M000016-source">
584
+ <pre>
585
+ <span class="ruby-comment cmt"># File lib/boogaloo/cache/base.rb, line 158</span>
586
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stat_namespaces</span>
587
+
588
+ <span class="ruby-ivar">@namespace_store</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
589
+
590
+ <span class="ruby-keyword kw">end</span>
591
+ </pre>
592
+ </div>
593
+ </div>
594
+ </div>
595
+
596
+ <div id="method-M000017" class="method-detail">
597
+ <a name="M000017"></a>
598
+
599
+ <div class="method-heading">
600
+ <a href="#M000017" class="method-signature">
601
+ <span class="method-name">stat_objects</span><span class="method-args">()</span>
602
+ </a>
603
+ </div>
604
+
605
+ <div class="method-description">
606
+ <p>
607
+ The number of objects stored in the cache.
608
+ </p>
609
+ <p><a class="source-toggle" href="#"
610
+ onclick="toggleCode('M000017-source');return false;">[Source]</a></p>
611
+ <div class="method-source-code" id="M000017-source">
612
+ <pre>
613
+ <span class="ruby-comment cmt"># File lib/boogaloo/cache/base.rb, line 165</span>
614
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stat_objects</span>
615
+
616
+ <span class="ruby-identifier">get_obj_count</span>
617
+
618
+ <span class="ruby-keyword kw">end</span>
619
+ </pre>
620
+ </div>
621
+ </div>
622
+ </div>
623
+
624
+ <div id="method-M000013" class="method-detail">
625
+ <a name="M000013"></a>
626
+
627
+ <div class="method-heading">
628
+ <a href="#M000013" class="method-signature">
629
+ <span class="method-name">stat_reset_at</span><span class="method-args">()</span>
630
+ </a>
631
+ </div>
632
+
633
+ <div class="method-description">
634
+ <p>
635
+ The time the cache was created or last reset.
636
+ </p>
637
+ <p><a class="source-toggle" href="#"
638
+ onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
639
+ <div class="method-source-code" id="M000013-source">
640
+ <pre>
641
+ <span class="ruby-comment cmt"># File lib/boogaloo/cache/base.rb, line 137</span>
642
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stat_reset_at</span>
643
+
644
+ <span class="ruby-ivar">@reset_at</span>
645
+
646
+ <span class="ruby-keyword kw">end</span>
647
+ </pre>
648
+ </div>
649
+ </div>
650
+ </div>
651
+
652
+
653
+ </div>
654
+
655
+
656
+ </div>
657
+
658
+
659
+ <div id="validator-badges">
660
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
661
+ </div>
662
+
663
+ </body>
664
+ </html>