thin 0.5.3-x86-mswin32-60

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of thin might be problematic. Click here for more details.

Files changed (117) hide show
  1. data/CHANGELOG +40 -0
  2. data/COPYING +18 -0
  3. data/README +60 -0
  4. data/Rakefile +11 -0
  5. data/benchmark/simple.rb +48 -0
  6. data/bin/thin +123 -0
  7. data/doc/benchmarks.txt +86 -0
  8. data/doc/rdoc/classes/Process.html +181 -0
  9. data/doc/rdoc/classes/Rack.html +156 -0
  10. data/doc/rdoc/classes/Rack/Adapter.html +155 -0
  11. data/doc/rdoc/classes/Rack/Adapter/Rails.html +289 -0
  12. data/doc/rdoc/classes/Rack/Adapter/Rails/CGIWrapper.html +359 -0
  13. data/doc/rdoc/classes/Rack/Handler.html +155 -0
  14. data/doc/rdoc/classes/Rack/Handler/Thin.html +175 -0
  15. data/doc/rdoc/classes/Thin.html +164 -0
  16. data/doc/rdoc/classes/Thin/Cluster.html +399 -0
  17. data/doc/rdoc/classes/Thin/Connection.html +223 -0
  18. data/doc/rdoc/classes/Thin/Daemonizable.html +260 -0
  19. data/doc/rdoc/classes/Thin/Daemonizable/ClassMethods.html +197 -0
  20. data/doc/rdoc/classes/Thin/Headers.html +238 -0
  21. data/doc/rdoc/classes/Thin/InvalidRequest.html +144 -0
  22. data/doc/rdoc/classes/Thin/Logging.html +201 -0
  23. data/doc/rdoc/classes/Thin/Request.html +231 -0
  24. data/doc/rdoc/classes/Thin/Response.html +271 -0
  25. data/doc/rdoc/classes/Thin/Server.html +295 -0
  26. data/doc/rdoc/classes/Thin/StopServer.html +143 -0
  27. data/doc/rdoc/created.rid +1 -0
  28. data/doc/rdoc/files/README.html +226 -0
  29. data/doc/rdoc/files/bin/thin.html +245 -0
  30. data/doc/rdoc/files/lib/rack/adapter/rails_rb.html +146 -0
  31. data/doc/rdoc/files/lib/rack/handler/thin_rb.html +146 -0
  32. data/doc/rdoc/files/lib/thin/cluster_rb.html +146 -0
  33. data/doc/rdoc/files/lib/thin/connection_rb.html +145 -0
  34. data/doc/rdoc/files/lib/thin/daemonizing_rb.html +146 -0
  35. data/doc/rdoc/files/lib/thin/headers_rb.html +146 -0
  36. data/doc/rdoc/files/lib/thin/logging_rb.html +146 -0
  37. data/doc/rdoc/files/lib/thin/request_rb.html +145 -0
  38. data/doc/rdoc/files/lib/thin/response_rb.html +145 -0
  39. data/doc/rdoc/files/lib/thin/server_rb.html +145 -0
  40. data/doc/rdoc/files/lib/thin/statuses_rb.html +145 -0
  41. data/doc/rdoc/files/lib/thin/version_rb.html +145 -0
  42. data/doc/rdoc/files/lib/thin_rb.html +152 -0
  43. data/doc/rdoc/index.html +10 -0
  44. data/doc/rdoc/logo.gif +0 -0
  45. data/doc/rdoc/rdoc-style.css +55 -0
  46. data/example/config.ru +9 -0
  47. data/example/thin.god +72 -0
  48. data/ext/thin_parser/common.rl +54 -0
  49. data/ext/thin_parser/ext_help.h +14 -0
  50. data/ext/thin_parser/extconf.rb +6 -0
  51. data/ext/thin_parser/parser.c +1199 -0
  52. data/ext/thin_parser/parser.h +49 -0
  53. data/ext/thin_parser/parser.rl +143 -0
  54. data/ext/thin_parser/thin.c +424 -0
  55. data/lib/rack/adapter/rails.rb +155 -0
  56. data/lib/rack/handler/thin.rb +13 -0
  57. data/lib/thin.rb +36 -0
  58. data/lib/thin/cluster.rb +106 -0
  59. data/lib/thin/connection.rb +46 -0
  60. data/lib/thin/daemonizing.rb +112 -0
  61. data/lib/thin/headers.rb +37 -0
  62. data/lib/thin/logging.rb +23 -0
  63. data/lib/thin/request.rb +72 -0
  64. data/lib/thin/response.rb +48 -0
  65. data/lib/thin/server.rb +80 -0
  66. data/lib/thin/statuses.rb +43 -0
  67. data/lib/thin/version.rb +11 -0
  68. data/lib/thin_parser.so +0 -0
  69. data/spec/cluster_spec.rb +58 -0
  70. data/spec/daemonizing_spec.rb +93 -0
  71. data/spec/headers_spec.rb +35 -0
  72. data/spec/rack_rails_spec.rb +92 -0
  73. data/spec/rails_app/app/controllers/application.rb +10 -0
  74. data/spec/rails_app/app/controllers/simple_controller.rb +19 -0
  75. data/spec/rails_app/app/helpers/application_helper.rb +3 -0
  76. data/spec/rails_app/app/views/simple/index.html.erb +15 -0
  77. data/spec/rails_app/config/boot.rb +109 -0
  78. data/spec/rails_app/config/environment.rb +64 -0
  79. data/spec/rails_app/config/environments/development.rb +18 -0
  80. data/spec/rails_app/config/environments/production.rb +19 -0
  81. data/spec/rails_app/config/environments/test.rb +22 -0
  82. data/spec/rails_app/config/initializers/inflections.rb +10 -0
  83. data/spec/rails_app/config/initializers/mime_types.rb +5 -0
  84. data/spec/rails_app/config/routes.rb +35 -0
  85. data/spec/rails_app/public/404.html +30 -0
  86. data/spec/rails_app/public/422.html +30 -0
  87. data/spec/rails_app/public/500.html +30 -0
  88. data/spec/rails_app/public/dispatch.cgi +10 -0
  89. data/spec/rails_app/public/dispatch.fcgi +24 -0
  90. data/spec/rails_app/public/dispatch.rb +10 -0
  91. data/spec/rails_app/public/favicon.ico +0 -0
  92. data/spec/rails_app/public/images/rails.png +0 -0
  93. data/spec/rails_app/public/index.html +277 -0
  94. data/spec/rails_app/public/javascripts/application.js +2 -0
  95. data/spec/rails_app/public/javascripts/controls.js +963 -0
  96. data/spec/rails_app/public/javascripts/dragdrop.js +972 -0
  97. data/spec/rails_app/public/javascripts/effects.js +1120 -0
  98. data/spec/rails_app/public/javascripts/prototype.js +4225 -0
  99. data/spec/rails_app/public/robots.txt +5 -0
  100. data/spec/rails_app/script/about +3 -0
  101. data/spec/rails_app/script/console +3 -0
  102. data/spec/rails_app/script/destroy +3 -0
  103. data/spec/rails_app/script/generate +3 -0
  104. data/spec/rails_app/script/performance/benchmarker +3 -0
  105. data/spec/rails_app/script/performance/profiler +3 -0
  106. data/spec/rails_app/script/performance/request +3 -0
  107. data/spec/rails_app/script/plugin +3 -0
  108. data/spec/rails_app/script/process/inspector +3 -0
  109. data/spec/rails_app/script/process/reaper +3 -0
  110. data/spec/rails_app/script/process/spawner +3 -0
  111. data/spec/rails_app/script/runner +3 -0
  112. data/spec/rails_app/script/server +3 -0
  113. data/spec/request_spec.rb +258 -0
  114. data/spec/response_spec.rb +56 -0
  115. data/spec/server_spec.rb +75 -0
  116. data/spec/spec_helper.rb +127 -0
  117. metadata +219 -0
