wee 0.10.0 → 2.0.0

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 (369) hide show
  1. data/README.rdoc +127 -0
  2. data/Rakefile +11 -32
  3. data/doc/rdoc/classes/Array.html +28 -24
  4. data/doc/rdoc/classes/Hash.html +28 -24
  5. data/doc/rdoc/classes/Object.html +37 -84
  6. data/doc/rdoc/classes/String.html +89 -21
  7. data/doc/rdoc/classes/Struct.html +32 -82
  8. data/doc/rdoc/classes/Wee.html +285 -86
  9. data/doc/rdoc/classes/Wee/AnswerDecoration.html +111 -48
  10. data/doc/rdoc/classes/Wee/{Context.html → AnswerDecoration/Answer.html} +61 -51
  11. data/doc/rdoc/classes/Wee/Application.html +161 -322
  12. data/doc/rdoc/classes/Wee/Application/SessionCache.html +162 -0
  13. data/doc/rdoc/classes/Wee/Brush.html +147 -62
  14. data/doc/rdoc/classes/{Enumerable.html → Wee/Brush/ActionInputTag.html} +68 -41
  15. data/doc/rdoc/classes/Wee/Brush/AnchorTag.html +150 -100
  16. data/doc/rdoc/classes/Wee/Brush/CheckboxTag.html +132 -46
  17. data/doc/rdoc/classes/Wee/Brush/FileUploadTag.html +63 -41
  18. data/doc/rdoc/classes/Wee/Brush/FormTag.html +184 -78
  19. data/doc/rdoc/classes/Wee/Brush/GenericEncodedTextBrush.html +48 -65
  20. data/doc/rdoc/classes/Wee/Brush/GenericSingleTagBrush.html +83 -37
  21. data/doc/rdoc/classes/Wee/Brush/GenericTagBrush.html +334 -310
  22. data/doc/rdoc/classes/Wee/Brush/GenericTextBrush.html +74 -54
  23. data/doc/rdoc/classes/Wee/Brush/HiddenInputTag.html +58 -43
  24. data/doc/rdoc/classes/Wee/Brush/ImageButtonTag.html +64 -74
  25. data/doc/rdoc/classes/Wee/Brush/ImageTag.html +109 -86
  26. data/doc/rdoc/classes/Wee/Brush/InputTag.html +205 -45
  27. data/doc/rdoc/classes/Wee/Brush/JavascriptTag.html +96 -34
  28. data/doc/rdoc/classes/Wee/Brush/Page.html +129 -67
  29. data/doc/rdoc/classes/Wee/{Utils/LRUCache.html → Brush/PasswordInputTag.html} +65 -38
  30. data/doc/rdoc/classes/Wee/Brush/RadioButtonTag.html +132 -78
  31. data/doc/rdoc/classes/Wee/Brush/{RadioButtonTag/RadioGroup.html → RadioGroup.html} +91 -53
  32. data/doc/rdoc/classes/Wee/Brush/SelectListTag.html +301 -127
  33. data/doc/rdoc/classes/Wee/Brush/SelectOptionTag.html +96 -33
  34. data/doc/rdoc/classes/Wee/Brush/SubmitButtonTag.html +59 -44
  35. data/doc/rdoc/classes/Wee/Brush/TableDataTag.html +94 -57
  36. data/doc/rdoc/classes/Wee/Brush/TableHeaderTag.html +96 -33
  37. data/doc/rdoc/classes/Wee/Brush/TableRowTag.html +181 -121
  38. data/doc/rdoc/classes/Wee/Brush/TableTag.html +94 -32
  39. data/doc/rdoc/classes/Wee/Brush/TextAreaTag.html +257 -71
  40. data/doc/rdoc/classes/Wee/Brush/TextInputTag.html +58 -43
  41. data/doc/rdoc/classes/Wee/CallAnswerMixin.html +289 -0
  42. data/doc/rdoc/classes/Wee/CallbackMixin.html +233 -0
  43. data/doc/rdoc/classes/Wee/CallbackRegistry.html +179 -155
  44. data/doc/rdoc/classes/Wee/Callbacks.html +262 -0
  45. data/doc/rdoc/classes/Wee/Component.html +228 -779
  46. data/doc/rdoc/classes/Wee/Decoration.html +144 -159
  47. data/doc/rdoc/classes/Wee/DecorationMixin.html +340 -0
  48. data/doc/rdoc/classes/Wee/Delegate.html +119 -76
  49. data/doc/rdoc/classes/Wee/DupReplaceSnapshotMixin.html +64 -47
  50. data/doc/rdoc/classes/Wee/ErrorResponse.html +59 -62
  51. data/doc/rdoc/classes/Wee/FormDecoration.html +51 -37
  52. data/doc/rdoc/classes/Wee/GenericResponse.html +60 -35
  53. data/doc/rdoc/classes/Wee/HtmlCanvas.html +1000 -602
  54. data/doc/rdoc/classes/Wee/HtmlDocument.html +288 -0
  55. data/doc/rdoc/classes/Wee/HtmlWriter.html +227 -126
  56. data/doc/rdoc/classes/Wee/IdGenerator.html +60 -31
  57. data/doc/rdoc/classes/Wee/IdGenerator/Secure.html +282 -0
  58. data/doc/rdoc/classes/Wee/{SimpleIdGenerator.html → IdGenerator/Sequential.html} +76 -49
  59. data/doc/rdoc/classes/Wee/JQuery.html +221 -0
  60. data/doc/rdoc/classes/Wee/LRUCache.html +514 -0
  61. data/doc/rdoc/classes/Wee/LRUCache/Item.html +158 -0
  62. data/doc/rdoc/classes/Wee/ObjectSnapshotMixin.html +187 -0
  63. data/doc/rdoc/classes/Wee/PageDecoration.html +88 -59
  64. data/doc/rdoc/classes/Wee/Presenter.html +124 -704
  65. data/doc/rdoc/classes/Wee/RedirectResponse.html +64 -33
  66. data/doc/rdoc/classes/Wee/RefreshResponse.html +59 -44
  67. data/doc/rdoc/classes/Wee/Renderer.html +234 -54
  68. data/doc/rdoc/classes/Wee/Request.html +151 -286
  69. data/doc/rdoc/classes/Wee/Response.html +29 -212
  70. data/doc/rdoc/classes/Wee/Session.html +585 -360
  71. data/doc/rdoc/classes/Wee/{StateHolder.html → Session/AbortCallbackProcessing.html} +67 -40
  72. data/doc/rdoc/classes/Wee/Session/MutexSerializer.html +166 -0
  73. data/doc/rdoc/classes/{Cache/Strategy/LFU/Item.html → Wee/Session/Page.html} +26 -27
  74. data/doc/rdoc/classes/Wee/Session/ThreadSerializer.html +219 -0
  75. data/doc/rdoc/classes/Wee/State.html +307 -0
  76. data/doc/rdoc/classes/{Cache/Strategy/LRU/Item.html → Wee/State/Snapshot.html} +26 -27
  77. data/doc/rdoc/classes/{Cache/Strategy/Unbounded/Item.html → Wee/State/SnapshotIVars.html} +26 -27
  78. data/doc/rdoc/classes/Wee/StructSnapshotMixin.html +183 -0
  79. data/doc/rdoc/classes/Wee/WrapperDecoration.html +101 -35
  80. data/doc/rdoc/created.rid +1 -1
  81. data/doc/rdoc/files/README_rdoc.html +243 -0
  82. data/doc/rdoc/files/lib/wee/application_rb.html +22 -30
  83. data/doc/rdoc/files/lib/wee/{page_rb.html → call_answer_rb.html} +14 -25
  84. data/doc/rdoc/files/lib/wee/callback_rb.html +12 -29
  85. data/doc/rdoc/files/lib/wee/component_rb.html +22 -27
  86. data/doc/rdoc/files/lib/wee/decoration_rb.html +19 -20
  87. data/doc/rdoc/files/lib/wee/{idgen_rb.html → html_brushes_rb.html} +14 -25
  88. data/doc/rdoc/files/lib/wee/html_canvas_rb.html +15 -23
  89. data/doc/rdoc/files/lib/wee/{abstractsession_rb.html → html_document_rb.html} +17 -25
  90. data/doc/rdoc/files/lib/wee/html_writer_rb.html +15 -23
  91. data/doc/rdoc/files/lib/wee/{webrick_rb.html → id_generator_rb.html} +19 -25
  92. data/doc/rdoc/files/lib/wee/{core/page_rb.html → jquery/jquery_rb.html} +14 -25
  93. data/doc/rdoc/files/lib/wee/{state_registry_rb.html → jquery_rb.html} +17 -27
  94. data/doc/rdoc/files/lib/{cache/cache_rb.html → wee/lru_cache_rb.html} +14 -25
  95. data/doc/rdoc/files/lib/wee/presenter_rb.html +12 -34
  96. data/doc/rdoc/files/lib/wee/{holder_rb.html → renderer_rb.html} +14 -25
  97. data/doc/rdoc/files/lib/wee/request_rb.html +18 -32
  98. data/doc/rdoc/files/lib/wee/response_rb.html +17 -24
  99. data/doc/rdoc/files/lib/wee/session_rb.html +21 -23
  100. data/doc/rdoc/files/lib/wee/state_rb.html +90 -0
  101. data/doc/rdoc/files/lib/wee_rb.html +48 -40
  102. data/doc/rdoc/fr_class_index.html +111 -75
  103. data/doc/rdoc/fr_file_index.html +46 -76
  104. data/doc/rdoc/fr_method_index.html +473 -480
  105. data/doc/rdoc/index.html +6 -9
  106. data/doc/rdoc/rdoc-style.css +210 -119
  107. data/examples/ObjectSpaceBrowser.rb +33 -23
  108. data/examples/ajax.rb +71 -0
  109. data/examples/continuations.rb +28 -0
  110. data/examples/demo.rb +92 -36
  111. data/examples/demo/calculator.rb +63 -0
  112. data/examples/demo/calendar.rb +42 -55
  113. data/examples/demo/counter.rb +38 -0
  114. data/{lib/wee/examples → examples/demo}/editable_counter.rb +11 -6
  115. data/examples/demo/example.rb +28 -24
  116. data/examples/demo/file_upload.rb +19 -0
  117. data/{lib/wee/components → examples/demo}/messagebox.rb +3 -3
  118. data/examples/demo/radio.rb +33 -0
  119. data/{lib/wee/examples → examples/demo}/window.rb +15 -10
  120. data/examples/hw.rb +3 -4
  121. data/{lib/wee/components → examples}/pager.rb +14 -14
  122. data/lib/wee.rb +48 -25
  123. data/lib/wee/application.rb +69 -131
  124. data/lib/wee/call_answer.rb +118 -0
  125. data/lib/wee/callback.rb +88 -0
  126. data/lib/wee/component.rb +141 -0
  127. data/lib/wee/decoration.rb +242 -0
  128. data/lib/wee/html_brushes.rb +725 -0
  129. data/lib/wee/html_canvas.rb +241 -0
  130. data/lib/wee/html_document.rb +45 -0
  131. data/lib/wee/html_writer.rb +71 -0
  132. data/lib/wee/id_generator.rb +70 -0
  133. data/lib/wee/jquery.rb +1 -0
  134. data/lib/wee/jquery/jquery.rb +17 -0
  135. data/lib/wee/jquery/public/jquery-1.3.2.min.js +19 -0
  136. data/lib/wee/jquery/public/wee-jquery.js +19 -0
  137. data/lib/wee/lru_cache.rb +89 -0
  138. data/lib/wee/presenter.rb +43 -0
  139. data/lib/wee/renderer.rb +65 -0
  140. data/lib/wee/request.rb +37 -113
  141. data/lib/wee/response.rb +43 -70
  142. data/lib/wee/session.rb +304 -113
  143. data/lib/wee/state.rb +85 -0
  144. data/test/component_spec.rb +17 -0
  145. data/wee.gemspec +4 -3
  146. metadata +249 -452
  147. data/ChangeLog +0 -657
  148. data/INSTALL +0 -17
  149. data/README +0 -272
  150. data/TODO +0 -142
  151. data/benchmark/Centrino1300/result.2000.counter.action +0 -45
  152. data/benchmark/Centrino1300/result.2000.counter.render +0 -43
  153. data/benchmark/Centrino1300/result.2000.filehandler +0 -43
  154. data/benchmark/Centrino600/result.2000.counter.action +0 -47
  155. data/benchmark/Centrino600/result.2000.counter.render +0 -45
  156. data/benchmark/Centrino600/result.2000.filehandler +0 -43
  157. data/benchmark/Makefile +0 -53
  158. data/benchmark/counter.rb +0 -77
  159. data/benchmark/filehandler.rb +0 -6
  160. data/benchmark/report_req.rb +0 -12
  161. data/bin/wee +0 -100
  162. data/doc/rdoc/classes/ActionView.html +0 -107
  163. data/doc/rdoc/classes/ActionView/Base.html +0 -133
  164. data/doc/rdoc/classes/Cache.html +0 -126
  165. data/doc/rdoc/classes/Cache/StorageCache.html +0 -320
  166. data/doc/rdoc/classes/Cache/Strategy.html +0 -128
  167. data/doc/rdoc/classes/Cache/Strategy/CapacityBounded.html +0 -269
  168. data/doc/rdoc/classes/Cache/Strategy/LFU.html +0 -238
  169. data/doc/rdoc/classes/Cache/Strategy/LRU.html +0 -238
  170. data/doc/rdoc/classes/Cache/Strategy/Unbounded.html +0 -225
  171. data/doc/rdoc/classes/LiteralMethod.html +0 -196
  172. data/doc/rdoc/classes/Main.html +0 -289
  173. data/doc/rdoc/classes/OgApplication.html +0 -126
  174. data/doc/rdoc/classes/OgScaffolder.html +0 -827
  175. data/doc/rdoc/classes/OgScaffolder/Editor.html +0 -565
  176. data/doc/rdoc/classes/OgSession.html +0 -172
  177. data/doc/rdoc/classes/Recipe.html +0 -113
  178. data/doc/rdoc/classes/Wee/AbstractSession.html +0 -502
  179. data/doc/rdoc/classes/Wee/Brush/ActionCallbackMixin.html +0 -148
  180. data/doc/rdoc/classes/Wee/Brush/ActionMixin.html +0 -146
  181. data/doc/rdoc/classes/Wee/Brush/ActionURLCallbackMixin.html +0 -154
  182. data/doc/rdoc/classes/Wee/Brush/AssignMixin.html +0 -141
  183. data/doc/rdoc/classes/Wee/Brush/CallbackMixin.html +0 -141
  184. data/doc/rdoc/classes/Wee/Brush/InputCallbackMixin.html +0 -148
  185. data/doc/rdoc/classes/Wee/Brush/SelectListTag/SelectListCallback.html +0 -158
  186. data/doc/rdoc/classes/Wee/Brush/ToCallback.html +0 -146
  187. data/doc/rdoc/classes/Wee/Callback.html +0 -231
  188. data/doc/rdoc/classes/Wee/CallbackStream.html +0 -227
  189. data/doc/rdoc/classes/Wee/Canvas.html +0 -235
  190. data/doc/rdoc/classes/Wee/CanvasMixin.html +0 -225
  191. data/doc/rdoc/classes/Wee/Component/OnAnswer.html +0 -153
  192. data/doc/rdoc/classes/Wee/ComponentDispatcher.html +0 -289
  193. data/doc/rdoc/classes/Wee/ComponentRunner.html +0 -321
  194. data/doc/rdoc/classes/Wee/ErrorPage.html +0 -175
  195. data/doc/rdoc/classes/Wee/Examples.html +0 -114
  196. data/doc/rdoc/classes/Wee/Examples/Calculator.html +0 -319
  197. data/doc/rdoc/classes/Wee/Examples/Counter.html +0 -289
  198. data/doc/rdoc/classes/Wee/Examples/EditableCounter.html +0 -210
  199. data/doc/rdoc/classes/Wee/Examples/Window.html +0 -346
  200. data/doc/rdoc/classes/Wee/FastCGIAdaptor.html +0 -227
  201. data/doc/rdoc/classes/Wee/Helper.html +0 -148
  202. data/doc/rdoc/classes/Wee/HtmlCanvasRenderer.html +0 -1230
  203. data/doc/rdoc/classes/Wee/LiteralMethodCallback.html +0 -198
  204. data/doc/rdoc/classes/Wee/LoginDecoration.html +0 -261
  205. data/doc/rdoc/classes/Wee/Md5IdGenerator.html +0 -181
  206. data/doc/rdoc/classes/Wee/MessageBox.html +0 -180
  207. data/doc/rdoc/classes/Wee/MethodCallback.html +0 -193
  208. data/doc/rdoc/classes/Wee/Nitro.html +0 -114
  209. data/doc/rdoc/classes/Wee/Nitro/ControllerClassMixin.html +0 -192
  210. data/doc/rdoc/classes/Wee/Nitro/ControllerMixin.html +0 -345
  211. data/doc/rdoc/classes/Wee/Nitro/FormTag.html +0 -155
  212. data/doc/rdoc/classes/Wee/Nitro/HtmlCanvasRenderer.html +0 -178
  213. data/doc/rdoc/classes/Wee/Page.html +0 -115
  214. data/doc/rdoc/classes/Wee/PagelessApplication.html +0 -154
  215. data/doc/rdoc/classes/Wee/PagelessComponentDriver.html +0 -296
  216. data/doc/rdoc/classes/Wee/PagelessRequest.html +0 -208
  217. data/doc/rdoc/classes/Wee/PagelessSession.html +0 -359
  218. data/doc/rdoc/classes/Wee/Pager.html +0 -534
  219. data/doc/rdoc/classes/Wee/Rails.html +0 -114
  220. data/doc/rdoc/classes/Wee/Rails/ControllerClassMixin.html +0 -192
  221. data/doc/rdoc/classes/Wee/Rails/ControllerMixin.html +0 -342
  222. data/doc/rdoc/classes/Wee/Rails/FormTag.html +0 -155
  223. data/doc/rdoc/classes/Wee/Rails/HtmlCanvasRenderer.html +0 -177
  224. data/doc/rdoc/classes/Wee/RenderingContext.html +0 -283
  225. data/doc/rdoc/classes/Wee/RequestHandler.html +0 -341
  226. data/doc/rdoc/classes/Wee/Snapshot.html +0 -211
  227. data/doc/rdoc/classes/Wee/StateRegistry.html +0 -434
  228. data/doc/rdoc/classes/Wee/StateRegistry/Snapshot.html +0 -320
  229. data/doc/rdoc/classes/Wee/StateRegistry/WithObject.html +0 -153
  230. data/doc/rdoc/classes/Wee/Utils.html +0 -300
  231. data/doc/rdoc/classes/Wee/ValueHolder.html +0 -220
  232. data/doc/rdoc/classes/Wee/WEBrickAdaptor.html +0 -368
  233. data/doc/rdoc/files/INSTALL.html +0 -130
  234. data/doc/rdoc/files/README.html +0 -471
  235. data/doc/rdoc/files/lib/wee/adaptors/fastcgi_rb.html +0 -108
  236. data/doc/rdoc/files/lib/wee/adaptors/nitro_rb.html +0 -101
  237. data/doc/rdoc/files/lib/wee/adaptors/rails_rb.html +0 -101
  238. data/doc/rdoc/files/lib/wee/adaptors/webrick_rb.html +0 -108
  239. data/doc/rdoc/files/lib/wee/component_ext_rb.html +0 -101
  240. data/doc/rdoc/files/lib/wee/components/component_dispatcher_rb.html +0 -108
  241. data/doc/rdoc/files/lib/wee/components/form_decoration_rb.html +0 -101
  242. data/doc/rdoc/files/lib/wee/components/login_decoration_rb.html +0 -101
  243. data/doc/rdoc/files/lib/wee/components/messagebox_rb.html +0 -101
  244. data/doc/rdoc/files/lib/wee/components/page_decoration_rb.html +0 -101
  245. data/doc/rdoc/files/lib/wee/components/pager_rb.html +0 -101
  246. data/doc/rdoc/files/lib/wee/components/wrapper_decoration_rb.html +0 -101
  247. data/doc/rdoc/files/lib/wee/components_rb.html +0 -114
  248. data/doc/rdoc/files/lib/wee/context_rb.html +0 -101
  249. data/doc/rdoc/files/lib/wee/continuation/core/component_rb.html +0 -101
  250. data/doc/rdoc/files/lib/wee/continuation/session_rb.html +0 -108
  251. data/doc/rdoc/files/lib/wee/continuation_rb.html +0 -116
  252. data/doc/rdoc/files/lib/wee/core/callback_rb.html +0 -115
  253. data/doc/rdoc/files/lib/wee/core/component_rb.html +0 -108
  254. data/doc/rdoc/files/lib/wee/core/componentrunner_rb.html +0 -110
  255. data/doc/rdoc/files/lib/wee/core/context_rb.html +0 -101
  256. data/doc/rdoc/files/lib/wee/core/decoration_rb.html +0 -133
  257. data/doc/rdoc/files/lib/wee/core/idgen_rb.html +0 -101
  258. data/doc/rdoc/files/lib/wee/core/presenter_rb.html +0 -112
  259. data/doc/rdoc/files/lib/wee/core/renderer_rb.html +0 -107
  260. data/doc/rdoc/files/lib/wee/core/snapshot_rb.html +0 -113
  261. data/doc/rdoc/files/lib/wee/core/valueholder_rb.html +0 -110
  262. data/doc/rdoc/files/lib/wee/core_ext_rb.html +0 -101
  263. data/doc/rdoc/files/lib/wee/core_rb.html +0 -124
  264. data/doc/rdoc/files/lib/wee/databases/og/application_rb.html +0 -101
  265. data/doc/rdoc/files/lib/wee/databases/og/old_scaffolder_rb.html +0 -101
  266. data/doc/rdoc/files/lib/wee/databases/og/scaffolder_rb.html +0 -115
  267. data/doc/rdoc/files/lib/wee/databases/og/session_rb.html +0 -101
  268. data/doc/rdoc/files/lib/wee/databases/og_rb.html +0 -111
  269. data/doc/rdoc/files/lib/wee/examples/calculator_rb.html +0 -107
  270. data/doc/rdoc/files/lib/wee/examples/counter_rb.html +0 -101
  271. data/doc/rdoc/files/lib/wee/examples/editable_counter_rb.html +0 -114
  272. data/doc/rdoc/files/lib/wee/examples/window_rb.html +0 -101
  273. data/doc/rdoc/files/lib/wee/idgen/md5_rb.html +0 -115
  274. data/doc/rdoc/files/lib/wee/idgen/simple_rb.html +0 -107
  275. data/doc/rdoc/files/lib/wee/pageless/application_rb.html +0 -108
  276. data/doc/rdoc/files/lib/wee/pageless/request_rb.html +0 -101
  277. data/doc/rdoc/files/lib/wee/pageless/session_rb.html +0 -109
  278. data/doc/rdoc/files/lib/wee/pageless_rb.html +0 -110
  279. data/doc/rdoc/files/lib/wee/renderer/html/brushes_rb.html +0 -101
  280. data/doc/rdoc/files/lib/wee/renderer/html/canvas_rb.html +0 -108
  281. data/doc/rdoc/files/lib/wee/renderer/html/writer_rb.html +0 -108
  282. data/doc/rdoc/files/lib/wee/rendering/html/brushes_rb.html +0 -101
  283. data/doc/rdoc/files/lib/wee/rendering/html/canvas_rb.html +0 -101
  284. data/doc/rdoc/files/lib/wee/rendering/html/writer_rb.html +0 -108
  285. data/doc/rdoc/files/lib/wee/requesthandler_rb.html +0 -101
  286. data/doc/rdoc/files/lib/wee/skeleton/og/components/main_rb.html +0 -101
  287. data/doc/rdoc/files/lib/wee/skeleton/og/conf/db_rb.html +0 -114
  288. data/doc/rdoc/files/lib/wee/skeleton/og/models/recipe_rb.html +0 -101
  289. data/doc/rdoc/files/lib/wee/skeleton/og/run_rb.html +0 -115
  290. data/doc/rdoc/files/lib/wee/skeleton/simple/components/main_rb.html +0 -101
  291. data/doc/rdoc/files/lib/wee/skeleton/simple/run_rb.html +0 -111
  292. data/doc/rdoc/files/lib/wee/snapshot_ext_rb.html +0 -101
  293. data/doc/rdoc/files/lib/wee/snapshot_rb.html +0 -107
  294. data/doc/rdoc/files/lib/wee/stuff_rb.html +0 -144
  295. data/doc/rdoc/files/lib/wee/template_rb.html +0 -101
  296. data/doc/rdoc/files/lib/wee/utils/autoreload_rb.html +0 -101
  297. data/doc/rdoc/files/lib/wee/utils/cache_rb.html +0 -108
  298. data/doc/rdoc/files/lib/wee/utils/helper_rb.html +0 -101
  299. data/doc/rdoc/files/lib/wee/utils_rb.html +0 -110
  300. data/examples/ajax/ajax.js +0 -444
  301. data/examples/ajax/ajax.rb +0 -31
  302. data/examples/cc.rb +0 -74
  303. data/examples/dispatcher.rb +0 -37
  304. data/examples/draw.rb +0 -94
  305. data/examples/live-update.rb +0 -45
  306. data/examples/nitro/run.rb +0 -42
  307. data/examples/og-test.rb +0 -60
  308. data/examples/radio.rb +0 -44
  309. data/examples/test.rb +0 -39
  310. data/install.rb +0 -14
  311. data/lib/cache/cache.rb +0 -167
  312. data/lib/wee/abstractsession.rb +0 -96
  313. data/lib/wee/adaptors/fastcgi.rb +0 -76
  314. data/lib/wee/adaptors/nitro.rb +0 -155
  315. data/lib/wee/adaptors/rails.rb +0 -154
  316. data/lib/wee/adaptors/webrick.rb +0 -89
  317. data/lib/wee/components.rb +0 -7
  318. data/lib/wee/components/component_dispatcher.rb +0 -46
  319. data/lib/wee/components/form_decoration.rb +0 -7
  320. data/lib/wee/components/login_decoration.rb +0 -35
  321. data/lib/wee/components/page_decoration.rb +0 -14
  322. data/lib/wee/components/wrapper_decoration.rb +0 -7
  323. data/lib/wee/continuation.rb +0 -5
  324. data/lib/wee/continuation/core/component.rb +0 -56
  325. data/lib/wee/continuation/session.rb +0 -64
  326. data/lib/wee/core.rb +0 -16
  327. data/lib/wee/core/callback.rb +0 -121
  328. data/lib/wee/core/component.rb +0 -356
  329. data/lib/wee/core/componentrunner.rb +0 -73
  330. data/lib/wee/core/context.rb +0 -27
  331. data/lib/wee/core/decoration.rb +0 -138
  332. data/lib/wee/core/idgen.rb +0 -5
  333. data/lib/wee/core/page.rb +0 -1
  334. data/lib/wee/core/presenter.rb +0 -100
  335. data/lib/wee/core/renderer.rb +0 -23
  336. data/lib/wee/core/snapshot.rb +0 -21
  337. data/lib/wee/core/valueholder.rb +0 -19
  338. data/lib/wee/core_ext.rb +0 -122
  339. data/lib/wee/databases/og.rb +0 -4
  340. data/lib/wee/databases/og/application.rb +0 -3
  341. data/lib/wee/databases/og/old_scaffolder.rb +0 -98
  342. data/lib/wee/databases/og/scaffolder.rb +0 -255
  343. data/lib/wee/databases/og/session.rb +0 -9
  344. data/lib/wee/examples/calculator.rb +0 -70
  345. data/lib/wee/examples/counter.rb +0 -33
  346. data/lib/wee/idgen/md5.rb +0 -21
  347. data/lib/wee/idgen/sequential.rb +0 -11
  348. data/lib/wee/pageless.rb +0 -3
  349. data/lib/wee/pageless/application.rb +0 -13
  350. data/lib/wee/pageless/request.rb +0 -27
  351. data/lib/wee/pageless/session.rb +0 -74
  352. data/lib/wee/renderer/html/brushes.rb +0 -667
  353. data/lib/wee/renderer/html/canvas.rb +0 -265
  354. data/lib/wee/renderer/html/writer.rb +0 -80
  355. data/lib/wee/requesthandler.rb +0 -81
  356. data/lib/wee/skeleton/og/README +0 -38
  357. data/lib/wee/skeleton/og/components/main.rb +0 -20
  358. data/lib/wee/skeleton/og/conf/db.rb +0 -8
  359. data/lib/wee/skeleton/og/models/recipe.rb +0 -5
  360. data/lib/wee/skeleton/og/run.rb +0 -23
  361. data/lib/wee/skeleton/simple/README +0 -32
  362. data/lib/wee/skeleton/simple/components/main.rb +0 -25
  363. data/lib/wee/skeleton/simple/run.rb +0 -12
  364. data/lib/wee/snapshot_ext.rb +0 -41
  365. data/lib/wee/template.rb +0 -42
  366. data/lib/wee/utils.rb +0 -5
  367. data/lib/wee/utils/autoreload.rb +0 -56
  368. data/lib/wee/utils/cache.rb +0 -7
  369. data/lib/wee/utils/helper.rb +0 -51
