wee 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. data/ChangeLog +75 -0
  2. data/README +17 -9
  3. data/Rakefile +2 -2
  4. data/TODO +20 -0
  5. data/benchmark/Makefile +14 -9
  6. data/benchmark/counter.rb +11 -30
  7. data/benchmark/report_req.rb +12 -0
  8. data/doc/rdoc/classes/Array.html +12 -12
  9. data/doc/rdoc/classes/Cache/StorageCache.html +38 -38
  10. data/doc/rdoc/classes/Cache/Strategy/CapacityBounded.html +30 -30
  11. data/doc/rdoc/classes/Cache/Strategy/LFU.html +24 -24
  12. data/doc/rdoc/classes/Cache/Strategy/LRU.html +24 -24
  13. data/doc/rdoc/classes/Cache/Strategy/Unbounded.html +24 -24
  14. data/doc/rdoc/classes/Enumerable.html +6 -6
  15. data/doc/rdoc/classes/Object.html +12 -12
  16. data/doc/rdoc/classes/OgApplication.html +126 -0
  17. data/doc/rdoc/classes/OgScaffolder.html +401 -0
  18. data/doc/rdoc/classes/OgSession.html +172 -0
  19. data/doc/rdoc/classes/String.html +12 -12
  20. data/doc/rdoc/classes/Struct.html +12 -12
  21. data/doc/rdoc/classes/Wee.html +5 -62
  22. data/doc/rdoc/classes/Wee/AnswerDecoration.html +9 -9
  23. data/doc/rdoc/classes/Wee/Application.html +107 -39
  24. data/doc/rdoc/classes/Wee/Brush.html +22 -18
  25. data/doc/rdoc/classes/Wee/Brush/ActionCallbackMixin.html +17 -11
  26. data/doc/rdoc/classes/Wee/Brush/ActionURLCallbackMixin.html +18 -10
  27. data/doc/rdoc/classes/Wee/Brush/AnchorTag.html +30 -64
  28. data/doc/rdoc/classes/Wee/Brush/FileUploadTag.html +8 -10
  29. data/doc/rdoc/classes/Wee/Brush/FormTag.html +27 -79
  30. data/doc/rdoc/classes/Wee/Brush/GenericEncodedTextBrush.html +12 -12
  31. data/doc/rdoc/classes/Wee/Brush/GenericSingleTagBrush.html +146 -0
  32. data/doc/rdoc/classes/Wee/Brush/GenericTagBrush.html +179 -65
  33. data/doc/rdoc/classes/Wee/Brush/GenericTextBrush.html +12 -12
  34. data/doc/rdoc/classes/Wee/Brush/ImageButtonTag.html +16 -18
  35. data/doc/rdoc/classes/Wee/Brush/ImageTag.html +203 -0
  36. data/doc/rdoc/classes/Wee/Brush/InputCallbackMixin.html +17 -11
  37. data/doc/rdoc/classes/Wee/Brush/InputTag.html +15 -15
  38. data/doc/rdoc/classes/Wee/Brush/JavascriptTag.html +147 -0
  39. data/doc/rdoc/classes/Wee/Brush/Page.html +17 -17
  40. data/doc/rdoc/classes/Wee/Brush/SelectListTag.html +25 -50
  41. data/doc/rdoc/classes/Wee/Brush/SelectOptionTag.html +7 -38
  42. data/doc/rdoc/classes/Wee/Brush/SubmitButtonTag.html +7 -7
  43. data/doc/rdoc/classes/Wee/Brush/TableDataTag.html +15 -16
  44. data/doc/rdoc/classes/Wee/Brush/TableHeaderTag.html +7 -7
  45. data/doc/rdoc/classes/Wee/Brush/TableRowTag.html +65 -50
  46. data/doc/rdoc/classes/Wee/Brush/TableTag.html +7 -7
  47. data/doc/rdoc/classes/Wee/Brush/TextAreaTag.html +14 -64
  48. data/doc/rdoc/classes/Wee/Brush/TextInputTag.html +7 -7
  49. data/doc/rdoc/classes/Wee/Brush/ToCallback.html +146 -0
  50. data/doc/rdoc/classes/Wee/CallbackRegistry.html +40 -40
  51. data/doc/rdoc/classes/Wee/CallbackStream.html +18 -18
  52. data/doc/rdoc/classes/Wee/Canvas.html +24 -24
  53. data/doc/rdoc/classes/Wee/Component.html +232 -149
  54. data/doc/rdoc/classes/Wee/Component/OnAnswer.html +153 -0
  55. data/doc/rdoc/classes/Wee/Decoration.html +42 -42
  56. data/doc/rdoc/classes/Wee/Delegate.html +27 -27
  57. data/doc/rdoc/classes/Wee/ErrorResponse.html +12 -12
  58. data/doc/rdoc/classes/Wee/FormDecoration.html +148 -0
  59. data/doc/rdoc/classes/Wee/GenericResponse.html +6 -6
  60. data/doc/rdoc/classes/Wee/HtmlCanvas.html +296 -215
  61. data/doc/rdoc/classes/Wee/HtmlWriter.html +83 -81
  62. data/doc/rdoc/classes/Wee/LiteralMethodCallback.html +21 -16
  63. data/doc/rdoc/classes/Wee/MessageBox.html +180 -0
  64. data/doc/rdoc/classes/Wee/PageDecoration.html +30 -30
  65. data/doc/rdoc/classes/Wee/Presenter.html +237 -69
  66. data/doc/rdoc/classes/Wee/RedirectResponse.html +6 -6
  67. data/doc/rdoc/classes/Wee/RefreshResponse.html +6 -6
  68. data/doc/rdoc/classes/Wee/Request.html +18 -18
  69. data/doc/rdoc/classes/Wee/RequestHandler.html +43 -39
  70. data/doc/rdoc/classes/Wee/Response.html +24 -24
  71. data/doc/rdoc/classes/Wee/Session.html +746 -72
  72. data/doc/rdoc/classes/Wee/SimpleIdGenerator.html +18 -18
  73. data/doc/rdoc/classes/Wee/Snapshot.html +19 -19
  74. data/doc/rdoc/classes/Wee/Utils.html +138 -2
  75. data/doc/rdoc/classes/Wee/Utils/LRUCache.html +7 -7
  76. data/doc/rdoc/classes/Wee/ValueHolder.html +18 -18
  77. data/doc/rdoc/classes/Wee/WEBrickAdaptor.html +43 -68
  78. data/doc/rdoc/classes/Wee/WrapperDecoration.html +150 -0
  79. data/doc/rdoc/created.rid +1 -1
  80. data/doc/rdoc/files/README.html +29 -15
  81. data/doc/rdoc/files/lib/wee/adaptors/webrick_rb.html +1 -1
  82. data/doc/rdoc/files/lib/wee/application_rb.html +1 -1
  83. data/doc/rdoc/files/lib/wee/components/form_decoration_rb.html +101 -0
  84. data/doc/rdoc/files/lib/wee/components/messagebox_rb.html +101 -0
  85. data/doc/rdoc/files/lib/wee/components/page_decoration_rb.html +1 -1
  86. data/doc/rdoc/files/lib/wee/components/wrapper_decoration_rb.html +101 -0
  87. data/doc/rdoc/files/lib/wee/components_rb.html +4 -1
  88. data/doc/rdoc/files/lib/wee/continuation/core/component_rb.html +101 -0
  89. data/doc/rdoc/files/lib/wee/continuation/session_rb.html +110 -0
  90. data/doc/rdoc/files/lib/wee/continuation_rb.html +116 -0
  91. data/doc/rdoc/files/lib/wee/core/callback_rb.html +1 -1
  92. data/doc/rdoc/files/lib/wee/core/component_rb.html +1 -1
  93. data/doc/rdoc/files/lib/wee/core/presenter_rb.html +1 -1
  94. data/doc/rdoc/files/lib/wee/core_rb.html +3 -3
  95. data/doc/rdoc/files/lib/wee/databases/og_rb.html +108 -0
  96. data/doc/rdoc/files/lib/wee/renderer/html/brushes_rb.html +1 -1
  97. data/doc/rdoc/files/lib/wee/renderer/html/canvas_rb.html +1 -1
  98. data/doc/rdoc/files/lib/wee/renderer/html/writer_rb.html +1 -1
  99. data/doc/rdoc/files/lib/wee/requesthandler_rb.html +1 -1
  100. data/doc/rdoc/files/lib/wee/session_rb.html +1 -2
  101. data/doc/rdoc/files/lib/wee/utils/autoreload_rb.html +1 -1
  102. data/doc/rdoc/files/lib/wee/utils/cache_rb.html +1 -1
  103. data/doc/rdoc/files/lib/wee/utils/helper_rb.html +1 -8
  104. data/doc/rdoc/files/lib/wee/utils_rb.html +110 -0
  105. data/doc/rdoc/files/lib/wee_rb.html +1 -1
  106. data/doc/rdoc/fr_class_index.html +11 -1
  107. data/doc/rdoc/fr_file_index.html +8 -0
  108. data/doc/rdoc/fr_method_index.html +269 -228
  109. data/examples/calculator.rb +69 -0
  110. data/examples/calendar.rb +5 -17
  111. data/examples/example.rb +2 -2
  112. data/examples/hw.rb +17 -0
  113. data/examples/live-update.rb +45 -0
  114. data/examples/og-test.rb +51 -0
  115. data/lib/wee.rb +1 -1
  116. data/lib/wee/adaptors/webrick.rb +2 -0
  117. data/lib/wee/application.rb +16 -0
  118. data/lib/wee/components.rb +3 -0
  119. data/lib/wee/components/form_decoration.rb +7 -0
  120. data/{test → lib/wee}/components/messagebox.rb +1 -1
  121. data/lib/wee/components/page_decoration.rb +5 -5
  122. data/lib/wee/components/wrapper_decoration.rb +7 -0
  123. data/lib/wee/continuation.rb +5 -0
  124. data/lib/wee/continuation/core/component.rb +55 -0
  125. data/lib/wee/continuation/session.rb +217 -0
  126. data/lib/wee/core/callback.rb +11 -6
  127. data/lib/wee/core/component.rb +45 -33
  128. data/lib/wee/core/presenter.rb +68 -0
  129. data/lib/wee/databases/og.rb +114 -0
  130. data/lib/wee/renderer/html/brushes.rb +179 -98
  131. data/lib/wee/renderer/html/canvas.rb +37 -13
  132. data/lib/wee/renderer/html/writer.rb +34 -32
  133. data/lib/wee/requesthandler.rb +6 -3
  134. data/lib/wee/session.rb +73 -54
  135. data/lib/wee/utils.rb +5 -0
  136. data/lib/wee/utils/autoreload.rb +1 -1
  137. data/lib/wee/utils/cache.rb +0 -2
  138. data/lib/wee/utils/helper.rb +40 -8
  139. data/test/components/calltest-cont.rb +16 -0
  140. data/test/components/calltest.rb +15 -10
  141. data/test/stress.rb +31 -28
  142. data/test/stress_and_measure.rb +53 -0
  143. data/test/stressed_application.rb +15 -0
  144. data/test/test_html_writer.rb +9 -4
  145. metadata +236 -195
  146. data/benchmark/bench.sh +0 -24