@@ -0,0 +1,201 @@
1
+
2
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
3
+ <html>
4
+ <head>
5
+ <title>
6
+ thin &raquo; Module: Thin::Logging
7
+ </title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
10
+ <script language="JavaScript" type="text/javascript">
11
+ // <![CDATA[
12
+
13
+ function toggleSource( id )
14
+ {
15
+ var elem
16
+ var link
17
+
18
+ if( document.getElementById )
19
+ {
20
+ elem = document.getElementById( id )
21
+ link = document.getElementById( "l_" + id )
22
+ }
23
+ else if ( document.all )
24
+ {
25
+ elem = eval( "document.all." + id )
26
+ link = eval( "document.all.l_" + id )
27
+ }
28
+ else
29
+ return false;
30
+
31
+ if( elem.style.display == "block" )
32
+ {
33
+ elem.style.display = "none"
34
+ link.innerHTML = "show source"
35
+ }
36
+ else
37
+ {
38
+ elem.style.display = "block"
39
+ link.innerHTML = "hide source"
40
+ }
41
+ }
42
+
43
+ function openCode( url )
44
+ {
45
+ window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
46
+ }
47
+ // ]]>
48
+ </script>
49
+ </head>
50
+ <body>
51
+ <ul id="menu">
52
+ <li><a href="/thin/">about</a></li>
53
+ <li><a href="/thin/download/">download</a></li>
54
+ <li><a href="/thin/usage/">usage</a></li>
55
+ <li><a href="/thin/doc/">doc</a></li>
56
+ <li><a href="http://groups.google.com/group/thin-ruby/">community</a></li>
57
+ </ul>
58
+ <div id="sidebar">
59
+ <h2>Files</h2>
60
+ <ul class="list">
61
+ <li><a href="../../files/README.html" value="File: README">README</a></li>
62
+ <li><a href="../../files/lib/rack/adapter/rails_rb.html" value="File: rails.rb">lib/rack/adapter/rails.rb</a></li>
63
+ <li><a href="../../files/lib/rack/handler/thin_rb.html" value="File: thin.rb">lib/rack/handler/thin.rb</a></li>
64
+ <li><a href="../../files/lib/thin/cluster_rb.html" value="File: cluster.rb">lib/thin/cluster.rb</a></li>
65
+ <li><a href="../../files/lib/thin/connection_rb.html" value="File: connection.rb">lib/thin/connection.rb</a></li>
66
+ <li><a href="../../files/lib/thin/daemonizing_rb.html" value="File: daemonizing.rb">lib/thin/daemonizing.rb</a></li>
67
+ <li><a href="../../files/lib/thin/headers_rb.html" value="File: headers.rb">lib/thin/headers.rb</a></li>
68
+ <li><a href="../../files/lib/thin/logging_rb.html" value="File: logging.rb">lib/thin/logging.rb</a></li>
69
+ <li><a href="../../files/lib/thin/request_rb.html" value="File: request.rb">lib/thin/request.rb</a></li>
70
+ <li><a href="../../files/lib/thin/response_rb.html" value="File: response.rb">lib/thin/response.rb</a></li>
71
+ <li><a href="../../files/lib/thin/server_rb.html" value="File: server.rb">lib/thin/server.rb</a></li>
72
+ <li><a href="../../files/lib/thin/statuses_rb.html" value="File: statuses.rb">lib/thin/statuses.rb</a></li>
73
+ <li><a href="../../files/lib/thin/version_rb.html" value="File: version.rb">lib/thin/version.rb</a></li>
74
+ <li><a href="../../files/lib/thin_rb.html" value="File: thin.rb">lib/thin.rb</a></li>
75
+ <li><a href="../../files/bin/thin.html" value="File: thin">bin/thin</a></li>
76
+ </ul>
77
+
78
+ <h2>Classes</h2>
79
+ <ul class="list">
80
+ <li><a href="../../classes/Rack.html" title="Module: Rack">Rack</a></li>
81
+ <li><a href="../../classes/Rack/Adapter.html" title="Module: Rack::Adapter">Rack::Adapter</a></li>
82
+ <li><a href="../../classes/Rack/Adapter/Rails.html" title="Class: Rack::Adapter::Rails">Rack::Adapter::Rails</a></li>
83
+ <li><a href="../../classes/Rack/Adapter/Rails/CGIWrapper.html" title="Class: Rack::Adapter::Rails::CGIWrapper">Rack::Adapter::Rails::CGIWrapper</a></li>
84
+ <li><a href="../../classes/Rack/Handler.html" title="Module: Rack::Handler">Rack::Handler</a></li>
85
+ <li><a href="../../classes/Rack/Handler/Thin.html" title="Class: Rack::Handler::Thin">Rack::Handler::Thin</a></li>
86
+ <li><a href="../../classes/Thin.html" title="Module: Thin">Thin</a></li>
87
+ <li><a href="../../classes/Thin/Daemonizable.html" title="Module: Thin::Daemonizable">Thin::Daemonizable</a></li>
88
+ <li><a href="../../classes/Thin/Daemonizable/ClassMethods.html" title="Module: Thin::Daemonizable::ClassMethods">Thin::Daemonizable::ClassMethods</a></li>
89
+ <li><a href="../../classes/Thin/VERSION.html" title="Module: Thin::VERSION">Thin::VERSION</a></li>
90
+ <li><a href="../../classes/Thin/Logging.html" title="Module: Thin::Logging">Thin::Logging</a></li>
91
+ <li><a href="../../classes/Thin/InvalidRequest.html" title="Class: Thin::InvalidRequest">Thin::InvalidRequest</a></li>
92
+ <li><a href="../../classes/Thin/StopServer.html" title="Class: Thin::StopServer">Thin::StopServer</a></li>
93
+ <li><a href="../../classes/Thin/Response.html" title="Class: Thin::Response">Thin::Response</a></li>
94
+ <li><a href="../../classes/Thin/Headers.html" title="Class: Thin::Headers">Thin::Headers</a></li>
95
+ <li><a href="../../classes/Thin/Server.html" title="Class: Thin::Server">Thin::Server</a></li>
96
+ <li><a href="../../classes/Thin/Request.html" title="Class: Thin::Request">Thin::Request</a></li>
97
+ <li><a href="../../classes/Thin/Connection.html" title="Class: Thin::Connection">Thin::Connection</a></li>
98
+ <li><a href="../../classes/Thin/Cluster.html" title="Class: Thin::Cluster">Thin::Cluster</a></li>
99
+ <li><a href="../../classes/Process.html" title="Module: Process">Process</a></li>
100
+ </ul>
101
+ </div>
102
+ <div id="container">
103
+ <div id="header">
104
+ <a href="/thin/" title="Home">
105
+ <img id="logo" src="../../logo.gif" />
106
+ </a>
107
+ <h2 id="tag_line">A fast and very simple Ruby web server</h2>
108
+ </div>
109
+
110
+ <div id="content">
111
+ <h2>Module: Thin::Logging</h2>
112
+
113
+
114
+ <div id="Thin::Logging" class="page_shade">
115
+ <div class="page">
116
+ <h3>Module Thin::Logging &lt; Object</h3>
117
+
118
+ <span class="path">(in files
119
+ <a href="../../files/lib/thin/logging_rb.html">lib/thin/logging.rb</a>
120
+ )</span>
121
+
122
+ <p>
123
+ To be included into classes to allow some basic logging that can be
124
+ silented (<tt>silent</tt>) or made more verbose ($DEBUG=true).
125
+ </p>
126
+
127
+
128
+
129
+
130
+
131
+ <h2 class="ruled">Methods</h2>
132
+ <h4 class="ruled">
133
+ <span class="method-type" title="Protected Instance method">Protected Instance</span>
134
+ <strong><a name="M000026" href="#M000026" title="Permalink to Protected Instance method: log">log(msg)</a></strong>
135
+ </h4>
136
+
137
+ <p>
138
+ Log a message to the console
139
+ </p>
140
+
141
+ <div class="sourcecode">
142
+ <p class="source-link">[ <a href="javascript:toggleSource('M000026_source')" id="l_M000026_source">show source</a> ]</p>
143
+ <div id="M000026_source" class="dyn-source">
144
+ <pre>
145
+ <span class="ruby-comment cmt"># File lib/thin/logging.rb, line 10</span>
146
+ 10: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">log</span>(<span class="ruby-identifier">msg</span>)
147
+ 11: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">msg</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@silent</span>
148
+ 12: <span class="ruby-keyword kw">end</span>
149
+ </pre>
150
+ </div>
151
+ </div>
152
+ <h4 class="ruled">
153
+ <span class="method-type" title="Protected Instance method">Protected Instance</span>
154
+ <strong><a name="M000028" href="#M000028" title="Permalink to Protected Instance method: log_error">log_error(e)</a></strong>
155
+ </h4>
156
+
157
+
158
+ <div class="sourcecode">
159
+ <p class="source-link">[ <a href="javascript:toggleSource('M000028_source')" id="l_M000028_source">show source</a> ]</p>
160
+ <div id="M000028_source" class="dyn-source">
161
+ <pre>
162
+ <span class="ruby-comment cmt"># File lib/thin/logging.rb, line 19</span>
163
+ 19: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">log_error</span>(<span class="ruby-identifier">e</span>)
164
+ 20: <span class="ruby-identifier">trace</span> { <span class="ruby-node">&quot;#{e}\n\t&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;\n\t&quot;</span>) }
165
+ 21: <span class="ruby-keyword kw">end</span>
166
+ </pre>
167
+ </div>
168
+ </div>
169
+ <h4 class="ruled">
170
+ <span class="method-type" title="Protected Instance method">Protected Instance</span>
171
+ <strong><a name="M000027" href="#M000027" title="Permalink to Protected Instance method: trace">trace(msg=nil) {|if $DEBUG &amp;&amp; !@silent| ...}</a></strong>
172
+ </h4>
173
+
174
+ <p>
175
+ Log a message to the console if tracing is activated
176
+ </p>
177
+
178
+ <div class="sourcecode">
179
+ <p class="source-link">[ <a href="javascript:toggleSource('M000027_source')" id="l_M000027_source">show source</a> ]</p>
180
+ <div id="M000027_source" class="dyn-source">
181
+ <pre>
182
+ <span class="ruby-comment cmt"># File lib/thin/logging.rb, line 15</span>
183
+ 15: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">trace</span>(<span class="ruby-identifier">msg</span>=<span class="ruby-keyword kw">nil</span>)
184
+ 16: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">msg</span> <span class="ruby-operator">||</span> <span class="ruby-keyword kw">yield</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$DEBUG</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@silent</span>
185
+ 17: <span class="ruby-keyword kw">end</span>
186
+ </pre>
187
+ </div>
188
+ </div>
189
+
190
+ </div>
191
+ </div>
192
+
193
+
194
+ </div>
195
+ </div>
196
+ <div id="footer">
197
+ <hr />
198
+ &copy; <a href="http://macournoyer.com">Marc-Andr&eacute; Cournoyer</a>
199
+ </div>
200
+ </body>
201
+ </html>
@@ -0,0 +1,231 @@
1
+
2
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
3
+ <html>
4
+ <head>
5
+ <title>
6
+ thin &raquo; Class: Thin::Request
7
+ </title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
10
+ <script language="JavaScript" type="text/javascript">
11
+ // <![CDATA[
12
+
13
+ function toggleSource( id )
14
+ {
15
+ var elem
16
+ var link
17
+
18
+ if( document.getElementById )
19
+ {
20
+ elem = document.getElementById( id )
21
+ link = document.getElementById( "l_" + id )
22
+ }
23
+ else if ( document.all )
24
+ {
25
+ elem = eval( "document.all." + id )
26
+ link = eval( "document.all.l_" + id )
27
+ }
28
+ else
29
+ return false;
30
+
31
+ if( elem.style.display == "block" )
32
+ {
33
+ elem.style.display = "none"
34
+ link.innerHTML = "show source"
35
+ }
36
+ else
37
+ {
38
+ elem.style.display = "block"
39
+ link.innerHTML = "hide source"
40
+ }
41
+ }
42
+
43
+ function openCode( url )
44
+ {
45
+ window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
46
+ }
47
+ // ]]>
48
+ </script>
49
+ </head>
50
+ <body>
51
+ <ul id="menu">
52
+ <li><a href="/thin/">about</a></li>
53
+ <li><a href="/thin/download/">download</a></li>
54
+ <li><a href="/thin/usage/">usage</a></li>
55
+ <li><a href="/thin/doc/">doc</a></li>
56
+ <li><a href="http://groups.google.com/group/thin-ruby/">community</a></li>
57
+ </ul>
58
+ <div id="sidebar">
59
+ <h2>Files</h2>
60
+ <ul class="list">
61
+ <li><a href="../../files/README.html" value="File: README">README</a></li>
62
+ <li><a href="../../files/lib/rack/adapter/rails_rb.html" value="File: rails.rb">lib/rack/adapter/rails.rb</a></li>
63
+ <li><a href="../../files/lib/rack/handler/thin_rb.html" value="File: thin.rb">lib/rack/handler/thin.rb</a></li>
64
+ <li><a href="../../files/lib/thin/cluster_rb.html" value="File: cluster.rb">lib/thin/cluster.rb</a></li>
65
+ <li><a href="../../files/lib/thin/connection_rb.html" value="File: connection.rb">lib/thin/connection.rb</a></li>
66
+ <li><a href="../../files/lib/thin/daemonizing_rb.html" value="File: daemonizing.rb">lib/thin/daemonizing.rb</a></li>
67
+ <li><a href="../../files/lib/thin/headers_rb.html" value="File: headers.rb">lib/thin/headers.rb</a></li>
68
+ <li><a href="../../files/lib/thin/logging_rb.html" value="File: logging.rb">lib/thin/logging.rb</a></li>
69
+ <li><a href="../../files/lib/thin/request_rb.html" value="File: request.rb">lib/thin/request.rb</a></li>
70
+ <li><a href="../../files/lib/thin/response_rb.html" value="File: response.rb">lib/thin/response.rb</a></li>
71
+ <li><a href="../../files/lib/thin/server_rb.html" value="File: server.rb">lib/thin/server.rb</a></li>
72
+ <li><a href="../../files/lib/thin/statuses_rb.html" value="File: statuses.rb">lib/thin/statuses.rb</a></li>
73
+ <li><a href="../../files/lib/thin/version_rb.html" value="File: version.rb">lib/thin/version.rb</a></li>
74
+ <li><a href="../../files/lib/thin_rb.html" value="File: thin.rb">lib/thin.rb</a></li>
75
+ <li><a href="../../files/bin/thin.html" value="File: thin">bin/thin</a></li>
76
+ </ul>
77
+
78
+ <h2>Classes</h2>
79
+ <ul class="list">
80
+ <li><a href="../../classes/Rack.html" title="Module: Rack">Rack</a></li>
81
+ <li><a href="../../classes/Rack/Adapter.html" title="Module: Rack::Adapter">Rack::Adapter</a></li>
82
+ <li><a href="../../classes/Rack/Adapter/Rails.html" title="Class: Rack::Adapter::Rails">Rack::Adapter::Rails</a></li>
83
+ <li><a href="../../classes/Rack/Adapter/Rails/CGIWrapper.html" title="Class: Rack::Adapter::Rails::CGIWrapper">Rack::Adapter::Rails::CGIWrapper</a></li>
84
+ <li><a href="../../classes/Rack/Handler.html" title="Module: Rack::Handler">Rack::Handler</a></li>
85
+ <li><a href="../../classes/Rack/Handler/Thin.html" title="Class: Rack::Handler::Thin">Rack::Handler::Thin</a></li>
86
+ <li><a href="../../classes/Thin.html" title="Module: Thin">Thin</a></li>
87
+ <li><a href="../../classes/Thin/Daemonizable.html" title="Module: Thin::Daemonizable">Thin::Daemonizable</a></li>
88
+ <li><a href="../../classes/Thin/Daemonizable/ClassMethods.html" title="Module: Thin::Daemonizable::ClassMethods">Thin::Daemonizable::ClassMethods</a></li>
89
+ <li><a href="../../classes/Thin/VERSION.html" title="Module: Thin::VERSION">Thin::VERSION</a></li>
90
+ <li><a href="../../classes/Thin/Logging.html" title="Module: Thin::Logging">Thin::Logging</a></li>
91
+ <li><a href="../../classes/Thin/InvalidRequest.html" title="Class: Thin::InvalidRequest">Thin::InvalidRequest</a></li>
92
+ <li><a href="../../classes/Thin/StopServer.html" title="Class: Thin::StopServer">Thin::StopServer</a></li>
93
+ <li><a href="../../classes/Thin/Response.html" title="Class: Thin::Response">Thin::Response</a></li>
94
+ <li><a href="../../classes/Thin/Headers.html" title="Class: Thin::Headers">Thin::Headers</a></li>
95
+ <li><a href="../../classes/Thin/Server.html" title="Class: Thin::Server">Thin::Server</a></li>
96
+ <li><a href="../../classes/Thin/Request.html" title="Class: Thin::Request">Thin::Request</a></li>
97
+ <li><a href="../../classes/Thin/Connection.html" title="Class: Thin::Connection">Thin::Connection</a></li>
98
+ <li><a href="../../classes/Thin/Cluster.html" title="Class: Thin::Cluster">Thin::Cluster</a></li>
99
+ <li><a href="../../classes/Process.html" title="Module: Process">Process</a></li>
100
+ </ul>
101
+ </div>
102
+ <div id="container">
103
+ <div id="header">
104
+ <a href="/thin/" title="Home">
105
+ <img id="logo" src="../../logo.gif" />
106
+ </a>
107
+ <h2 id="tag_line">A fast and very simple Ruby web server</h2>
108
+ </div>
109
+
110
+ <div id="content">
111
+ <h2>Class: Thin::Request</h2>
112
+
113
+
114
+ <div id="Thin::Request" class="page_shade">
115
+ <div class="page">
116
+ <h3>Class Thin::Request &lt; Object</h3>
117
+
118
+ <span class="path">(in files
119
+ <a href="../../files/lib/thin/request_rb.html">lib/thin/request.rb</a>
120
+ )</span>
121
+
122
+ <p>
123
+ A request sent by the client to the server.
124
+ </p>
125
+
126
+
127
+
128
+
129
+ <h4>Includes</h4>
130
+ <ul>
131
+ <li><a href="Logging.html">Logging</a></li>
132
+ <li><a href="Daemonizable.html">Daemonizable</a></li>
133
+ </ul>
134
+
135
+ <h2 class="ruled">Methods</h2>
136
+ <h4 class="ruled">
137
+ <span class="method-type" title="Public Class method">Public Class</span>
138
+ <strong><a name="M000047" href="#M000047" title="Permalink to Public Class method: new">new()</a></strong>
139
+ </h4>
140
+
141
+
142
+ <div class="sourcecode">
143
+ <p class="source-link">[ <a href="javascript:toggleSource('M000047_source')" id="l_M000047_source">show source</a> ]</p>
144
+ <div id="M000047_source" class="dyn-source">
145
+ <pre>
146
+ <span class="ruby-comment cmt"># File lib/thin/request.rb, line 28</span>
147
+ 28: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
148
+ 29: <span class="ruby-ivar">@parser</span> = <span class="ruby-constant">HttpParser</span>.<span class="ruby-identifier">new</span>
149
+ 30: <span class="ruby-ivar">@data</span> = <span class="ruby-value str">''</span>
150
+ 31: <span class="ruby-ivar">@nparsed</span> = <span class="ruby-value">0</span>
151
+ 32: <span class="ruby-ivar">@body</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
152
+ 33: <span class="ruby-ivar">@env</span> = {
153
+ 34: <span class="ruby-constant">SERVER_SOFTWARE</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">SERVER</span>,
154
+ 35:
155
+ 36: <span class="ruby-comment cmt"># Rack stuff</span>
156
+ 37: <span class="ruby-constant">RACK_INPUT</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@body</span>,
157
+ 38:
158
+ 39: <span class="ruby-constant">RACK_VERSION</span> =<span class="ruby-operator">&gt;</span> [<span class="ruby-value">0</span>, <span class="ruby-value">2</span>],
159
+ 40: <span class="ruby-constant">RACK_ERRORS</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">STDERR</span>,
160
+ 41:
161
+ 42: <span class="ruby-constant">RACK_MULTITHREAD</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">false</span>,
162
+ 43: <span class="ruby-constant">RACK_MULTIPROCESS</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">false</span>,
163
+ 44: <span class="ruby-constant">RACK_RUN_ONCE</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">false</span>
164
+ 45: }
165
+ 46: <span class="ruby-keyword kw">end</span>
166
+ </pre>
167
+ </div>
168
+ </div>
169
+ <h4 class="ruled">
170
+ <span class="method-type" title="Public Instance method">Public Instance</span>
171
+ <strong><a name="M000049" href="#M000049" title="Permalink to Public Instance method: content_length">content_length()</a></strong>
172
+ </h4>
173
+
174
+
175
+ <div class="sourcecode">
176
+ <p class="source-link">[ <a href="javascript:toggleSource('M000049_source')" id="l_M000049_source">show source</a> ]</p>
177
+ <div id="M000049_source" class="dyn-source">
178
+ <pre>
179
+ <span class="ruby-comment cmt"># File lib/thin/request.rb, line 68</span>
180
+ 68: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">content_length</span>
181
+ 69: <span class="ruby-ivar">@env</span>[<span class="ruby-constant">CONTENT_LENGTH</span>].<span class="ruby-identifier">to_i</span>
182
+ 70: <span class="ruby-keyword kw">end</span>
183
+ </pre>
184
+ </div>
185
+ </div>
186
+ <h4 class="ruled">
187
+ <span class="method-type" title="Public Instance method">Public Instance</span>
188
+ <strong><a name="M000048" href="#M000048" title="Permalink to Public Instance method: parse">parse(data)</a></strong>
189
+ </h4>
190
+
191
+
192
+ <div class="sourcecode">
193
+ <p class="source-link">[ <a href="javascript:toggleSource('M000048_source')" id="l_M000048_source">show source</a> ]</p>
194
+ <div id="M000048_source" class="dyn-source">
195
+ <pre>
196
+ <span class="ruby-comment cmt"># File lib/thin/request.rb, line 48</span>
197
+ 48: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse</span>(<span class="ruby-identifier">data</span>)
198
+ 49: <span class="ruby-ivar">@data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">data</span>
199
+ 50:
200
+ 51: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">finished?</span> <span class="ruby-comment cmt"># Header finished, can only be some more body</span>
201
+ 52: <span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">data</span>
202
+ 53: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@data</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-constant">MAX_HEADER</span> <span class="ruby-comment cmt"># Oho! very big header, must be a mean person</span>
203
+ 54: <span class="ruby-identifier">raise</span> <span class="ruby-constant">InvalidRequest</span>, <span class="ruby-constant">MAX_HEADER_MSG</span>
204
+ 55: <span class="ruby-keyword kw">else</span> <span class="ruby-comment cmt"># Parse more header using the super parser</span>
205
+ 56: <span class="ruby-ivar">@nparsed</span> = <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">execute</span>(<span class="ruby-ivar">@env</span>, <span class="ruby-ivar">@data</span>, <span class="ruby-ivar">@nparsed</span>)
206
+ 57: <span class="ruby-keyword kw">end</span>
207
+ 58:
208
+ 59: <span class="ruby-comment cmt"># Check if header and body are complete</span>
209
+ 60: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">finished?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">body</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">content_length</span>
210
+ 61: <span class="ruby-identifier">body</span>.<span class="ruby-identifier">rewind</span>
211
+ 62: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-comment cmt"># Request is fully parsed</span>
212
+ 63: <span class="ruby-keyword kw">end</span>
213
+ 64:
214
+ 65: <span class="ruby-keyword kw">false</span> <span class="ruby-comment cmt"># Not finished, need more data</span>
215
+ 66: <span class="ruby-keyword kw">end</span>
216
+ </pre>
217
+ </div>
218
+ </div>
219
+
220
+ </div>
221
+ </div>
222
+
223
+
224
+ </div>
225
+ </div>
226
+ <div id="footer">
227
+ <hr />
228
+ &copy; <a href="http://macournoyer.com">Marc-Andr&eacute; Cournoyer</a>
229
+ </div>
230
+ </body>
231
+ </html>
@@ -0,0 +1,271 @@
1
+
2
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
3
+ <html>
4
+ <head>
5
+ <title>
6
+ thin &raquo; Class: Thin::Response
7
+ </title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
10
+ <script language="JavaScript" type="text/javascript">
11
+ // <![CDATA[
12
+
13
+ function toggleSource( id )
14
+ {
15
+ var elem
16
+ var link
17
+
18
+ if( document.getElementById )
19
+ {
20
+ elem = document.getElementById( id )
21
+ link = document.getElementById( "l_" + id )
22
+ }
23
+ else if ( document.all )
24
+ {
25
+ elem = eval( "document.all." + id )
26
+ link = eval( "document.all.l_" + id )
27
+ }
28
+ else
29
+ return false;
30
+
31
+ if( elem.style.display == "block" )
32
+ {
33
+ elem.style.display = "none"
34
+ link.innerHTML = "show source"
35
+ }
36
+ else
37
+ {
38
+ elem.style.display = "block"
39
+ link.innerHTML = "hide source"
40
+ }
41
+ }
42
+
43
+ function openCode( url )
44
+ {
45
+ window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
46
+ }
47
+ // ]]>
48
+ </script>
49
+ </head>
50
+ <body>
51
+ <ul id="menu">
52
+ <li><a href="/thin/">about</a></li>
53
+ <li><a href="/thin/download/">download</a></li>
54
+ <li><a href="/thin/usage/">usage</a></li>
55
+ <li><a href="/thin/doc/">doc</a></li>
56
+ <li><a href="http://groups.google.com/group/thin-ruby/">community</a></li>
57
+ </ul>
58
+ <div id="sidebar">
59
+ <h2>Files</h2>
60
+ <ul class="list">
61
+ <li><a href="../../files/README.html" value="File: README">README</a></li>
62
+ <li><a href="../../files/lib/rack/adapter/rails_rb.html" value="File: rails.rb">lib/rack/adapter/rails.rb</a></li>
63
+ <li><a href="../../files/lib/rack/handler/thin_rb.html" value="File: thin.rb">lib/rack/handler/thin.rb</a></li>
64
+ <li><a href="../../files/lib/thin/cluster_rb.html" value="File: cluster.rb">lib/thin/cluster.rb</a></li>
65
+ <li><a href="../../files/lib/thin/connection_rb.html" value="File: connection.rb">lib/thin/connection.rb</a></li>
66
+ <li><a href="../../files/lib/thin/daemonizing_rb.html" value="File: daemonizing.rb">lib/thin/daemonizing.rb</a></li>
67
+ <li><a href="../../files/lib/thin/headers_rb.html" value="File: headers.rb">lib/thin/headers.rb</a></li>
68
+ <li><a href="../../files/lib/thin/logging_rb.html" value="File: logging.rb">lib/thin/logging.rb</a></li>
69
+ <li><a href="../../files/lib/thin/request_rb.html" value="File: request.rb">lib/thin/request.rb</a></li>
70
+ <li><a href="../../files/lib/thin/response_rb.html" value="File: response.rb">lib/thin/response.rb</a></li>
71
+ <li><a href="../../files/lib/thin/server_rb.html" value="File: server.rb">lib/thin/server.rb</a></li>
72
+ <li><a href="../../files/lib/thin/statuses_rb.html" value="File: statuses.rb">lib/thin/statuses.rb</a></li>
73
+ <li><a href="../../files/lib/thin/version_rb.html" value="File: version.rb">lib/thin/version.rb</a></li>
74
+ <li><a href="../../files/lib/thin_rb.html" value="File: thin.rb">lib/thin.rb</a></li>
75
+ <li><a href="../../files/bin/thin.html" value="File: thin">bin/thin</a></li>
76
+ </ul>
77
+
78
+ <h2>Classes</h2>
79
+ <ul class="list">
80
+ <li><a href="../../classes/Rack.html" title="Module: Rack">Rack</a></li>
81
+ <li><a href="../../classes/Rack/Adapter.html" title="Module: Rack::Adapter">Rack::Adapter</a></li>
82
+ <li><a href="../../classes/Rack/Adapter/Rails.html" title="Class: Rack::Adapter::Rails">Rack::Adapter::Rails</a></li>
83
+ <li><a href="../../classes/Rack/Adapter/Rails/CGIWrapper.html" title="Class: Rack::Adapter::Rails::CGIWrapper">Rack::Adapter::Rails::CGIWrapper</a></li>
84
+ <li><a href="../../classes/Rack/Handler.html" title="Module: Rack::Handler">Rack::Handler</a></li>
85
+ <li><a href="../../classes/Rack/Handler/Thin.html" title="Class: Rack::Handler::Thin">Rack::Handler::Thin</a></li>
86
+ <li><a href="../../classes/Thin.html" title="Module: Thin">Thin</a></li>
87
+ <li><a href="../../classes/Thin/Daemonizable.html" title="Module: Thin::Daemonizable">Thin::Daemonizable</a></li>
88
+ <li><a href="../../classes/Thin/Daemonizable/ClassMethods.html" title="Module: Thin::Daemonizable::ClassMethods">Thin::Daemonizable::ClassMethods</a></li>
89
+ <li><a href="../../classes/Thin/VERSION.html" title="Module: Thin::VERSION">Thin::VERSION</a></li>
90
+ <li><a href="../../classes/Thin/Logging.html" title="Module: Thin::Logging">Thin::Logging</a></li>
91
+ <li><a href="../../classes/Thin/InvalidRequest.html" title="Class: Thin::InvalidRequest">Thin::InvalidRequest</a></li>
92
+ <li><a href="../../classes/Thin/StopServer.html" title="Class: Thin::StopServer">Thin::StopServer</a></li>
93
+ <li><a href="../../classes/Thin/Response.html" title="Class: Thin::Response">Thin::Response</a></li>
94
+ <li><a href="../../classes/Thin/Headers.html" title="Class: Thin::Headers">Thin::Headers</a></li>
95
+ <li><a href="../../classes/Thin/Server.html" title="Class: Thin::Server">Thin::Server</a></li>
96
+ <li><a href="../../classes/Thin/Request.html" title="Class: Thin::Request">Thin::Request</a></li>
97
+ <li><a href="../../classes/Thin/Connection.html" title="Class: Thin::Connection">Thin::Connection</a></li>
98
+ <li><a href="../../classes/Thin/Cluster.html" title="Class: Thin::Cluster">Thin::Cluster</a></li>
99
+ <li><a href="../../classes/Process.html" title="Module: Process">Process</a></li>
100
+ </ul>
101
+ </div>
102
+ <div id="container">
103
+ <div id="header">
104
+ <a href="/thin/" title="Home">
105
+ <img id="logo" src="../../logo.gif" />
106
+ </a>
107
+ <h2 id="tag_line">A fast and very simple Ruby web server</h2>
108
+ </div>
109
+
110
+ <div id="content">
111
+ <h2>Class: Thin::Response</h2>
112
+
113
+
114
+ <div id="Thin::Response" class="page_shade">
115
+ <div class="page">
116
+ <h3>Class Thin::Response &lt; Object</h3>
117
+
118
+ <span class="path">(in files
119
+ <a href="../../files/lib/thin/response_rb.html">lib/thin/response.rb</a>
120
+ )</span>
121
+
122
+ <p>
123
+ A response sent to the client.
124
+ </p>
125
+
126
+
127
+
128
+
129
+
130
+ <h2 class="ruled">Methods</h2>
131
+ <h4 class="ruled">
132
+ <span class="method-type" title="Public Class method">Public Class</span>
133
+ <strong><a name="M000029" href="#M000029" title="Permalink to Public Class method: new">new()</a></strong>
134
+ </h4>
135
+
136
+
137
+ <div class="sourcecode">
138
+ <p class="source-link">[ <a href="javascript:toggleSource('M000029_source')" id="l_M000029_source">show source</a> ]</p>
139
+ <div id="M000029_source" class="dyn-source">
140
+ <pre>
141
+ <span class="ruby-comment cmt"># File lib/thin/response.rb, line 11</span>
142
+ 11: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
143
+ 12: <span class="ruby-ivar">@headers</span> = <span class="ruby-constant">Headers</span>.<span class="ruby-identifier">new</span>
144
+ 13: <span class="ruby-ivar">@body</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
145
+ 14: <span class="ruby-ivar">@status</span> = <span class="ruby-value">200</span>
146
+ 15: <span class="ruby-keyword kw">end</span>
147
+ </pre>
148
+ </div>
149
+ </div>
150
+ <h4 class="ruled">
151
+ <span class="method-type" title="Public Instance method">Public Instance</span>
152
+ <strong><a name="M000033" href="#M000033" title="Permalink to Public Instance method: body=">body=(stream)</a></strong>
153
+ </h4>
154
+
155
+
156
+ <div class="sourcecode">
157
+ <p class="source-link">[ <a href="javascript:toggleSource('M000033_source')" id="l_M000033_source">show source</a> ]</p>
158
+ <div id="M000033_source" class="dyn-source">
159
+ <pre>
160
+ <span class="ruby-comment cmt"># File lib/thin/response.rb, line 33</span>
161
+ 33: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">body=</span>(<span class="ruby-identifier">stream</span>)
162
+ 34: <span class="ruby-identifier">stream</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">part</span><span class="ruby-operator">|</span>
163
+ 35: <span class="ruby-ivar">@body</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">part</span>
164
+ 36: <span class="ruby-keyword kw">end</span>
165
+ 37: <span class="ruby-keyword kw">end</span>
166
+ </pre>
167
+ </div>
168
+ </div>
169
+ <h4 class="ruled">
170
+ <span class="method-type" title="Public Instance method">Public Instance</span>
171
+ <strong><a name="M000034" href="#M000034" title="Permalink to Public Instance method: close">close()</a></strong>
172
+ </h4>
173
+
174
+
175
+ <div class="sourcecode">
176
+ <p class="source-link">[ <a href="javascript:toggleSource('M000034_source')" id="l_M000034_source">show source</a> ]</p>
177
+ <div id="M000034_source" class="dyn-source">
178
+ <pre>
179
+ <span class="ruby-comment cmt"># File lib/thin/response.rb, line 39</span>
180
+ 39: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close</span>
181
+ 40: <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">close</span>
182
+ 41: <span class="ruby-keyword kw">end</span>
183
+ </pre>
184
+ </div>
185
+ </div>
186
+ <h4 class="ruled">
187
+ <span class="method-type" title="Public Instance method">Public Instance</span>
188
+ <strong><a name="M000031" href="#M000031" title="Permalink to Public Instance method: head">head()</a></strong>
189
+ </h4>
190
+
191
+
192
+ <div class="sourcecode">
193
+ <p class="source-link">[ <a href="javascript:toggleSource('M000031_source')" id="l_M000031_source">show source</a> ]</p>
194
+ <div id="M000031_source" class="dyn-source">
195
+ <pre>
196
+ <span class="ruby-comment cmt"># File lib/thin/response.rb, line 23</span>
197
+ 23: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">head</span>
198
+ 24: <span class="ruby-node">&quot;HTTP/1.1 #{@status} #{HTTP_STATUS_CODES[@status.to_i]}\r\n#{headers_output}\r\n&quot;</span>
199
+ 25: <span class="ruby-keyword kw">end</span>
200
+ </pre>
201
+ </div>
202
+ </div>
203
+ <h4 class="ruled">
204
+ <span class="method-type" title="Public Instance method">Public Instance</span>
205
+ <strong><a name="M000032" href="#M000032" title="Permalink to Public Instance method: headers=">headers=(key_value_pairs)</a></strong>
206
+ </h4>
207
+
208
+
209
+ <div class="sourcecode">
210
+ <p class="source-link">[ <a href="javascript:toggleSource('M000032_source')" id="l_M000032_source">show source</a> ]</p>
211
+ <div id="M000032_source" class="dyn-source">
212
+ <pre>
213
+ <span class="ruby-comment cmt"># File lib/thin/response.rb, line 27</span>
214
+ 27: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">headers=</span>(<span class="ruby-identifier">key_value_pairs</span>)
215
+ 28: <span class="ruby-identifier">key_value_pairs</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>, <span class="ruby-identifier">vs</span><span class="ruby-operator">|</span>
216
+ 29: <span class="ruby-identifier">vs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@headers</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>.<span class="ruby-identifier">chomp</span> }
217
+ 30: <span class="ruby-keyword kw">end</span>
218
+ 31: <span class="ruby-keyword kw">end</span>
219
+ </pre>
220
+ </div>
221
+ </div>
222
+ <h4 class="ruled">
223
+ <span class="method-type" title="Public Instance method">Public Instance</span>
224
+ <strong><a name="M000030" href="#M000030" title="Permalink to Public Instance method: headers_output">headers_output()</a></strong>
225
+ </h4>
226
+
227
+
228
+ <div class="sourcecode">
229
+ <p class="source-link">[ <a href="javascript:toggleSource('M000030_source')" id="l_M000030_source">show source</a> ]</p>
230
+ <div id="M000030_source" class="dyn-source">
231
+ <pre>
232
+ <span class="ruby-comment cmt"># File lib/thin/response.rb, line 17</span>
233
+ 17: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">headers_output</span>
234
+ 18: <span class="ruby-ivar">@headers</span>[<span class="ruby-constant">CONTENT_LENGTH</span>] = <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">size</span>
235
+ 19: <span class="ruby-ivar">@headers</span>[<span class="ruby-constant">CONNECTION</span>] = <span class="ruby-constant">CLOSE</span>
236
+ 20: <span class="ruby-ivar">@headers</span>.<span class="ruby-identifier">to_s</span>
237
+ 21: <span class="ruby-keyword kw">end</span>
238
+ </pre>
239
+ </div>
240
+ </div>
241
+ <h4 class="ruled">
242
+ <span class="method-type" title="Public Instance method">Public Instance</span>
243
+ <strong><a name="M000035" href="#M000035" title="Permalink to Public Instance method: to_s">to_s()</a></strong>
244
+ </h4>
245
+
246
+
247
+ <div class="sourcecode">
248
+ <p class="source-link">[ <a href="javascript:toggleSource('M000035_source')" id="l_M000035_source">show source</a> ]</p>
249
+ <div id="M000035_source" class="dyn-source">
250
+ <pre>
251
+ <span class="ruby-comment cmt"># File lib/thin/response.rb, line 43</span>
252
+ 43: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
253
+ 44: <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">rewind</span>
254
+ 45: <span class="ruby-identifier">head</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">read</span>
255
+ 46: <span class="ruby-keyword kw">end</span>
256
+ </pre>
257
+ </div>
258
+ </div>
259
+
260
+ </div>
261
+ </div>
262
+
263
+
264
+ </div>
265
+ </div>
266
+ <div id="footer">
267
+ <hr />
268
+ &copy; <a href="http://macournoyer.com">Marc-Andr&eacute; Cournoyer</a>
269
+ </div>
270
+ </body>
271
+ </html>