@@ -1,12 +1,9 @@
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
-
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
6
3
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
4
  <head>
8
- <title>Class: Wee::Application</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
5
+ <title>Class: Wee::Application [RDoc Documentation]</title>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10
7
  <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
8
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
9
  <script type="text/javascript">
@@ -25,7 +22,7 @@
25
22
  return false;
26
23
 
27
24
  elemStyle = elem.style;
28
-
25
+
29
26
  if ( elemStyle.display != "block" ) {
30
27
  elemStyle.display = "block"
31
28
  } else {
@@ -34,10 +31,10 @@
34
31
 
35
32
  return true;
36
33
  }
37
-
34
+
38
35
  // Make codeblocks hidden by default
39
- document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
-
36
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }<\/style>" )
37
+
41
38
  // ]]>
42
39
  </script>
43
40
 
@@ -45,7 +42,6 @@
45
42
  <body>
46
43
 
47
44
 
48
-
49
45
  <div id="classHeader">
50
46
  <table class="header-table">
51
47
  <tr class="top-aligned-row">
@@ -55,465 +51,308 @@
55
51
  <tr class="top-aligned-row">
56
52
  <td><strong>In:</strong></td>
57
53
  <td>
54
+
55
+
58
56
  <a href="../../files/lib/wee/application_rb.html">