@@ -88,7 +88,7 @@
88
88
  <h3 class="section-bar">Methods</h3>
89
89
 
90
90
  <div class="name-list">
91
- <a href="#M000189">new</a>&nbsp;&nbsp;
91
+ <a href="#M000227">new</a>&nbsp;&nbsp;
92
92
  </div>
93
93
  </div>
94
94
 
@@ -110,19 +110,19 @@
110
110
  <div id="methods">
111
111
  <h3 class="section-bar">Public Class methods</h3>
112
112
 
113
- <div id="method-M000189" class="method-detail">
114
- <a name="M000189"></a>
113
+ <div id="method-M000227" class="method-detail">
114
+ <a name="M000227"></a>
115
115
 
116
116
  <div class="method-heading">
117
- <a href="#M000189" class="method-signature">
117
+ <a href="#M000227" class="method-signature">
118
118
  <span class="method-name">new</span><span class="method-args">(location)</span>
119
119
  </a>
120
120
  </div>
121
121
 
122
122
  <div class="method-description">
123
123
  <p><a class="source-toggle" href="#"
124
- onclick="toggleCode('M000189-source');return false;">[Source]</a></p>
125
- <div class="method-source-code" id="M000189-source">
124
+ onclick="toggleCode('M000227-source');return false;">[Source]</a></p>
125
+ <div class="method-source-code" id="M000227-source">
126
126
  <pre>
127
127
  <span class="ruby-comment cmt"># File lib/wee/response.rb, line 41</span>
128
128
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">location</span>)
@@ -88,7 +88,7 @@
88
88
  <h3 class="section-bar">Methods</h3>
89
89
 
90
90
  <div class="name-list">
91
- <a href="#M000168">new</a>&nbsp;&nbsp;
91
+ <a href="#M000204">new</a>&nbsp;&nbsp;
92
92
  </div>
93
93
  </div>
94
94
 
@@ -110,19 +110,19 @@
110
110
  <div id="methods">
111
111
  <h3 class="section-bar">Public Class methods</h3>
112
112
 
113
- <div id="method-M000168" class="method-detail">
114
- <a name="M000168"></a>
113
+ <div id="method-M000204" class="method-detail">
114
+ <a name="M000204"></a>
115
115
 
116
116
  <div class="method-heading">
117
- <a href="#M000168" class="method-signature">
117
+ <a href="#M000204" class="method-signature">
118
118
  <span class="method-name">new</span><span class="method-args">(message, location, seconds=10)</span>
119
119
  </a>
120
120
  </div>
121
121
 
122
122
  <div class="method-description">
123
123
  <p><a class="source-toggle" href="#"
124
- onclick="toggleCode('M000168-source');return false;">[Source]</a></p>
125
- <div class="method-source-code" id="M000168-source">
124
+ onclick="toggleCode('M000204-source');return false;">[Source]</a></p>
125
+ <div class="method-source-code" id="M000204-source">
126
126
  <pre>
127
127
  <span class="ruby-comment cmt"># File lib/wee/response.rb, line 49</span>
128
128
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">message</span>, <span class="ruby-identifier">location</span>, <span class="ruby-identifier">seconds</span>=<span class="ruby-value">10</span>)
@@ -100,9 +100,9 @@ NOTE that if there are fields named &quot;xxx&quot; and
100
100
  <h3 class="section-bar">Methods</h3>
101
101
 
102
102
  <div class="name-list">
103
- <a href="#M000207">application_path</a>&nbsp;&nbsp;
104
- <a href="#M000208">build_url</a>&nbsp;&nbsp;
105
- <a href="#M000206">new</a>&nbsp;&nbsp;
103
+ <a href="#M000248">application_path</a>&nbsp;&nbsp;
104
+ <a href="#M000249">build_url</a>&nbsp;&nbsp;
105
+ <a href="#M000247">new</a>&nbsp;&nbsp;
106
106
  </div>
107
107
  </div>
108
108
 
@@ -147,19 +147,19 @@ NOTE that if there are fields named &quot;xxx&quot; and
147
147
  <div id="methods">
148
148
  <h3 class="section-bar">Public Class methods</h3>
149
149
 
150
- <div id="method-M000206" class="method-detail">
151
- <a name="M000206"></a>
150
+ <div id="method-M000247" class="method-detail">
151
+ <a name="M000247"></a>
152
152
 
153
153
  <div class="method-heading">
154
- <a href="#M000206" class="method-signature">
154
+ <a href="#M000247" class="method-signature">
155
155
  <span class="method-name">new</span><span class="method-args">(app_path, path, headers, fields)</span>
156
156
  </a>
157
157
  </div>
158
158
 
159
159
  <div class="method-description">
160
160
  <p><a class="source-toggle" href="#"
161
- onclick="toggleCode('M000206-source');return false;">[Source]</a></p>
162
- <div class="method-source-code" id="M000206-source">
161
+ onclick="toggleCode('M000247-source');return false;">[Source]</a></p>
162
+ <div class="method-source-code" id="M000247-source">
163
163
  <pre>
164
164
  <span class="ruby-comment cmt"># File lib/wee/request.rb, line 11</span>
165
165
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">app_path</span>, <span class="ruby-identifier">path</span>, <span class="ruby-identifier">headers</span>, <span class="ruby-identifier">fields</span>)
@@ -195,19 +195,19 @@ NOTE that if there are fields named &quot;xxx&quot; and
195
195
 
196
196
  <h3 class="section-bar">Public Instance methods</h3>
197
197
 
198
- <div id="method-M000207" class="method-detail">
199
- <a name="M000207"></a>
198
+ <div id="method-M000248" class="method-detail">
199
+ <a name="M000248"></a>
200
200
 
201
201
  <div class="method-heading">
202
- <a href="#M000207" class="method-signature">
202
+ <a href="#M000248" class="method-signature">
203
203
  <span class="method-name">application_path</span><span class="method-args">()</span>
204
204
  </a>
205
205
  </div>
206
206
 
207
207
  <div class="method-description">
208
208
  <p><a class="source-toggle" href="#"
209
- onclick="toggleCode('M000207-source');return false;">[Source]</a></p>
210
- <div class="method-source-code" id="M000207-source">
209
+ onclick="toggleCode('M000248-source');return false;">[Source]</a></p>
210
+ <div class="method-source-code" id="M000248-source">
211
211
  <pre>
212
212
  <span class="ruby-comment cmt"># File lib/wee/request.rb, line 38</span>
213
213
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">application_path</span>
@@ -218,19 +218,19 @@ NOTE that if there are fields named &quot;xxx&quot; and
218
218
  </div>
219
219
  </div>
220
220
 
221
- <div id="method-M000208" class="method-detail">
222
- <a name="M000208"></a>
221
+ <div id="method-M000249" class="method-detail">
222
+ <a name="M000249"></a>
223
223
 
224
224
  <div class="method-heading">
225
- <a href="#M000208" class="method-signature">
225
+ <a href="#M000249" class="method-signature">
226
226
  <span class="method-name">build_url</span><span class="method-args">(request_handler_id=nil, page_id=nil, callback_id=nil)</span>
227
227
  </a>
228
228
  </div>
229
229
 
230
230
  <div class="method-description">
231
231
  <p><a class="source-toggle" href="#"
232
- onclick="toggleCode('M000208-source');return false;">[Source]</a></p>
233
- <div class="method-source-code" id="M000208-source">
232
+ onclick="toggleCode('M000249-source');return false;">[Source]</a></p>
233
+ <div class="method-source-code" id="M000249-source">
234
234
  <pre>
235
235
  <span class="ruby-comment cmt"># File lib/wee/request.rb, line 42</span>
236
236
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">build_url</span>(<span class="ruby-identifier">request_handler_id</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">page_id</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">callback_id</span>=<span class="ruby-keyword kw">nil</span>)
@@ -88,11 +88,11 @@
88
88
  <h3 class="section-bar">Methods</h3>
89
89
 
90
90
  <div class="name-list">
91
- <a href="#M000220">alive?</a>&nbsp;&nbsp;
92
- <a href="#M000221">handle_request</a>&nbsp;&nbsp;
93
- <a href="#M000223">new</a>&nbsp;&nbsp;
94
- <a href="#M000222">statistics</a>&nbsp;&nbsp;
95
- <a href="#M000219">teminate</a>&nbsp;&nbsp;
91
+ <a href="#M000261">alive?</a>&nbsp;&nbsp;
92
+ <a href="#M000262">handle_request</a>&nbsp;&nbsp;
93
+ <a href="#M000264">new</a>&nbsp;&nbsp;
94
+ <a href="#M000263">statistics</a>&nbsp;&nbsp;
95
+ <a href="#M000260">teminate</a>&nbsp;&nbsp;
96
96
  </div>
97
97
  </div>
98
98
 
@@ -175,21 +175,21 @@ The maximum number of requests this handler should serve. A value of
175
175
  <div id="methods">
176
176
  <h3 class="section-bar">Public Class methods</h3>
177
177
 
178
- <div id="method-M000223" class="method-detail">
179
- <a name="M000223"></a>
178
+ <div id="method-M000264" class="method-detail">
179
+ <a name="M000264"></a>
180
180
 
181
181
  <div class="method-heading">
182
- <a href="#M000223" class="method-signature">
182
+ <a href="#M000264" class="method-signature">
183
183
  <span class="method-name">new</span><span class="method-args">()</span>
184
184
  </a>
185
185
  </div>
186
186
 
187
187
  <div class="method-description">
188
188
  <p><a class="source-toggle" href="#"
189
- onclick="toggleCode('M000223-source');return false;">[Source]</a></p>
190
- <div class="method-source-code" id="M000223-source">
189
+ onclick="toggleCode('M000264-source');return false;">[Source]</a></p>
190
+ <div class="method-source-code" id="M000264-source">
191
191
  <pre>
192
- <span class="ruby-comment cmt"># File lib/wee/requesthandler.rb, line 71</span>
192
+ <span class="ruby-comment cmt"># File lib/wee/requesthandler.rb, line 74</span>
193
193
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
194
194
  <span class="ruby-ivar">@last_access</span> = <span class="ruby-ivar">@creation_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
195
195
  <span class="ruby-ivar">@expire_after</span> = <span class="ruby-value">30</span><span class="ruby-operator">*</span><span class="ruby-value">60</span> <span class="ruby-comment cmt"># The default is 30 minutes of inactivity</span>
@@ -203,11 +203,11 @@ The maximum number of requests this handler should serve. A value of
203
203
 
204
204
  <h3 class="section-bar">Public Instance methods</h3>
205
205
 
206
- <div id="method-M000220" class="method-detail">
207
- <a name="M000220"></a>
206
+ <div id="method-M000261" class="method-detail">
207
+ <a name="M000261"></a>
208
208
 
209
209
  <div class="method-heading">
210
- <a href="#M000220" class="method-signature">
210
+ <a href="#M000261" class="method-signature">
211
211
  <span class="method-name">alive?</span><span class="method-args">()</span>
212
212
  </a>
213
213
  </div>
@@ -217,20 +217,20 @@ The maximum number of requests this handler should serve. A value of
217
217
  Query whether this handler is still alive.
218
218
  </p>
219
219
  <p><a class="source-toggle" href="#"
220
- onclick="toggleCode('M000220-source');return false;">[Source]</a></p>
221
- <div class="method-source-code" id="M000220-source">
220
+ onclick="toggleCode('M000261-source');return false;">[Source]</a></p>
221
+ <div class="method-source-code" id="M000261-source">
222
222
  <pre>
223
- <span class="ruby-comment cmt"># File lib/wee/requesthandler.rb, line 40</span>
223
+ <span class="ruby-comment cmt"># File lib/wee/requesthandler.rb, line 43</span>
224
224
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alive?</span>
225
225
  <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-ivar">@running</span>
226
- <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@max_requests</span> <span class="ruby-keyword kw">and</span> <span class="ruby-ivar">@request_count</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-ivar">@max_requests</span>
226
+ <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@running</span> = <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@max_requests</span> <span class="ruby-keyword kw">and</span> <span class="ruby-ivar">@request_count</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-ivar">@max_requests</span>
227
227
 
228
228
  <span class="ruby-identifier">now</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
229
229
  <span class="ruby-identifier">inactivity</span> = <span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@last_access</span>
230
230
  <span class="ruby-identifier">lifetime</span> = <span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@creation_time</span>
231
231
 
232
- <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@expire_after</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">inactivity</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@expire_after</span>
233
- <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@max_lifetime</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">lifetime</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@max_lifetime</span>
232
+ <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@running</span> = <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@expire_after</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">inactivity</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@expire_after</span>
233
+ <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@running</span> = <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@max_lifetime</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">lifetime</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@max_lifetime</span>
234
234
  <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
235
235
  <span class="ruby-keyword kw">end</span>
236
236
  </pre>
@@ -238,25 +238,25 @@ Query whether this handler is still alive.
238
238
  </div>
239
239
  </div>
240
240
 
241
- <div id="method-M000221" class="method-detail">
242
- <a name="M000221"></a>
241
+ <div id="method-M000262" class="method-detail">
242
+ <a name="M000262"></a>
243
243
 
244
244
  <div class="method-heading">
245
- <a href="#M000221" class="method-signature">
245
+ <a href="#M000262" class="method-signature">
246
246
  <span class="method-name">handle_request</span><span class="method-args">(context)</span>
247
247
  </a>
248
248
  </div>
249
249
 
250
250
  <div class="method-description">
251
251
  <p>
252
- Extend <a href="RequestHandler.html#M000221">handle_request</a> in your own
252
+ Extend <a href="RequestHandler.html#M000262">handle_request</a> in your own
253
253
  subclass.
254
254
  </p>
255
255
  <p><a class="source-toggle" href="#"
256
- onclick="toggleCode('M000221-source');return false;">[Source]</a></p>
257
- <div class="method-source-code" id="M000221-source">
256
+ onclick="toggleCode('M000262-source');return false;">[Source]</a></p>
257
+ <div class="method-source-code" id="M000262-source">
258
258
  <pre>
259
- <span class="ruby-comment cmt"># File lib/wee/requesthandler.rb, line 55</span>
259
+ <span class="ruby-comment cmt"># File lib/wee/requesthandler.rb, line 58</span>
260
260
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_request</span>(<span class="ruby-identifier">context</span>)
261
261
  <span class="ruby-ivar">@request_count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
262
262
  <span class="ruby-ivar">@last_access</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
@@ -266,21 +266,21 @@ subclass.
266
266
  </div>
267
267
  </div>
268
268
 
269
- <div id="method-M000222" class="method-detail">
270
- <a name="M000222"></a>
269
+ <div id="method-M000263" class="method-detail">
270
+ <a name="M000263"></a>
271
271
 
272
272
  <div class="method-heading">
273
- <a href="#M000222" class="method-signature">
273
+ <a href="#M000263" class="method-signature">
274
274
  <span class="method-name">statistics</span><span class="method-args">()</span>
275
275
  </a>
276
276
  </div>
277
277
 
278
278
  <div class="method-description">
279
279
  <p><a class="source-toggle" href="#"
280
- onclick="toggleCode('M000222-source');return false;">[Source]</a></p>
281
- <div class="method-source-code" id="M000222-source">
280
+ onclick="toggleCode('M000263-source');return false;">[Source]</a></p>
281
+ <div class="method-source-code" id="M000263-source">
282
282
  <pre>
283
- <span class="ruby-comment cmt"># File lib/wee/requesthandler.rb, line 60</span>
283
+ <span class="ruby-comment cmt"># File lib/wee/requesthandler.rb, line 63</span>
284
284
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">statistics</span>
285
285
  <span class="ruby-identifier">now</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