57
+
59
58
  lib/wee/application.rb
59
+
60
60
  </a>
61
+
62
+
61
63
  <br />
64
+
62
65
  </td>
63
66
  </tr>
64
67
 
68
+
65
69
  <tr class="top-aligned-row">
66
70
  <td><strong>Parent:</strong></td>
67
71
  <td>
72
+
68
73
  <a href="../Object.html">
74
+
69
75
  Object
76
+
70
77
  </a>
78
+
71
79
  </td>
72
80
  </tr>
81
+
73
82
  </table>
74
83
  </div>
75
84
  <!-- banner header -->
76
85
 
77
86
  <div id="bodyContent">
78
87
 
79
-
80
-
81
88
  <div id="contextContent">
82
89
 
83
90
  <div id="description">
84
91
  <p>
85
- A <a href="Application.html">Wee::Application</a> manages all <a
86
- href="RequestHandler.html">Wee::RequestHandler</a>&#8217;s of a single
87
- application, where most of the time the request handlers are <a
88
- href="Session.html">Wee::Session</a> objects. It dispatches the request to
89
- the correct handler by examining the request.
92
+ A <a href="Application.html">Wee::Application</a> manages all
93
+ Session&#8217;s of a single application. It dispatches the request to the
94
+ correct handler by examining the request.
90
95
  </p>