286
286
  {
@@ -296,11 +296,11 @@ subclass.
296
296
  </div>
297
297
  </div>
298
298
 
299
- <div id="method-M000219" class="method-detail">
300
- <a name="M000219"></a>
299
+ <div id="method-M000260" class="method-detail">
300
+ <a name="M000260"></a>
301
301
 
302
302
  <div class="method-heading">
303
- <a href="#M000219" class="method-signature">
303
+ <a href="#M000260" class="method-signature">
304
304
  <span class="method-name">teminate</span><span class="method-args">()</span>
305
305
  </a>
306
306
  </div>
@@ -308,12 +308,16 @@ subclass.
308
308
  <div class="method-description">
309
309
  <p>
310
310
  Terminates the handler.
311
+ </p>
312
+ <p>
313
+ This will usually not immediatly terminate the handler from running, but
314
+ further requests will not be answered.
311
315
  </p>
312
316
  <p><a class="source-toggle" href="#"
313
- onclick="toggleCode('M000219-source');return false;">[Source]</a></p>
314
- <div class="method-source-code" id="M000219-source">
317
+ onclick="toggleCode('M000260-source');return false;">[Source]</a></p>
318
+ <div class="method-source-code" id="M000260-source">
315
319
  <pre>
316
- <span class="ruby-comment cmt"># File lib/wee/requesthandler.rb, line 34</span>
320
+ <span class="ruby-comment cmt"># File lib/wee/requesthandler.rb, line 37</span>
317
321
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">teminate</span>
318
322
  <span class="ruby-ivar">@running</span> = <span class="ruby-keyword kw">false</span>
319
323
  <span class="ruby-keyword kw">end</span>
@@ -88,10 +88,10 @@
88
88
  <h3 class="section-bar">Methods</h3>
89
89
 
90
90
  <div class="name-list">
91
- <a href="#M000155">&lt;&lt;</a>&nbsp;&nbsp;
92
- <a href="#M000153">content_type</a>&nbsp;&nbsp;
93
- <a href="#M000154">content_type=</a>&nbsp;&nbsp;
94
- <a href="#M000152">new</a>&nbsp;&nbsp;
91
+ <a href="#M000191">&lt;&lt;</a>&nbsp;&nbsp;
92
+ <a href="#M000189">content_type</a>&nbsp;&nbsp;
93
+ <a href="#M000190">content_type=</a>&nbsp;&nbsp;
94
+ <a href="#M000188">new</a>&nbsp;&nbsp;
95
95
  </div>
96
96
  </div>
97
97
 
@@ -149,19 +149,19 @@
149
149
  <div id="methods">
150
150
  <h3 class="section-bar">Public Class methods</h3>
151
151
 
152
- <div id="method-M000152" class="method-detail">
153
- <a name="M000152"></a>
152
+ <div id="method-M000188" class="method-detail">
153
+ <a name="M000188"></a>
154
154
 
155
155
  <div class="method-heading">
156
- <a href="#M000152" class="method-signature">
156
+ <a href="#M000188" class="method-signature">
157
157
  <span class="method-name">new</span><span class="method-args">(mime_type = 'text/html', content='')</span>
158
158
  </a>
159
159
  </div>
160
160
 
161
161
  <div class="method-description">
162
162
  <p><a class="source-toggle" href="#"
163
- onclick="toggleCode('M000152-source');return false;">[Source]</a></p>
164
- <div class="method-source-code" id="M000152-source">
163
+ onclick="toggleCode('M000188-source');return false;">[Source]</a></p>
164
+ <div class="method-source-code" id="M000188-source">
165
165
  <pre>
166
166
  <span class="ruby-comment cmt"># File lib/wee/response.rb, line 9</span>
167
167
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">mime_type</span> = <span class="ruby-value str">'text/html'</span>, <span class="ruby-identifier">content</span>=<span class="ruby-value str">''</span>)
@@ -176,19 +176,19 @@
176
176
 
177
177
  <h3 class="section-bar">Public Instance methods</h3>
178
178
 
179
- <div id="method-M000155" class="method-detail">
180
- <a name="M000155"></a>
179
+ <div id="method-M000191" class="method-detail">
180
+ <a name="M000191"></a>
181
181
 
182
182
  <div class="method-heading">
183
- <a href="#M000155" class="method-signature">
183
+ <a href="#M000191" class="method-signature">
184
184
  <span class="method-name">&lt;&lt;</span><span class="method-args">(str)</span>
185
185
  </a>
186
186
  </div>
187
187
 
188
188
  <div class="method-description">
189
189
  <p><a class="source-toggle" href="#"
190
- onclick="toggleCode('M000155-source');return false;">[Source]</a></p>
191
- <div class="method-source-code" id="M000155-source">
190
+ onclick="toggleCode('M000191-source');return false;">[Source]</a></p>
191
+ <div class="method-source-code" id="M000191-source">
192
192
  <pre>
193
193
  <span class="ruby-comment cmt"># File lib/wee/response.rb, line 23</span>
194
194
  <span class="ruby-keyword kw">def</span> <span class="ruby-operator">&lt;&lt;</span>(<span class="ruby-identifier">str</span>)
@@ -199,19 +199,19 @@
199
199
  </div>
200
200
  </div>
201
201
 
202
- <div id="method-M000153" class="method-detail">
203
- <a name="M000153"></a>
202
+ <div id="method-M000189" class="method-detail">
203
+ <a name="M000189"></a>
204
204
 
205
205
  <div class="method-heading">
206
- <a href="#M000153" class="method-signature">
206
+ <a href="#M000189" class="method-signature">
207
207
  <span class="method-name">content_type</span><span class="method-args">()</span>
208
208
  </a>
209
209
  </div>
210
210
 
211
211
  <div class="method-description">
212
212
  <p><a class="source-toggle" href="#"
213
- onclick="toggleCode('M000153-source');return false;">[Source]</a></p>
214
- <div class="method-source-code" id="M000153-source">
213
+ onclick="toggleCode('M000189-source');return false;">[Source]</a></p>
214
+ <div class="method-source-code" id="M000189-source">
215
215
  <pre>
216
216
  <span class="ruby-comment cmt"># File lib/wee/response.rb, line 15</span>
217
217
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">content_type</span>
@@ -222,19 +222,19 @@
222
222
  </div>
223
223
  </div>
224
224
 
225
- <div id="method-M000154" class="method-detail">
226
- <a name="M000154"></a>
225
+ <div id="method-M000190" class="method-detail">
226
+ <a name="M000190"></a>
227
227
 
228
228
  <div class="method-heading">
229
- <a href="#M000154" class="method-signature">
229
+ <a href="#M000190" class="method-signature">
230
230
  <span class="method-name">content_type=</span><span class="method-args">(mime_type)</span>
231
231
  </a>
232
232
  </div>
233
233
 
234
234
  <div class="method-description">
235
235
  <p><a class="source-toggle" href="#"
236
- onclick="toggleCode('M000154-source');return false;">[Source]</a></p>
237
- <div class="method-source-code" id="M000154-source">
236
+ onclick="toggleCode('M000190-source');return false;">[Source]</a></p>
237
+ <div class="method-source-code" id="M000190-source">
238
238
  <pre>
239
239
  <span class="ruby-comment cmt"># File lib/wee/response.rb, line 19</span>
240
240
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">content_type=</span>(<span class="ruby-identifier">mime_type</span>)
@@ -58,6 +58,10 @@
58
58
  <a href="../../files/lib/wee/session_rb.html">
59
59
  lib/wee/session.rb
60
60
  </a>
61
+ <br />
62
+ <a href="../../files/lib/wee/continuation/session_rb.html">
63
+ lib/wee/continuation/session.rb
64
+ </a>
61
65
  <br />
62
66
  </td>
63
67
  </tr>
@@ -82,21 +86,45 @@
82
86
 
83
87
 
84
88
 
89
+ <div id="contents-list">
90
+ <h3 class="section-bar">Contents</h3>
91
+ <ul>
92
+ <li><a href="#SEC00016">Properties</a></li>
93
+ <li><a href="#SEC00118">Properties</a></li>
94
+ </ul>
85
95
  </div>
86
96
 
87
97
  <div id="method-list">
88
98
  <h3 class="section-bar">Methods</h3>
89
99
 
90
100
  <div class="name-list">
91
- <a href="#M000136">create_page</a>&nbsp;&nbsp;
92
- <a href="#M000131">current</a>&nbsp;&nbsp;
93
- <a href="#M000138">handle_new_page_view</a>&nbsp;&nbsp;
94
- <a href="#M000134">handle_request</a>&nbsp;&nbsp;
95
- <a href="#M000132">new</a>&nbsp;&nbsp;
96
- <a href="#M000137">process_request</a>&nbsp;&nbsp;
97
- <a href="#M000139">respond</a>&nbsp;&nbsp;
98
- <a href="#M000133">snapshot</a>&nbsp;&nbsp;
99
- <a href="#M000135">start_request_response_loop</a>&nbsp;&nbsp;
101
+ <a href="#M000153">awake</a>&nbsp;&nbsp;
102
+ <a href="#M000167">awake</a>&nbsp;&nbsp;
103
+ <a href="#M000152">create_page</a>&nbsp;&nbsp;
104
+ <a href="#M000166">create_page</a>&nbsp;&nbsp;
105
+ <a href="#M000148">current</a>&nbsp;&nbsp;
106
+ <a href="#M000161">current</a>&nbsp;&nbsp;
107
+ <a href="#M000170">current_context</a>&nbsp;&nbsp;
108
+ <a href="#M000156">current_context</a>&nbsp;&nbsp;
109
+ <a href="#M000171">current_page</a>&nbsp;&nbsp;
110
+ <a href="#M000157">current_page</a>&nbsp;&nbsp;
111
+ <a href="#M000172">get_property</a>&nbsp;&nbsp;
112
+ <a href="#M000158">get_property</a>&nbsp;&nbsp;
113
+ <a href="#M000159">handle_new_page_view</a>&nbsp;&nbsp;
114
+ <a href="#M000173">handle_new_page_view</a>&nbsp;&nbsp;
115
+ <a href="#M000151">handle_request</a>&nbsp;&nbsp;
116
+ <a href="#M000164">handle_request</a>&nbsp;&nbsp;
117
+ <a href="#M000149">new</a>&nbsp;&nbsp;
118
+ <a href="#M000162">new</a>&nbsp;&nbsp;
119
+ <a href="#M000155">process_request</a>&nbsp;&nbsp;
120
+ <a href="#M000169">process_request</a>&nbsp;&nbsp;
121
+ <a href="#M000160">respond</a>&nbsp;&nbsp;
122
+ <a href="#M000174">respond</a>&nbsp;&nbsp;
123
+ <a href="#M000168">sleep</a>&nbsp;&nbsp;
124
+ <a href="#M000154">sleep</a>&nbsp;&nbsp;
125
+ <a href="#M000150">snapshot</a>&nbsp;&nbsp;
126
+ <a href="#M000163">snapshot</a>&nbsp;&nbsp;
127
+ <a href="#M000165">start_request_response_loop</a>&nbsp;&nbsp;
100
128
  </div>
101
129
  </div>
102
130
 
@@ -136,21 +164,409 @@
136
164
  <div id="methods">
137
165
  <h3 class="section-bar">Public Class methods</h3>
138
166
 
139
- <div id="method-M000131" class="method-detail">
140
- <a name="M000131"></a>
167
+ <div id="method-M000148" class="method-detail">
168
+ <a name="M000148"></a>
169
+
170
+ <div class="method-heading">
171
+ <a href="#M000148" class="method-signature">
172
+ <span class="method-name">current</span><span class="method-args">()</span>
173
+ </a>
174
+ </div>
175
+
176
+ <div class="method-description">
177
+ <p><a class="source-toggle" href="#"
178
+ onclick="toggleCode('M000148-source');return false;">[Source]</a></p>
179
+ <div class="method-source-code" id="M000148-source">
180
+ <pre>
181
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 7</span>
182
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">current</span>
183
+ <span class="ruby-identifier">sess</span> = <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">current</span>[<span class="ruby-identifier">:wee_session</span>]
184
+ <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;not in session&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sess</span>.<span class="ruby-identifier">nil?</span>
185
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">sess</span>
186
+ <span class="ruby-keyword kw">end</span>
187
+ </pre>
188
+ </div>
189
+ </div>
190
+ </div>
191
+
192
+ <div id="method-M000149" class="method-detail">
193
+ <a name="M000149"></a>
194
+
195
+ <div class="method-heading">
196
+ <a href="#M000149" class="method-signature">
197
+ <span class="method-name">new</span><span class="method-args">(&amp;block)</span>
198
+ </a>
199
+ </div>
200
+
201
+ <div class="method-description">
202
+ <p><a class="source-toggle" href="#"
203
+ onclick="toggleCode('M000149-source');return false;">[Source]</a></p>
204
+ <div class="method-source-code" id="M000149-source">
205
+ <pre>
206
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 13</span>
207
+ <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>)
208
+ <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">current</span>[<span class="ruby-identifier">:wee_session</span>] = <span class="ruby-keyword kw">self</span>
209
+
210
+ <span class="ruby-ivar">@idgen</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">SimpleIdGenerator</span>.<span class="ruby-identifier">new</span>
211
+
212
+ <span class="ruby-comment cmt"># to serialize the requests we need a mutex</span>
213
+ <span class="ruby-ivar">@mutex</span> = <span class="ruby-constant">Mutex</span>.<span class="ruby-identifier">new</span>
214
+
215
+ <span class="ruby-identifier">block</span>.<span class="ruby-identifier">call</span>(<span class="ruby-keyword kw">self</span>)
216
+
217
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;No root component specified&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@root_component</span>.<span class="ruby-identifier">nil?</span>
218
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;No page_store specified&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@page_store</span>.<span class="ruby-identifier">nil?</span>
219
+
220
+ <span class="ruby-ivar">@initial_snapshot</span> = <span class="ruby-identifier">snapshot</span>()
221
+
222
+ <span class="ruby-keyword kw">super</span>()
223
+ <span class="ruby-keyword kw">ensure</span>
224
+ <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">current</span>[<span class="ruby-identifier">:wee_session</span>] = <span class="ruby-keyword kw">nil</span>
225
+ <span class="ruby-keyword kw">end</span>
226
+ </pre>
227
+ </div>
228
+ </div>
229
+ </div>
230
+
231
+ <h3 class="section-bar">Public Instance methods</h3>
232
+
233
+ <div id="method-M000153" class="method-detail">
234
+ <a name="M000153"></a>
235
+
236
+ <div class="method-heading">
237
+ <a href="#M000153" class="method-signature">
238
+ <span class="method-name">awake</span><span class="method-args">()</span>
239
+ </a>
240
+ </div>
241
+
242
+ <div class="method-description">
243
+ <p>
244
+ Is called before <a href="Session.html#M000155">process_request</a> is
245
+ invoked Can be used to setup e.g. a database connection.
246
+ </p>
247
+ <p><a class="source-toggle" href="#"
248
+ onclick="toggleCode('M000153-source');return false;">[Source]</a></p>
249
+ <div class="method-source-code" id="M000153-source">
250
+ <pre>
251
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 66</span>
252
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">awake</span>
253
+ <span class="ruby-keyword kw">end</span>
254
+ </pre>
255
+ </div>
256
+ </div>
257
+ </div>
258
+
259
+ <div id="method-M000152" class="method-detail">
260
+ <a name="M000152"></a>
261
+
262
+ <div class="method-heading">
263
+ <a href="#M000152" class="method-signature">
264
+ <span class="method-name">create_page</span><span class="method-args">(snapshot)</span>
265
+ </a>
266
+ </div>
267
+
268
+ <div class="method-description">
269
+ <p><a class="source-toggle" href="#"
270
+ onclick="toggleCode('M000152-source');return false;">[Source]</a></p>
271
+ <div class="method-source-code" id="M000152-source">
272
+ <pre>
273
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 59</span>
274
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">create_page</span>(<span class="ruby-identifier">snapshot</span>)
275
+ <span class="ruby-identifier">idgen</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">SimpleIdGenerator</span>.<span class="ruby-identifier">new</span>
276
+ <span class="ruby-identifier">page</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">Page</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">snapshot</span>, <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">CallbackRegistry</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">idgen</span>))
277
+ <span class="ruby-keyword kw">end</span>
278
+ </pre>
279
+ </div>
280
+ </div>
281
+ </div>
282
+
283
+ <div id="method-M000156" class="method-detail">
284
+ <a name="M000156"></a>
285
+
286
+ <div class="method-heading">
287
+ <a href="#M000156" class="method-signature">
288
+ <span class="method-name">current_context</span><span class="method-args">()</span>
289
+ </a>
290
+ </div>
291
+
292
+ <div class="method-description">
293
+ <p><a class="source-toggle" href="#"
294
+ onclick="toggleCode('M000156-source');return false;">[Source]</a></p>
295
+ <div class="method-source-code" id="M000156-source">
296
+ <pre>
297
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 148</span>
298
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">current_context</span>
299
+ <span class="ruby-ivar">@context</span>
300
+ <span class="ruby-keyword kw">end</span>
301
+ </pre>
302
+ </div>
303
+ </div>
304
+ </div>
305
+
306
+ <div id="method-M000157" class="method-detail">
307
+ <a name="M000157"></a>
308
+
309
+ <div class="method-heading">
310
+ <a href="#M000157" class="method-signature">
311
+ <span class="method-name">current_page</span><span class="method-args">()</span>
312
+ </a>
313
+ </div>
314
+
315
+ <div class="method-description">
316
+ <p><a class="source-toggle" href="#"
317
+ onclick="toggleCode('M000157-source');return false;">[Source]</a></p>
318
+ <div class="method-source-code" id="M000157-source">
319
+ <pre>
320
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 152</span>
321
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">current_page</span>
322
+ <span class="ruby-ivar">@page</span>
323
+ <span class="ruby-keyword kw">end</span>
324
+ </pre>
325
+ </div>
326
+ </div>
327
+ </div>
328
+
329
+ <div id="method-M000151" class="method-detail">
330
+ <a name="M000151"></a>
331
+
332
+ <div class="method-heading">
333
+ <a href="#M000151" class="method-signature">
334
+ <span class="method-name">handle_request</span><span class="method-args">(context)</span>
335
+ </a>
336
+ </div>
337
+
338
+ <div class="method-description">
339
+ <p>
340
+ called by application to send the session a request
341
+ </p>
342
+ <p><a class="source-toggle" href="#"
343
+ onclick="toggleCode('M000151-source');return false;">[Source]</a></p>
344
+ <div class="method-source-code" id="M000151-source">
345
+ <pre>
346
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 40</span>
347
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_request</span>(<span class="ruby-identifier">context</span>)
348
+ <span class="ruby-ivar">@mutex</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
349
+ <span class="ruby-keyword kw">begin</span>
350
+ <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">current</span>[<span class="ruby-identifier">:wee_session</span>] = <span class="ruby-keyword kw">self</span>
351
+ <span class="ruby-ivar">@context</span> = <span class="ruby-identifier">context</span>
352
+ <span class="ruby-keyword kw">super</span>
353
+ <span class="ruby-identifier">awake</span>
354
+ <span class="ruby-identifier">process_request</span>
355
+ <span class="ruby-identifier">sleep</span>
356
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">exn</span>
357
+ <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>)
358
+ <span class="ruby-keyword kw">ensure</span>
359
+ <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">current</span>[<span class="ruby-identifier">:wee_session</span>] = <span class="ruby-keyword kw">nil</span>
360
+ <span class="ruby-ivar">@context</span> = <span class="ruby-keyword kw">nil</span>
361
+ <span class="ruby-ivar">@page</span> = <span class="ruby-keyword kw">nil</span>
362
+ <span class="ruby-keyword kw">end</span>
363
+ <span class="ruby-keyword kw">end</span>
364
+ <span class="ruby-keyword kw">end</span>
365
+ </pre>
366
+ </div>
367
+ </div>
368
+ </div>
369
+
370
+ <div id="method-M000155" class="method-detail">
371
+ <a name="M000155"></a>
372
+
373
+ <div class="method-heading">
374
+ <a href="#M000155" class="method-signature">
375
+ <span class="method-name">process_request</span><span class="method-args">()</span>
376
+ </a>
377
+ </div>
378
+
379
+ <div class="method-description">
380
+ <p><a class="source-toggle" href="#"
381
+ onclick="toggleCode('M000155-source');return false;">[Source]</a></p>
382
+ <div class="method-source-code" id="M000155-source">
383
+ <pre>
384
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 74</span>
385
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process_request</span>
386
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">page_id</span>.<span class="ruby-identifier">nil?</span>
387
+
388
+ <span class="ruby-comment cmt"># No page_id was specified in the URL. This means that we start with a</span>
389
+ <span class="ruby-comment cmt"># fresh component and a fresh page_id, then redirect to render itself.</span>
390
+
391
+ <span class="ruby-identifier">handle_new_page_view</span>(<span class="ruby-ivar">@context</span>, <span class="ruby-ivar">@initial_snapshot</span>)
392
+
393
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@page</span> = <span class="ruby-ivar">@page_store</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">page_id</span>, <span class="ruby-keyword kw">false</span>)
394
+
395
+ <span class="ruby-comment cmt"># A valid page_id was specified and the corresponding page exists.</span>
396
+
397
+ <span class="ruby-ivar">@page</span>.<span class="ruby-identifier">snapshot</span>.<span class="ruby-identifier">restore</span>
398
+
399
+ <span class="ruby-identifier">p</span> <span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">fields</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$DEBUG</span>
400
+
401
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">fields</span>.<span class="ruby-identifier">empty?</span>
402
+
403
+ <span class="ruby-comment cmt"># No action/inputs were specified -&gt; render page</span>
404
+ <span class="ruby-comment cmt">#</span>
405
+ <span class="ruby-comment cmt"># 1. Reset the action/input fields (as they are regenerated in the</span>
406
+ <span class="ruby-comment cmt"># rendering process).</span>
407
+ <span class="ruby-comment cmt"># 2. Render the page (respond).</span>
408
+ <span class="ruby-comment cmt"># 3. Store the page back into the store</span>
409
+
410
+ <span class="ruby-ivar">@page</span> = <span class="ruby-identifier">create_page</span>(<span class="ruby-ivar">@page</span>.<span class="ruby-identifier">snapshot</span>) <span class="ruby-comment cmt"># remove all action/input handlers</span>
411
+ <span class="ruby-identifier">respond</span>(<span class="ruby-ivar">@context</span>, <span class="ruby-ivar">@page</span>.<span class="ruby-identifier">callbacks</span>) <span class="ruby-comment cmt"># render</span>
412
+ <span class="ruby-ivar">@page_store</span>[<span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">page_id</span>] = <span class="ruby-ivar">@page</span> <span class="ruby-comment cmt"># store</span>
413
+
414
+ <span class="ruby-keyword kw">else</span>
415
+
416
+ <span class="ruby-comment cmt"># Actions/inputs were specified.</span>
417
+ <span class="ruby-comment cmt">#</span>
418
+ <span class="ruby-comment cmt"># We process the request and invoke actions/inputs. Then we generate a</span>
419
+ <span class="ruby-comment cmt"># new page view. </span>
420
+
421
+ <span class="ruby-identifier">callback_stream</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">CallbackStream</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@page</span>.<span class="ruby-identifier">callbacks</span>, <span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">fields</span>)
422
+
423
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">callback_stream</span>.<span class="ruby-identifier">all_of_type</span>(<span class="ruby-identifier">:action</span>).<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
424
+ <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Not allowed to specify more than one action callback&quot;</span>
425
+ <span class="ruby-keyword kw">end</span>
426
+
427
+ <span class="ruby-identifier">live_update_response</span> = <span class="ruby-identifier">catch</span>(<span class="ruby-identifier">:wee_live_update</span>) {
428
+ <span class="ruby-identifier">catch</span>(<span class="ruby-identifier">:wee_back_to_session</span>) {
429
+ <span class="ruby-ivar">@root_component</span>.<span class="ruby-identifier">process_callbacks_chain</span>(<span class="ruby-identifier">callback_stream</span>)
430
+ }
431
+ <span class="ruby-keyword kw">nil</span>
432
+ }
433
+
434
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">live_update_response</span>
435
+ <span class="ruby-comment cmt"># replace existing page with new snapshot</span>
436
+ <span class="ruby-ivar">@page</span>.<span class="ruby-identifier">snapshot</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">snapshot</span>
437
+ <span class="ruby-ivar">@page_store</span>[<span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">page_id</span>] = <span class="ruby-ivar">@page</span>
438
+ <span class="ruby-ivar">@context</span>.<span class="ruby-identifier">response</span> = <span class="ruby-identifier">live_update_response</span>
439
+ <span class="ruby-keyword kw">else</span>
440
+ <span class="ruby-identifier">handle_new_page_view</span>(<span class="ruby-ivar">@context</span>)
441
+ <span class="ruby-keyword kw">end</span>
442
+
443
+ <span class="ruby-keyword kw">end</span>
444
+
445
+ <span class="ruby-keyword kw">else</span>
446
+
447
+ <span class="ruby-comment cmt"># A page_id was specified in the URL, but there's no page for it in the</span>
448
+ <span class="ruby-comment cmt"># page store. Either the page has timed out, or an invalid page_id was</span>
449
+ <span class="ruby-comment cmt"># specified. </span>
450
+ <span class="ruby-comment cmt">#</span>
451
+ <span class="ruby-comment cmt"># TODO:: Display an &quot;invalid page or page timed out&quot; message, which</span>
452
+ <span class="ruby-comment cmt"># forwards to /app/session-id</span>
453
+
454
+ <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Not yet implemented&quot;</span>
455
+
456
+ <span class="ruby-keyword kw">end</span>
457
+ <span class="ruby-keyword kw">end</span>
458
+ </pre>
459
+ </div>
460
+ </div>
461
+ </div>
462
+
463
+ <div id="method-M000154" class="method-detail">
464
+ <a name="M000154"></a>
465
+
466
+ <div class="method-heading">
467
+ <a href="#M000154" class="method-signature">
468
+ <span class="method-name">sleep</span><span class="method-args">()</span>
469
+ </a>
470
+ </div>
471
+
472
+ <div class="method-description">
473
+ <p>
474
+ Is called after <a href="Session.html#M000155">process_request</a> is run
475
+ Can be used to release e.g. a database connection.
476
+ </p>
477
+ <p><a class="source-toggle" href="#"
478
+ onclick="toggleCode('M000154-source');return false;">[Source]</a></p>
479
+ <div class="method-source-code" id="M000154-source">
480
+ <pre>
481
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 71</span>
482
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sleep</span>
483
+ <span class="ruby-keyword kw">end</span>
484
+ </pre>
485
+ </div>
486
+ </div>
487
+ </div>
488
+
489
+ <div id="method-M000150" class="method-detail">
490
+ <a name="M000150"></a>
491
+
492
+ <div class="method-heading">
493
+ <a href="#M000150" class="method-signature">
494
+ <span class="method-name">snapshot</span><span class="method-args">()</span>
495
+ </a>
496
+ </div>
497
+
498
+ <div class="method-description">
499
+ <p><a class="source-toggle" href="#"
500
+ onclick="toggleCode('M000150-source');return false;">[Source]</a></p>
501
+ <div class="method-source-code" id="M000150-source">
502
+ <pre>
503
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 33</span>
504
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">snapshot</span>
505
+ <span class="ruby-ivar">@root_component</span>.<span class="ruby-identifier">backtrack_state_chain</span>(<span class="ruby-identifier">snap</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">Snapshot</span>.<span class="ruby-identifier">new</span>)
506
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">snap</span>.<span class="ruby-identifier">freeze</span>
507
+ <span class="ruby-keyword kw">end</span>
508
+ </pre>
509
+ </div>
510
+ </div>
511
+ </div>
512
+
513
+
514
+ </div>
515
+ <div id="section">
516
+ <h2 class="section-title"><a name="SEC00016">Properties</a></h2>
517
+ <div class="section-comment">
518
+
519
+ </div>
520
+
521
+
522
+
523
+
524
+
525
+ <div id="attribute-list">
526
+ <h3 class="section-bar">Attributes</h3>
527
+
528
+ <div class="name-list">
529
+ <table>
530
+ <tr class="top-aligned-row context-row">
531
+ <td class="context-item-name">page_store</td>
532
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
533
+ <td class="context-item-desc"></td>
534
+ </tr>
535
+ <tr class="top-aligned-row context-row">
536
+ <td class="context-item-name">properties</td>
537
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
538
+ <td class="context-item-desc"></td>
539
+ </tr>
540
+ <tr class="top-aligned-row context-row">
541
+ <td class="context-item-name">root_component</td>
542
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
543
+ <td class="context-item-desc"></td>
544
+ </tr>
545
+ </table>
546
+ </div>
547
+ </div>
548
+
549
+
550
+
551
+ <!-- if method_list -->
552
+ <div id="methods">
553
+ <h3 class="section-bar">Public Class methods</h3>
554
+
555
+ <div id="method-M000161" class="method-detail">
556
+ <a name="M000161"></a>
141
557
 
142
558
  <div class="method-heading">
143
- <a href="#M000131" class="method-signature">
559
+ <a href="#M000161" class="method-signature">
144
560
  <span class="method-name">current</span><span class="method-args">()</span>
145
561
  </a>
146
562
  </div>
147
563
 
148
564
  <div class="method-description">
149
565
  <p><a class="source-toggle" href="#"
150
- onclick="toggleCode('M000131-source');return false;">[Source]</a></p>
151
- <div class="method-source-code" id="M000131-source">
566
+ onclick="toggleCode('M000161-source');return false;">[Source]</a></p>
567
+ <div class="method-source-code" id="M000161-source">
152
568
  <pre>
153
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 8</span>
569
+ <span class="ruby-comment cmt"># File lib/wee/continuation/session.rb, line 8</span>
154
570
  <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">current</span>
155
571
  <span class="ruby-identifier">sess</span> = <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">current</span>[<span class="ruby-identifier">:wee_session</span>]
156
572
  <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;not in session&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sess</span>.<span class="ruby-identifier">nil?</span>
@@ -161,21 +577,21 @@
161
577
  </div>
162
578
  </div>
163
579
 
164
- <div id="method-M000132" class="method-detail">
165
- <a name="M000132"></a>
580
+ <div id="method-M000162" class="method-detail">
581
+ <a name="M000162"></a>
166
582
 
167
583
  <div class="method-heading">
168
- <a href="#M000132" class="method-signature">
584
+ <a href="#M000162" class="method-signature">
169
585
  <span class="method-name">new</span><span class="method-args">(&amp;block)</span>
170
586
  </a>
171
587
  </div>
172
588
 
173
589
  <div class="method-description">
174
590
  <p><a class="source-toggle" href="#"
175
- onclick="toggleCode('M000132-source');return false;">[Source]</a></p>
176
- <div class="method-source-code" id="M000132-source">
591
+ onclick="toggleCode('M000162-source');return false;">[Source]</a></p>
592
+ <div class="method-source-code" id="M000162-source">
177
593
  <pre>
178
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 14</span>
594
+ <span class="ruby-comment cmt"># File lib/wee/continuation/session.rb, line 14</span>
179
595
  <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>)
180
596
  <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">current</span>[<span class="ruby-identifier">:wee_session</span>] = <span class="ruby-keyword kw">self</span>
181
597
 
@@ -201,21 +617,47 @@
201
617
 
202
618
  <h3 class="section-bar">Public Instance methods</h3>
203
619
 
204
- <div id="method-M000136" class="method-detail">
205
- <a name="M000136"></a>
620
+ <div id="method-M000167" class="method-detail">
621
+ <a name="M000167"></a>
622
+
623
+ <div class="method-heading">
624
+ <a href="#M000167" class="method-signature">
625
+ <span class="method-name">awake</span><span class="method-args">()</span>
626
+ </a>
627
+ </div>
628
+
629
+ <div class="method-description">
630
+ <p>
631
+ Is called before <a href="Session.html#M000155">process_request</a> is
632
+ invoked Can be used to setup e.g. a database connection.
633
+ </p>
634
+ <p><a class="source-toggle" href="#"
635
+ onclick="toggleCode('M000167-source');return false;">[Source]</a></p>
636
+ <div class="method-source-code" id="M000167-source">
637
+ <pre>
638
+ <span class="ruby-comment cmt"># File lib/wee/continuation/session.rb, line 94</span>
639
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">awake</span>
640
+ <span class="ruby-keyword kw">end</span>
641
+ </pre>
642
+ </div>
643
+ </div>
644
+ </div>
645
+
646
+ <div id="method-M000166" class="method-detail">
647
+ <a name="M000166"></a>
206
648
 
207
649
  <div class="method-heading">
208
- <a href="#M000136" class="method-signature">
650
+ <a href="#M000166" class="method-signature">
209
651
  <span class="method-name">create_page</span><span class="method-args">(snapshot)</span>
210
652
  </a>
211
653
  </div>
212
654
 
213
655
  <div class="method-description">
214
656
  <p><a class="source-toggle" href="#"
215
- onclick="toggleCode('M000136-source');return false;">[Source]</a></p>
216
- <div class="method-source-code" id="M000136-source">
657
+ onclick="toggleCode('M000166-source');return false;">[Source]</a></p>
658
+ <div class="method-source-code" id="M000166-source">
217
659
  <pre>
218
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 85</span>
660
+ <span class="ruby-comment cmt"># File lib/wee/continuation/session.rb, line 87</span>
219
661
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">create_page</span>(<span class="ruby-identifier">snapshot</span>)
220
662
  <span class="ruby-identifier">idgen</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">SimpleIdGenerator</span>.<span class="ruby-identifier">new</span>
221
663
  <span class="ruby-identifier">page</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">Page</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">snapshot</span>, <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">CallbackRegistry</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">idgen</span>))
@@ -225,11 +667,87 @@
225
667
  </div>
226
668
  </div>
227
669
 
228
- <div id="method-M000134" class="method-detail">
229
- <a name="M000134"></a>
670
+ <div id="method-M000170" class="method-detail">
671
+ <a name="M000170"></a>
672
+
673
+ <div class="method-heading">
674
+ <a href="#M000170" class="method-signature">
675
+ <span class="method-name">current_context</span><span class="method-args">()</span>
676
+ </a>
677
+ </div>
678
+
679
+ <div class="method-description">
680
+ <p><a class="source-toggle" href="#"
681
+ onclick="toggleCode('M000170-source');return false;">[Source]</a></p>
682
+ <div class="method-source-code" id="M000170-source">
683
+ <pre>
684
+ <span class="ruby-comment cmt"># File lib/wee/continuation/session.rb, line 176</span>
685
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">current_context</span>
686
+ <span class="ruby-ivar">@context</span>
687
+ <span class="ruby-keyword kw">end</span>
688
+ </pre>
689
+ </div>
690
+ </div>
691
+ </div>
692
+
693
+ <div id="method-M000171" class="method-detail">
694
+ <a name="M000171"></a>
695
+
696
+ <div class="method-heading">
697
+ <a href="#M000171" class="method-signature">
698
+ <span class="method-name">current_page</span><span class="method-args">()</span>
699
+ </a>
700
+ </div>
701
+
702
+ <div class="method-description">
703
+ <p><a class="source-toggle" href="#"
704
+ onclick="toggleCode('M000171-source');return false;">[Source]</a></p>
705
+ <div class="method-source-code" id="M000171-source">
706
+ <pre>
707
+ <span class="ruby-comment cmt"># File lib/wee/continuation/session.rb, line 180</span>
708
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">current_page</span>
709
+ <span class="ruby-ivar">@page</span>
710
+ <span class="ruby-keyword kw">end</span>
711
+ </pre>
712
+ </div>
713
+ </div>
714
+ </div>
715
+
716
+ <div id="method-M000158" class="method-detail">
717
+ <a name="M000158"></a>
718
+
719
+ <div class="method-heading">
720
+ <a href="#M000158" class="method-signature">
721
+ <span class="method-name">get_property</span><span class="method-args">(prop, klass)</span>
722
+ </a>
723
+ </div>
724
+
725
+ <div class="method-description">
726
+ <p>
727
+ Returns an &quot;owned&quot; property for the given <tt>klass</tt>.
728
+ </p>
729
+ <p><a class="source-toggle" href="#"
730
+ onclick="toggleCode('M000158-source');return false;">[Source]</a></p>
731
+ <div class="method-source-code" id="M000158-source">
732
+ <pre>
733
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 164</span>
734
+ <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>)
735
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@properties</span>
736
+ <span class="ruby-ivar">@properties</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">klass</span>, {})[<span class="ruby-identifier">prop</span>]
737
+ <span class="ruby-keyword kw">else</span>
738
+ <span class="ruby-keyword kw">nil</span>
739
+ <span class="ruby-keyword kw">end</span>
740
+ <span class="ruby-keyword kw">end</span>
741
+ </pre>
742
+ </div>
743
+ </div>
744
+ </div>
745
+
746
+ <div id="method-M000164" class="method-detail">
747
+ <a name="M000164"></a>
230
748
 