91
96
 
92
97
  </div>
93
98
 
94
-
95
- <div id="contents-list">
96
- <h3 class="section-bar">Contents</h3>
97
- <ul>
98
- <li><a href="#SEC00022">Properties</a></li>
99
- </ul>
100
99
  </div>
101
100
 
101
+
102
102
  <div id="method-list">
103
103
  <h3 class="section-bar">Methods</h3>
104
104
 
105
105
  <div class="name-list">
106
- <a href="#M000293">default_request_handler</a>&nbsp;&nbsp;
107
- <a href="#M000301">garbage_collect_handlers</a>&nbsp;&nbsp;
108
- <a href="#M000299">get_property</a>&nbsp;&nbsp;
109
- <a href="#M000295">handle_request</a>&nbsp;&nbsp;
110
- <a href="#M000296">insert_new_request_handler</a>&nbsp;&nbsp;
111
- <a href="#M000294">new</a>&nbsp;&nbsp;
112
- <a href="#M000297">properties</a>&nbsp;&nbsp;
113
- <a href="#M000298">properties=</a>&nbsp;&nbsp;
114
- <a href="#M000302">request_handler_expired</a>&nbsp;&nbsp;
115
- <a href="#M000300">unique_request_handler_id</a>&nbsp;&nbsp;
106
+
107
+ <a href="#M000096">call</a>&nbsp;&nbsp;
108
+
109
+ <a href="#M000095">cleanup_sessions</a>&nbsp;&nbsp;
110
+
111
+ <a href="#M000098">insert_session</a>&nbsp;&nbsp;
112
+
113
+ <a href="#M000094">new</a>&nbsp;&nbsp;
114
+
115
+ <a href="#M000097">new_session</a>&nbsp;&nbsp;
116
+
116
117
  </div>