231
749
  <div class="method-heading">
232
- <a href="#M000134" class="method-signature">
750
+ <a href="#M000164" class="method-signature">
233
751
  <span class="method-name">handle_request</span><span class="method-args">(context)</span>
234
752
  </a>
235
753
  </div>
@@ -239,10 +757,10 @@
239
757
  called by application to send the session a request
240
758
  </p>
241
759
  <p><a class="source-toggle" href="#"
242
- onclick="toggleCode('M000134-source');return false;">[Source]</a></p>
243
- <div class="method-source-code" id="M000134-source">
760
+ onclick="toggleCode('M000164-source');return false;">[Source]</a></p>
761
+ <div class="method-source-code" id="M000164-source">
244
762
  <pre>
245
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 39</span>
763
+ <span class="ruby-comment cmt"># File lib/wee/continuation/session.rb, line 39</span>
246
764
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_request</span>(<span class="ruby-identifier">context</span>)
247
765
  <span class="ruby-keyword kw">super</span>
248
766
 
@@ -258,21 +776,21 @@ called by application to send the session a request
258
776
  </div>
259
777
  </div>
260
778
 
261
- <div id="method-M000137" class="method-detail">
262
- <a name="M000137"></a>
779
+ <div id="method-M000169" class="method-detail">
780
+ <a name="M000169"></a>
263
781
 
264
782
  <div class="method-heading">
265
- <a href="#M000137" class="method-signature">
783
+ <a href="#M000169" class="method-signature">
266
784
  <span class="method-name">process_request</span><span class="method-args">()</span>
267
785
  </a>
268
786
  </div>
269
787
 
270
788
  <div class="method-description">
271
789
  <p><a class="source-toggle" href="#"
272
- onclick="toggleCode('M000137-source');return false;">[Source]</a></p>
273
- <div class="method-source-code" id="M000137-source">
790
+ onclick="toggleCode('M000169-source');return false;">[Source]</a></p>
791
+ <div class="method-source-code" id="M000169-source">
274
792
  <pre>
275
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 90</span>
793
+ <span class="ruby-comment cmt"># File lib/wee/continuation/session.rb, line 102</span>
276
794
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process_request</span>
277
795
  <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">page_id</span>.<span class="ruby-identifier">nil?</span>
278
796
 
@@ -281,11 +799,11 @@ called by application to send the session a request
281
799
 
282
800
  <span class="ruby-identifier">handle_new_page_view</span>(<span class="ruby-ivar">@context</span>, <span class="ruby-ivar">@initial_snapshot</span>)
283
801
 
284
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">page</span> = <span class="ruby-ivar">@page_store</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">page_id</span>, <span class="ruby-keyword kw">false</span>)
802
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@page</span> = <span class="ruby-ivar">@page_store</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">page_id</span>, <span class="ruby-keyword kw">false</span>)
285
803
 
286
804
  <span class="ruby-comment cmt"># A valid page_id was specified and the corresponding page exists.</span>
287
805
 
288
- <span class="ruby-identifier">page</span>.<span class="ruby-identifier">snapshot</span>.<span class="ruby-identifier">restore</span>
806
+ <span class="ruby-ivar">@page</span>.<span class="ruby-identifier">snapshot</span>.<span class="ruby-identifier">restore</span>
289
807
 
290
808
  <span class="ruby-identifier">p</span> <span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">fields</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$DEBUG</span>
291
809
 
@@ -298,9 +816,9 @@ called by application to send the session a request
298
816
  <span class="ruby-comment cmt"># 2. Render the page (respond).</span>
299
817
  <span class="ruby-comment cmt"># 3. Store the page back into the store</span>
300
818
 