117
118
  </div>
118
119
 
119
120
  </div>
120
121
 
121
-
122
122
  <!-- if includes -->
123
123
 
124
124
  <div id="section">
125
125
 
126
+ <div id="class-list">
127
+ <h3 class="section-bar">Classes and Modules</h3>
126
128
 
129
+ Class <a href="Application/SessionCache.html" class="link">Wee::Application::SessionCache</a><br />
127
130
 
131
+ </div>
128
132
 
129
133
 
130
- <div id="attribute-list">
131
- <h3 class="section-bar">Attributes</h3>
132
-
133
- <div class="name-list">
134
- <table>
135
- <tr class="top-aligned-row context-row">
136
- <td class="context-item-name">id_generator</td>
137
- <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
138
- <td class="context-item-desc">
139
- The generator used for creating unique request handler id&#8217;s.
140
-
141
- </td>
142
- </tr>
143
- <tr class="top-aligned-row context-row">
144
- <td class="context-item-name">max_request_handlers</td>
145
- <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
146
- <td class="context-item-desc">
147
- The maximum number of request handlers
148
-
149
- </td>
150
- </tr>
151
- </table>
152
- </div>
153
- </div>
154
-
155
134
 
156
135
 
157
136
  <!-- if method_list -->
137
+
158
138
  <div id="methods">
139
+
159
140
  <h3 class="section-bar">Public Class methods</h3>
160
141
 
161
- <div id="method-M000294" class="method-detail">
162
- <a name="M000294"></a>
163
142
 
164
- <div class="method-heading">
165
- <a href="#M000294" class="method-signature">
166
- <span class="method-name">new</span><span class="method-args">(&amp;block)</span>
167
- </a>
168
- </div>
169
-
170
- <div class="method-description">
171
- <p>
172
- Creates a new application. The block is used to initialize the attributes:
173
- </p>
174
- <pre>
175
- Wee::Application.new {|app|
176
- app.default_request_handler { MySession.new }
177
- app.id_generator = Wee::SimpleIdGenerator.new
178
- app.max_request_handlers = 1000
179
- }
180
- </pre>
181
- <p><a class="source-toggle" href="#"
182
- onclick="toggleCode('M000294-source');return false;">[Source]</a></p>
183
- <div class="method-source-code" id="M000294-source">
184
- <pre>
185
- <span class="ruby-comment cmt"># File lib/wee/application.rb, line 34</span>
186
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
187
- <span class="ruby-ivar">@request_handlers</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>
188
- <span class="ruby-identifier">block</span>.<span class="ruby-identifier">call</span>(<span class="ruby-keyword kw">self</span>)
189
- <span class="ruby-ivar">@id_generator</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">SimpleIdGenerator</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">rand</span>(<span class="ruby-value">1_000_000</span>))
190
- <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@default_request_handler</span>.<span class="ruby-identifier">nil?</span>
191
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;No default request handler specified&quot;</span>
192
- <span class="ruby-keyword kw">end</span>
193
- <span class="ruby-ivar">@mutex</span> = <span class="ruby-constant">Mutex</span>.<span class="ruby-identifier">new</span>
143
+ <div id="method-M000094" class="method-detail">
144
+ <a name="M000094"></a>
194
145
 
195
- <span class="ruby-comment cmt"># start request-handler collecting thread</span>
196
- <span class="ruby-comment cmt"># run once every minute</span>
197
- <span class="ruby-ivar">@gc_thread</span> = <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> {
198
- <span class="ruby-identifier">sleep</span> <span class="ruby-value">60</span>
199
- <span class="ruby-ivar">@mutex</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-identifier">garbage_collect_handlers</span> }
200
- }
201
- <span class="ruby-keyword kw">end</span>
202
- </pre>
203
- </div>
204
- </div>
205
- </div>
146
+ <div class="method-heading">
206
147
 
207
- <h3 class="section-bar">Public Instance methods</h3>
148
+ <a href="#M000094" class="method-signature">
208
149
 
209
- <div id="method-M000293" class="method-detail">
210
- <a name="M000293"></a>
150
+ <span class="method-name">new</span><span class="method-args">(max_sessions=10_000, &amp;block)</span>
211
151
 
212
- <div class="method-heading">
213
- <a href="#M000293" class="method-signature">
214
- <span class="method-name">default_request_handler</span><span class="method-args">(&amp;block)</span>
215
152
  </a>
153
+
216
154
  </div>
217
-
155
+
218
156
  <div class="method-description">
157
+
219
158
  <p>
220
- Get or set the default request handler. The default request handler is used
221
- if no request handler id is given in a request.
159
+ Creates a new application. The block, when called, must return a new <a
160
+ href="Session.html">Session</a> instance.
222
161
  </p>
162
+ <pre>
163
+ Wee::Application.new { Wee::Session.new(root_component) }
164
+ </pre>
165
+
223
166
  <p><a class="source-toggle" href="#"
224
- onclick="toggleCode('M000293-source');return false;">[Source]</a></p>
225
- <div class="method-source-code" id="M000293-source">
167
+ onclick="toggleCode('M000094-source');return false;">[Source]</a></p>
168
+ <div class="method-source-code" id="M000094-source">
226
169
  <pre>
227
- <span class="ruby-comment cmt"># File lib/wee/application.rb, line 18</span>
228
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">default_request_handler</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
229
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">nil?</span>
230
- <span class="ruby-ivar">@default_request_handler</span>
231
- <span class="ruby-keyword kw">else</span>
232
- <span class="ruby-ivar">@default_request_handler</span> = <span class="ruby-identifier">block</span>
170
+ <span class="ruby-comment cmt"># File lib/wee/application.rb, line 25</span>
171
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">max_sessions</span>=<span class="ruby-value">10_000</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
172
+ <span class="ruby-ivar">@session_factory</span> = <span class="ruby-identifier">block</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">raise</span>(<span class="ruby-constant">ArgumentError</span>)
173
+ <span class="ruby-ivar">@session_ids</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">IdGenerator</span><span class="ruby-operator">::</span><span class="ruby-constant">Secure</span>.<span class="ruby-identifier">new</span>
174
+ <span class="ruby-ivar">@sessions</span> = <span class="ruby-constant">SessionCache</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">max_sessions</span>)
175
+ <span class="ruby-ivar">@mutex</span> = <span class="ruby-constant">Mutex</span>.<span class="ruby-identifier">new</span>
233
176
  <span class="ruby-keyword kw">end</span>
234
- <span class="ruby-keyword kw">end</span>
235
177
  </pre>
236
178
  </div>
237
- </div>
238
- </div>
239
179
 
240
- <div id="method-M000295" class="method-detail">
241
- <a name="M000295"></a>
242
-
243
- <div class="method-heading">
244
- <a href="#M000295" class="method-signature">
245
- <span class="method-name">handle_request</span><span class="method-args">(context)</span>
246
- </a>
247
180
  </div>
248
-
249
- <div class="method-description">
250
- <p><a class="source-toggle" href="#"
251
- onclick="toggleCode('M000295-source');return false;">[Source]</a></p>
252
- <div class="method-source-code" id="M000295-source">
253
- <pre>
254
- <span class="ruby-comment cmt"># File lib/wee/application.rb, line 51</span>
255
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_request</span>(<span class="ruby-identifier">context</span>)
256
- <span class="ruby-identifier">request_handler_id</span> = <span class="ruby-identifier">context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">request_handler_id</span>
257
- <span class="ruby-identifier">request_handler</span> = <span class="ruby-ivar">@mutex</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-ivar">@request_handlers</span>[<span class="ruby-identifier">request_handler_id</span>] }
258
-
259
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">request_handler_id</span>.<span class="ruby-identifier">nil?</span>
260
-
261
- <span class="ruby-comment cmt"># No id was given -&gt; check whether the maximum number of request-handlers</span>
262
- <span class="ruby-comment cmt"># limit is reached. if not, create new id and handler</span>
263
-
264
- <span class="ruby-identifier">request_handler</span> = <span class="ruby-ivar">@default_request_handler</span>.<span class="ruby-identifier">call</span>
265
- <span class="ruby-identifier">insert_new_request_handler</span>(<span class="ruby-identifier">request_handler</span>)
266
- <span class="ruby-identifier">context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">request_handler_id</span> = <span class="ruby-identifier">request_handler</span>.<span class="ruby-identifier">id</span>
267
- <span class="ruby-identifier">handle_request</span>(<span class="ruby-identifier">context</span>)
268
- <span class="ruby-keyword kw">return</span>
181
+ </div>
269
182
 
270
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">request_handler</span>.<span class="ruby-identifier">nil?</span>
271
183
 
272
- <span class="ruby-comment cmt"># A false request handler id was given. This might indicate that a</span>
273
- <span class="ruby-comment cmt"># request handler has expired. </span>
184
+ <h3 class="section-bar">Public Instance methods</h3>
274
185
 
275
- <span class="ruby-identifier">request_handler_expired</span>(<span class="ruby-identifier">context</span>)
276
- <span class="ruby-keyword kw">return</span>
277
186
 
278
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-operator">!</span><span class="ruby-identifier">request_handler</span>.<span class="ruby-identifier">alive?</span>
187
+ <div id="method-M000096" class="method-detail">
188
+ <a name="M000096"></a>
279
189
 
280
- <span class="ruby-comment cmt"># The request_handler is not alive anymore.</span>
190
+ <div class="method-heading">
281
191
 
282
- <span class="ruby-identifier">request_handler_expired</span>(<span class="ruby-identifier">context</span>)
283
- <span class="ruby-keyword kw">return</span>
192
+ <a href="#M000096" class="method-signature">
284
193
 
285
- <span class="ruby-keyword kw">end</span>
194
+ <span class="method-name">call</span><span class="method-args">(env)</span>
286
195
 
287
- <span class="ruby-identifier">request_handler</span>.<span class="ruby-identifier">handle_request</span>(<span class="ruby-identifier">context</span>)
196
+ </a>
288
197
 
289
- <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">exn</span>
290
- <span class="ruby-identifier">context</span>.<span class="ruby-identifier">response</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">ErrorResponse</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">exn</span>)
291
- <span class="ruby-keyword kw">end</span>
292
- </pre>
293
- </div>
294
198
  </div>
295
- </div>
296
-
297
- <div id="method-M000296" class="method-detail">
298
- <a name="M000296"></a>
299
199
 
300
- <div class="method-heading">
301
- <a href="#M000296" class="method-signature">
302
- <span class="method-name">insert_new_request_handler</span><span class="method-args">(request_handler)</span>
303
- </a>
304
- </div>
305
-
306
200
  <div class="method-description">
201
+
202
+ <p>
203
+ Handles a web request
204
+ </p>
205
+
307
206
  <p><a class="source-toggle" href="#"