301
- <span class="ruby-identifier">page</span> = <span class="ruby-identifier">create_page</span>(<span class="ruby-identifier">page</span>.<span class="ruby-identifier">snapshot</span>) <span class="ruby-comment cmt"># remove all action/input handlers</span>
302
- <span class="ruby-identifier">respond</span>(<span class="ruby-ivar">@context</span>, <span class="ruby-identifier">page</span>.<span class="ruby-identifier">callbacks</span>) <span class="ruby-comment cmt"># render</span>
303
- <span class="ruby-ivar">@page_store</span>[<span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">page_id</span>] = <span class="ruby-identifier">page</span> <span class="ruby-comment cmt"># store</span>
819
+ <span class="ruby-ivar">@page</span> = <span class="ruby-identifier">create_page</span>(<span class="ruby-ivar">@page</span>.<span class="ruby-identifier">snapshot</span>) <span class="ruby-comment cmt"># remove all action/input handlers</span>
820
+ <span class="ruby-identifier">respond</span>(<span class="ruby-ivar">@context</span>, <span class="ruby-ivar">@page</span>.<span class="ruby-identifier">callbacks</span>) <span class="ruby-comment cmt"># render</span>
821
+ <span class="ruby-ivar">@page_store</span>[<span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">page_id</span>] = <span class="ruby-ivar">@page</span> <span class="ruby-comment cmt"># store</span>
304
822
 
305
823
  <span class="ruby-keyword kw">else</span>
306
824
 
@@ -309,16 +827,27 @@ called by application to send the session a request
309
827
  <span class="ruby-comment cmt"># We process the request and invoke actions/inputs. Then we generate a</span>
310
828
  <span class="ruby-comment cmt"># new page view. </span>
311
829
 
312
- <span class="ruby-identifier">callback_stream</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">CallbackStream</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">page</span>.<span class="ruby-identifier">callbacks</span>, <span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">fields</span>)
830
+ <span class="ruby-identifier">callback_stream</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">CallbackStream</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@page</span>.<span class="ruby-identifier">callbacks</span>, <span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">fields</span>)
313
831
 
314
832
  <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">callback_stream</span>.<span class="ruby-identifier">all_of_type</span>(<span class="ruby-identifier">:action</span>).<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
315
833
  <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Not allowed to specify more than one action callback&quot;</span>
316
834
  <span class="ruby-keyword kw">end</span>
317
835
 
318
- <span class="ruby-identifier">catch</span>(<span class="ruby-identifier">:wee_back_to_session</span>) {
319
- <span class="ruby-ivar">@root_component</span>.<span class="ruby-identifier">process_callbacks_chain</span>(<span class="ruby-identifier">callback_stream</span>)
836
+ <span class="ruby-identifier">live_update_response</span> = <span class="ruby-identifier">catch</span>(<span class="ruby-identifier">:wee_live_update</span>) {
837
+ <span class="ruby-identifier">catch</span>(<span class="ruby-identifier">:wee_back_to_session</span>) {
838
+ <span class="ruby-ivar">@root_component</span>.<span class="ruby-identifier">process_callbacks_chain</span>(<span class="ruby-identifier">callback_stream</span>)
839
+ }
840
+ <span class="ruby-keyword kw">nil</span>
320
841
  }
321
- <span class="ruby-identifier">handle_new_page_view</span>(<span class="ruby-ivar">@context</span>)
842
+
843
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">live_update_response</span>
844
+ <span class="ruby-comment cmt"># replace existing page with new snapshot</span>
845
+ <span class="ruby-ivar">@page</span>.<span class="ruby-identifier">snapshot</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">snapshot</span>
846
+ <span class="ruby-ivar">@page_store</span>[<span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">page_id</span>] = <span class="ruby-ivar">@page</span>
847
+ <span class="ruby-ivar">@context</span>.<span class="ruby-identifier">response</span> = <span class="ruby-identifier">live_update_response</span>
848
+ <span class="ruby-keyword kw">else</span>
849
+ <span class="ruby-identifier">handle_new_page_view</span>(<span class="ruby-ivar">@context</span>)
850
+ <span class="ruby-keyword kw">end</span>
322
851
 
323
852
  <span class="ruby-keyword kw">end</span>
324
853
 
@@ -340,21 +869,47 @@ called by application to send the session a request
340
869
  </div>
341
870
  </div>
342
871
 
343
- <div id="method-M000133" class="method-detail">
344
- <a name="M000133"></a>
872
+ <div id="method-M000168" class="method-detail">
873
+ <a name="M000168"></a>
874
+
875
+ <div class="method-heading">
876
+ <a href="#M000168" class="method-signature">
877
+ <span class="method-name">sleep</span><span class="method-args">()</span>
878
+ </a>
879
+ </div>
880
+
881
+ <div class="method-description">
882
+ <p>
883
+ Is called after <a href="Session.html#M000155">process_request</a> is run
884
+ Can be used to release e.g. a database connection.
885
+ </p>
886
+ <p><a class="source-toggle" href="#"
887
+ onclick="toggleCode('M000168-source');return false;">[Source]</a></p>
888
+ <div class="method-source-code" id="M000168-source">
889
+ <pre>
890
+ <span class="ruby-comment cmt"># File lib/wee/continuation/session.rb, line 99</span>
891
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sleep</span>
892
+ <span class="ruby-keyword kw">end</span>
893
+ </pre>
894
+ </div>
895
+ </div>
896
+ </div>
897
+
898
+ <div id="method-M000163" class="method-detail">
899
+ <a name="M000163"></a>
345
900
 
346
901
  <div class="method-heading">
347
- <a href="#M000133" class="method-signature">
902
+ <a href="#M000163" class="method-signature">
348
903
  <span class="method-name">snapshot</span><span class="method-args">()</span>
349
904
  </a>
350
905
  </div>
351
906
 
352
907
  <div class="method-description">
353
908
  <p><a class="source-toggle" href="#"
354
- onclick="toggleCode('M000133-source');return false;">[Source]</a></p>
355
- <div class="method-source-code" id="M000133-source">
909
+ onclick="toggleCode('M000163-source');return false;">[Source]</a></p>
910
+ <div class="method-source-code" id="M000163-source">
356
911
  <pre>
357
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 33</span>
912
+ <span class="ruby-comment cmt"># File lib/wee/continuation/session.rb, line 33</span>
358
913
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">snapshot</span>
359
914
  <span class="ruby-ivar">@root_component</span>.<span class="ruby-identifier">backtrack_state_chain</span>(<span class="ruby-identifier">snap</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">Snapshot</span>.<span class="ruby-identifier">new</span>)
360
915
  <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">snap</span>.<span class="ruby-identifier">freeze</span>
@@ -364,21 +919,21 @@ called by application to send the session a request
364
919
  </div>
365
920
  </div>
366
921
 
367
- <div id="method-M000135" class="method-detail">
368
- <a name="M000135"></a>
922
+ <div id="method-M000165" class="method-detail">
923
+ <a name="M000165"></a>
369
924
 
370
925
  <div class="method-heading">
371
- <a href="#M000135" class="method-signature">
926
+ <a href="#M000165" class="method-signature">
372
927
  <span class="method-name">start_request_response_loop</span><span class="method-args">()</span>
373
928
  </a>
374
929
  </div>
375
930
 
376
931
  <div class="method-description">
377
932
  <p><a class="source-toggle" href="#"
378
- onclick="toggleCode('M000135-source');return false;">[Source]</a></p>
379
- <div class="method-source-code" id="M000135-source">
933
+ onclick="toggleCode('M000165-source');return false;">[Source]</a></p>
934
+ <div class="method-source-code" id="M000165-source">
380
935
  <pre>
381
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 50</span>
936
+ <span class="ruby-comment cmt"># File lib/wee/continuation/session.rb, line 50</span>
382
937
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start_request_response_loop</span>
383
938
  <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">abort_on_exception</span> = <span class="ruby-keyword kw">true</span>
384
939
  <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> {
@@ -404,7 +959,9 @@ called by application to send the session a request
404
959
  <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;invalid request&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@context</span>.<span class="ruby-identifier">nil?</span>
405
960
 
406
961
  <span class="ruby-keyword kw">begin</span>
962
+ <span class="ruby-identifier">awake</span>
407
963
  <span class="ruby-identifier">process_request</span>
964
+ <span class="ruby-identifier">sleep</span>
408
965
  <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">exn</span>
409
966
  <span class="ruby-ivar">@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>)
410
967
  <span class="ruby-keyword kw">end</span>
@@ -420,21 +977,138 @@ called by application to send the session a request
420
977
 
421
978
  <h3 class="section-bar">Private Instance methods</h3>
422
979
 
423
- <div id="method-M000138" class="method-detail">
424
- <a name="M000138"></a>
980
+ <div id="method-M000159" class="method-detail">
981
+ <a name="M000159"></a>
982
+
983
+ <div class="method-heading">
984
+ <a href="#M000159" class="method-signature">
985
+ <span class="method-name">handle_new_page_view</span><span class="method-args">(context, snapshot=nil)</span>
986
+ </a>
987
+ </div>
988
+
989
+ <div class="method-description">
990
+ <p><a class="source-toggle" href="#"
991
+ onclick="toggleCode('M000159-source');return false;">[Source]</a></p>
992
+ <div class="method-source-code" id="M000159-source">
993
+ <pre>
994
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 174</span>
995
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_new_page_view</span>(<span class="ruby-identifier">context</span>, <span class="ruby-identifier">snapshot</span>=<span class="ruby-keyword kw">nil</span>)
996
+ <span class="ruby-identifier">new_page_id</span> = <span class="ruby-ivar">@idgen</span>.<span class="ruby-identifier">next</span>.<span class="ruby-identifier">to_s</span>
997
+ <span class="ruby-identifier">new_page</span> = <span class="ruby-identifier">create_page</span>(<span class="ruby-identifier">snapshot</span> <span class="ruby-operator">||</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">snapshot</span>())
998
+ <span class="ruby-ivar">@page_store</span>[<span class="ruby-identifier">new_page_id</span>] = <span class="ruby-identifier">new_page</span>
999
+ <span class="ruby-identifier">redirect_url</span> = <span class="ruby-identifier">context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">build_url</span>(<span class="ruby-identifier">context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">request_handler_id</span>, <span class="ruby-identifier">new_page_id</span>)
1000
+ <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">RedirectResponse</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">redirect_url</span>)
1001
+ <span class="ruby-keyword kw">end</span>
1002
+ </pre>
1003
+ </div>
1004
+ </div>
1005
+ </div>
1006
+
1007
+ <div id="method-M000160" class="method-detail">
1008
+ <a name="M000160"></a>
1009
+
1010
+ <div class="method-heading">
1011
+ <a href="#M000160" class="method-signature">
1012
+ <span class="method-name">respond</span><span class="method-args">(context, callbacks)</span>
1013
+ </a>
1014
+ </div>
1015
+
1016
+ <div class="method-description">
1017
+ <p><a class="source-toggle" href="#"
1018
+ onclick="toggleCode('M000160-source');return false;">[Source]</a></p>
1019
+ <div class="method-source-code" id="M000160-source">
1020
+ <pre>
1021
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 182</span>
1022
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">respond</span>(<span class="ruby-identifier">context</span>, <span class="ruby-identifier">callbacks</span>)
1023
+ <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">GenericResponse</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'text/html'</span>, <span class="ruby-value str">''</span>)
1024
+
1025
+ <span class="ruby-identifier">rctx</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">RenderingContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">context</span>.<span class="ruby-identifier">request</span>, <span class="ruby-identifier">context</span>.<span class="ruby-identifier">response</span>, <span class="ruby-identifier">callbacks</span>, <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">HtmlWriter</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">context</span>.<span class="ruby-identifier">response</span>.<span class="ruby-identifier">content</span>))
1026
+ <span class="ruby-ivar">@root_component</span>.<span class="ruby-identifier">do_render_chain</span>(<span class="ruby-identifier">rctx</span>)
1027
+ <span class="ruby-keyword kw">end</span>
1028
+ </pre>
1029
+ </div>
1030
+ </div>
1031
+ </div>
1032
+
1033
+
1034
+ </div>
1035
+ <div id="section">
1036
+ <h2 class="section-title"><a name="SEC00118">Properties</a></h2>
1037
+ <div class="section-comment">
1038
+
1039
+ </div>
1040
+
1041
+
1042
+
1043
+
1044
+
1045
+ <div id="attribute-list">
1046
+ <h3 class="section-bar">Attributes</h3>
1047
+
1048
+ <div class="name-list">
1049
+ <table>
1050
+ <tr class="top-aligned-row context-row">
1051
+ <td class="context-item-name">properties</td>
1052
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
1053
+ <td class="context-item-desc"></td>
1054
+ </tr>
1055
+ </table>
1056
+ </div>
1057
+ </div>
1058
+
1059
+
1060
+
1061
+ <!-- if method_list -->
1062
+ <div id="methods">
1063
+ <h3 class="section-bar">Public Instance methods</h3>
1064
+
1065
+ <div id="method-M000172" class="method-detail">
1066
+ <a name="M000172"></a>
1067
+
1068
+ <div class="method-heading">
1069
+ <a href="#M000172" class="method-signature">
1070
+ <span class="method-name">get_property</span><span class="method-args">(prop, klass)</span>
1071
+ </a>
1072
+ </div>
1073
+
1074
+ <div class="method-description">
1075
+ <p>
1076
+ Returns an &quot;owned&quot; property for the given <tt>klass</tt>.
1077
+ </p>
1078
+ <p><a class="source-toggle" href="#"
1079
+ onclick="toggleCode('M000172-source');return false;">[Source]</a></p>
1080
+ <div class="method-source-code" id="M000172-source">
1081
+ <pre>
1082
+ <span class="ruby-comment cmt"># File lib/wee/continuation/session.rb, line 192</span>
1083
+ <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>)
1084
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@properties</span>
1085
+ <span class="ruby-ivar">@properties</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">klass</span>, {})[<span class="ruby-identifier">prop</span>]
1086
+ <span class="ruby-keyword kw">else</span>
1087
+ <span class="ruby-keyword kw">nil</span>
1088
+ <span class="ruby-keyword kw">end</span>
1089
+ <span class="ruby-keyword kw">end</span>
1090
+ </pre>
1091
+ </div>
1092
+ </div>
1093
+ </div>
1094
+
1095
+ <h3 class="section-bar">Private Instance methods</h3>
1096
+
1097
+ <div id="method-M000173" class="method-detail">
1098
+ <a name="M000173"></a>
425
1099
 
426
1100
  <div class="method-heading">
427
- <a href="#M000138" class="method-signature">
1101
+ <a href="#M000173" class="method-signature">
428
1102
  <span class="method-name">handle_new_page_view</span><span class="method-args">(context, snapshot=nil)</span>
429
1103
  </a>
430
1104
  </div>
431
1105
 
432
1106
  <div class="method-description">
433
1107
  <p><a class="source-toggle" href="#"
434
- onclick="toggleCode('M000138-source');return false;">[Source]</a></p>
435
- <div class="method-source-code" id="M000138-source">
1108
+ onclick="toggleCode('M000173-source');return false;">[Source]</a></p>
1109
+ <div class="method-source-code" id="M000173-source">
436
1110
  <pre>
437
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 155</span>
1111
+ <span class="ruby-comment cmt"># File lib/wee/continuation/session.rb, line 202</span>
438
1112
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_new_page_view</span>(<span class="ruby-identifier">context</span>, <span class="ruby-identifier">snapshot</span>=<span class="ruby-keyword kw">nil</span>)
439
1113
  <span class="ruby-identifier">new_page_id</span> = <span class="ruby-ivar">@idgen</span>.<span class="ruby-identifier">next</span>.<span class="ruby-identifier">to_s</span>
440
1114
  <span class="ruby-identifier">new_page</span> = <span class="ruby-identifier">create_page</span>(<span class="ruby-identifier">snapshot</span> <span class="ruby-operator">||</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">snapshot</span>())
@@ -447,21 +1121,21 @@ called by application to send the session a request
447
1121
  </div>
448
1122
  </div>
449
1123
 
450
- <div id="method-M000139" class="method-detail">
451
- <a name="M000139"></a>
1124
+ <div id="method-M000174" class="method-detail">
1125
+ <a name="M000174"></a>
452
1126
 
453
1127
  <div class="method-heading">
454
- <a href="#M000139" class="method-signature">
1128
+ <a href="#M000174" class="method-signature">
455
1129
  <span class="method-name">respond</span><span class="method-args">(context, callbacks)</span>
456
1130
  </a>
457
1131
  </div>
458
1132
 
459
1133
  <div class="method-description">
460
1134
  <p><a class="source-toggle" href="#"
461
- onclick="toggleCode('M000139-source');return false;">[Source]</a></p>
462
- <div class="method-source-code" id="M000139-source">
1135
+ onclick="toggleCode('M000174-source');return false;">[Source]</a></p>
1136
+ <div class="method-source-code" id="M000174-source">
463
1137
  <pre>
464
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 163</span>
1138
+ <span class="ruby-comment cmt"># File lib/wee/continuation/session.rb, line 210</span>
465
1139
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">respond</span>(<span class="ruby-identifier">context</span>, <span class="ruby-identifier">callbacks</span>)
466
1140
  <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">GenericResponse</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'text/html'</span>, <span class="ruby-value str">''</span>)
467
1141