308
- onclick="toggleCode('M000296-source');return false;">[Source]</a></p>
309
- <div class="method-source-code" id="M000296-source">
207
+ onclick="toggleCode('M000096-source');return false;">[Source]</a></p>
208
+ <div class="method-source-code" id="M000096-source">
310
209
  <pre>
311
- <span class="ruby-comment cmt"># File lib/wee/application.rb, line 89</span>
312
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">insert_new_request_handler</span>(<span class="ruby-identifier">request_handler</span>)
313
- <span class="ruby-ivar">@mutex</span>.<span class="ruby-identifier">synchronize</span> {
314
- <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@max_request_handlers</span> <span class="ruby-operator">!=</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">and</span> <span class="ruby-ivar">@request_handlers</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-ivar">@max_request_handlers</span>
315
- <span class="ruby-comment cmt"># limit reached -&gt; remove non-alive handlers...</span>
316
- <span class="ruby-identifier">garbage_collect_handlers</span>()
317
-
318
- <span class="ruby-comment cmt"># ...and test again</span>
319
- <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@request_handlers</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-ivar">@max_request_handlers</span>
320
- <span class="ruby-comment cmt"># TODO: show a custom error message</span>
321
- <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;maximum number of request-handlers reached&quot;</span>
210
+ <span class="ruby-comment cmt"># File lib/wee/application.rb, line 42</span>
211
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">call</span>(<span class="ruby-identifier">env</span>)
212
+ <span class="ruby-identifier">request</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">Request</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">env</span>)
213
+
214
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">request</span>.<span class="ruby-identifier">session_id</span>
215
+ <span class="ruby-identifier">session</span> = <span class="ruby-ivar">@mutex</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-ivar">@sessions</span>[<span class="ruby-identifier">request</span>.<span class="ruby-identifier">session_id</span>] }
216
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">session</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">session</span>.<span class="ruby-identifier">alive?</span>
217
+ <span class="ruby-identifier">session</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">env</span>)
218
+ <span class="ruby-keyword kw">else</span>
219
+ <span class="ruby-identifier">url</span> = <span class="ruby-identifier">request</span>.<span class="ruby-identifier">build_url</span>(<span class="ruby-identifier">:session_id</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">:page_id</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>)
220
+ <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">RefreshResponse</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;Invalid or expired session&quot;</span>, <span class="ruby-identifier">url</span>).<span class="ruby-identifier">finish</span>
322
221
  <span class="ruby-keyword kw">end</span>
222
+ <span class="ruby-keyword kw">else</span>
223
+ <span class="ruby-identifier">session</span> = <span class="ruby-identifier">new_session</span>()
224
+ <span class="ruby-identifier">url</span> = <span class="ruby-identifier">request</span>.<span class="ruby-identifier">build_url</span>(<span class="ruby-identifier">:session_id</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">session</span>.<span class="ruby-identifier">id</span>, <span class="ruby-identifier">:page_id</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>)
225
+ <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">RedirectResponse</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">url</span>).<span class="ruby-identifier">finish</span>
323
226
  <span class="ruby-keyword kw">end</span>
324
-
325
- <span class="ruby-identifier">request_handler</span>.<span class="ruby-identifier">id</span> = <span class="ruby-identifier">unique_request_handler_id</span>()
326
- <span class="ruby-identifier">request_handler</span>.<span class="ruby-identifier">application</span> = <span class="ruby-keyword kw">self</span>
327
- <span class="ruby-ivar">@request_handlers</span>[<span class="ruby-identifier">request_handler</span>.<span class="ruby-identifier">id</span>] = <span class="ruby-identifier">request_handler</span>
328
- }
329
- <span class="ruby-keyword kw">end</span>
227
+ <span class="ruby-keyword kw">end</span>
330
228
  </pre>
331
229
  </div>
230
+
332
231
  </div>
333
232
  </div>
334
233
 
335
234
 
336
- </div>
337
- <div id="section">
338
- <h2 class="section-title"><a name="SEC00022">Properties</a></h2>
339
- <div class="section-comment">
340
-
341
- </div>
342
-
343
-
344
-
345
-
346
-
347
-
235
+ <div id="method-M000095" class="method-detail">
236
+ <a name="M000095"></a>
348
237
 
238
+ <div class="method-heading">
349
239
 
350
- <!-- if method_list -->
351
- <div id="methods">
352
- <h3 class="section-bar">Public Instance methods</h3>
240
+ <a href="#M000095" class="method-signature">
353
241
 
354
- <div id="method-M000299" class="method-detail">
355
- <a name="M000299"></a>
242
+ <span class="method-name">cleanup_sessions</span><span class="method-args">()</span>
356
243
 
357
- <div class="method-heading">
358
- <a href="#M000299" class="method-signature">
359
- <span class="method-name">get_property</span><span class="method-args">(prop, klass)</span>
360
244
  </a>
245
+
361
246
  </div>
362
-
247
+
363
248
  <div class="method-description">
249
+
364
250
  <p>
365
- Returns an &quot;owned&quot; property for the given <tt>klass</tt>.
251
+ Garbage collect dead sessions
366
252
  </p>
253
+
367
254
  <p><a class="source-toggle" href="#"
368
- onclick="toggleCode('M000299-source');return false;">[Source]</a></p>
369
- <div class="method-source-code" id="M000299-source">
255
+ onclick="toggleCode('M000095-source');return false;">[Source]</a></p>
256
+ <div class="method-source-code" id="M000095-source">
370
257
  <pre>
371
- <span class="ruby-comment cmt"># File lib/wee/application.rb, line 117</span>
372
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_property</span>(<span class="ruby-identifier">prop</span>, <span class="ruby-identifier">klass</span>)
373
- <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">properties</span>
374
- <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">properties</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">klass</span>, {})[<span class="ruby-identifier">prop</span>]
375
- <span class="ruby-keyword kw">else</span>
376
- <span class="ruby-keyword kw">nil</span>
258
+ <span class="ruby-comment cmt"># File lib/wee/application.rb, line 35</span>
259
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cleanup_sessions</span>
260
+ <span class="ruby-ivar">@mutex</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-ivar">@sessions</span>.<span class="ruby-identifier">garbage_collect</span> }
377
261
  <span class="ruby-keyword kw">end</span>
378
- <span class="ruby-keyword kw">end</span>
379
262
  </pre>
380
263
  </div>
264
+
381
265
  </div>
382
266
  </div>
383
267
 
384
- <div id="method-M000297" class="method-detail">
385
- <a name="M000297"></a>
386
268
 
387
- <div class="method-heading">
388
- <a href="#M000297" class="method-signature">
389
- <span class="method-name">properties</span><span class="method-args">()</span>
390
- </a>
391
- </div>
392
-
393
- <div class="method-description">
394
- <p><a class="source-toggle" href="#"
395
- onclick="toggleCode('M000297-source');return false;">[Source]</a></p>
396
- <div class="method-source-code" id="M000297-source">
397
- <pre>
398
- <span class="ruby-comment cmt"># File lib/wee/application.rb, line 112</span>
399
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">properties</span>() <span class="ruby-ivar">@__properties</span> <span class="ruby-keyword kw">end</span>
400
- </pre>
401
- </div>
402
- </div>
403
- </div>
269
+ <h3 class="section-bar">Protected Instance methods</h3>
270
+
404
271
 
405
- <div id="method-M000298" class="method-detail">
406
- <a name="M000298"></a>
272
+ <div id="method-M000098" class="method-detail">
273
+ <a name="M000098"></a>
407
274
 
408
275
  <div class="method-heading">
409
- <a href="#M000298" class="method-signature">
410
- <span class="method-name">properties=</span><span class="method-args">(props)</span>
411
- </a>
412
- </div>
413
-
414
- <div class="method-description">
415
- <p><a class="source-toggle" href="#"
416
- onclick="toggleCode('M000298-source');return false;">[Source]</a></p>
417
- <div class="method-source-code" id="M000298-source">
418
- <pre>
419
- <span class="ruby-comment cmt"># File lib/wee/application.rb, line 113</span>
420
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">properties=</span>(<span class="ruby-identifier">props</span>) <span class="ruby-ivar">@__properties</span> = <span class="ruby-identifier">props</span> <span class="ruby-keyword kw">end</span>
421
- </pre>
422
- </div>
423
- </div>
424
- </div>
425
276
 
426
- <h3 class="section-bar">Private Instance methods</h3>
277
+ <a href="#M000098" class="method-signature">
427
278
 
428
- <div id="method-M000301" class="method-detail">
429
- <a name="M000301"></a>
279
+ <span class="method-name">insert_session</span><span class="method-args">(session, retries=3)</span>
430
280
 
431
- <div class="method-heading">
432
- <a href="#M000301" class="method-signature">
433
- <span class="method-name">garbage_collect_handlers</span><span class="method-args">()</span>
434
281
  </a>
282
+
435
283
  </div>
436
-
284
+
437
285
  <div class="method-description">
438
- <p>
439
- MUST be called while holding @mutex
440
- </p>
286
+
441
287
  <p><a class="source-toggle" href="#"
442
- onclick="toggleCode('M000301-source');return false;">[Source]</a></p>
443
- <div class="method-source-code" id="M000301-source">
288
+ onclick="toggleCode('M000098-source');return false;">[Source]</a></p>
289
+ <div class="method-source-code" id="M000098-source">
444
290
  <pre>
445
- <span class="ruby-comment cmt"># File lib/wee/application.rb, line 137</span>
446
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">garbage_collect_handlers</span>
447
- <span class="ruby-ivar">@request_handlers</span>.<span class="ruby-identifier">delete_if</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">id</span>,<span class="ruby-identifier">rh</span><span class="ruby-operator">|</span> <span class="ruby-operator">!</span><span class="ruby-identifier">rh</span>.<span class="ruby-identifier">alive?</span> }
448
- <span class="ruby-keyword kw">end</span>
291
+ <span class="ruby-comment cmt"># File lib/wee/application.rb, line 69</span>
292
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">insert_session</span>(<span class="ruby-identifier">session</span>, <span class="ruby-identifier">retries</span>=<span class="ruby-value">3</span>)
293
+ <span class="ruby-identifier">retries</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span>
294
+ <span class="ruby-ivar">@mutex</span>.<span class="ruby-identifier">synchronize</span> {
295
+ <span class="ruby-identifier">id</span> = <span class="ruby-ivar">@session_ids</span>.<span class="ruby-identifier">next</span>
296
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@sessions</span>[<span class="ruby-identifier">id</span>].<span class="ruby-identifier">nil?</span>
297
+ <span class="ruby-ivar">@sessions</span>[<span class="ruby-identifier">id</span>] = <span class="ruby-identifier">session</span>
298
+ <span class="ruby-identifier">session</span>.<span class="ruby-identifier">id</span> = <span class="ruby-identifier">id</span>
299
+ <span class="ruby-keyword kw">return</span>
300
+ <span class="ruby-keyword kw">end</span>
301
+ }
302
+ <span class="ruby-keyword kw">end</span>
303
+ <span class="ruby-identifier">raise</span>
304
+ <span class="ruby-keyword kw">end</span>
449
305
  </pre>
450
306
  </div>
307
+
451
308
  </div>
452
309
  </div>
453
310
 
454
- <div id="method-M000302" class="method-detail">
455
- <a name="M000302"></a>
311
+
312
+ <div id="method-M000097" class="method-detail">
313
+ <a name="M000097"></a>
456
314
 
457
315
  <div class="method-heading">
458
- <a href="#M000302" class="method-signature">
459
- <span class="method-name">request_handler_expired</span><span class="method-args">(context)</span>
460
- </a>
461
- </div>
462
-
463
- <div class="method-description">
464
- <p><a class="source-toggle" href="#"
465
- onclick="toggleCode('M000302-source');return false;">[Source]</a></p>
466
- <div class="method-source-code" id="M000302-source">
467
- <pre>
468
- <span class="ruby-comment cmt"># File lib/wee/application.rb, line 141</span>
469
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request_handler_expired</span>(<span class="ruby-identifier">context</span>)
470
- <span class="ruby-identifier">context</span>.<span class="ruby-identifier">response</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">RefreshResponse</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;Invalid or expired request handler!&quot;</span>,
471
- <span class="ruby-identifier">context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">build_url</span>(<span class="ruby-identifier">:request_handler_id</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
472
- <span class="ruby-identifier">:page_id</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>))
473
- <span class="ruby-keyword kw">end</span>
474
- </pre>
475
- </div>
476
- </div>
477
- </div>
478
316
 
479
- <div id="method-M000300" class="method-detail">
480
- <a name="M000300"></a>
317
+ <a href="#M000097" class="method-signature">
318
+
319
+ <span class="method-name">new_session</span><span class="method-args">()</span>
481
320
 
482
- <div class="method-heading">
483
- <a href="#M000300" class="method-signature">
484
- <span class="method-name">unique_request_handler_id</span><span class="method-args">()</span>
485
321
  </a>
322
+
486
323
  </div>
487
-
324
+
488
325
  <div class="method-description">
489
- <p>
490
- MUST be called while holding @mutex
491
- </p>
326
+
492
327
  <p><a class="source-toggle" href="#"
493
- onclick="toggleCode('M000300-source');return false;">[Source]</a></p>
494
- <div class="method-source-code" id="M000300-source">
328
+ onclick="toggleCode('M000097-source');return false;">[Source]</a></p>
329
+ <div class="method-source-code" id="M000097-source">
495
330
  <pre>
496
- <span class="ruby-comment cmt"># File lib/wee/application.rb, line 129</span>
497
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">unique_request_handler_id</span>
498
- <span class="ruby-identifier">id</span> = <span class="ruby-ivar">@id_generator</span>.<span class="ruby-identifier">next</span>.<span class="ruby-identifier">to_s</span>
499
- <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;failed to create unique request handler id&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@request_handlers</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">id</span>)
500
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">id</span>
501
- <span class="ruby-keyword kw">end</span>
331
+ <span class="ruby-comment cmt"># File lib/wee/application.rb, line 62</span>
332
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">new_session</span>
333
+ <span class="ruby-identifier">session</span> = <span class="ruby-ivar">@session_factory</span>.<span class="ruby-identifier">call</span>
334
+ <span class="ruby-identifier">session</span>.<span class="ruby-identifier">application</span> = <span class="ruby-keyword kw">self</span>
335
+ <span class="ruby-identifier">insert_session</span>(<span class="ruby-identifier">session</span>)
336
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">session</span>
337
+ <span class="ruby-keyword kw">end</span>
502
338
  </pre>
503
339
  </div>
340
+
504
341
  </div>
505
342
  </div>
506
343
 
507
344
 
345
+
508
346
  </div>
509
347
 
510
348
 
511
- </div>
512
349
 
513
350
 
351
+ </div>
352
+
514
353
  <div id="validator-badges">
515
354
  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
516
355
  </div>
517
356
 
518
357
  </body>
519
- </html>
358
+ </html>