serverside 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +10 -0
- data/README +3 -3
- data/Rakefile +4 -4
- data/bin/serverside +4 -4
- data/doc/rdoc/classes/Daemon.html +4 -4
- data/doc/rdoc/classes/ServerSide.html +14 -74
- data/doc/rdoc/classes/ServerSide/Application.html +13 -13
- data/doc/rdoc/classes/ServerSide/{Connection.html → HTTP.html} +12 -18
- data/doc/rdoc/classes/ServerSide/HTTP/Connection.html +200 -0
- data/doc/rdoc/classes/ServerSide/{Connection → HTTP}/Const.html +6 -6
- data/doc/rdoc/classes/ServerSide/{Connection/Base.html → HTTP/Request.html} +213 -164
- data/doc/rdoc/classes/ServerSide/{Server.html → HTTP/Server.html} +22 -22
- data/doc/rdoc/classes/ServerSide/Router.html +496 -0
- data/doc/rdoc/classes/ServerSide/StaticFiles.html +31 -30
- data/doc/rdoc/classes/ServerSide/Template.html +12 -12
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/CHANGELOG.html +22 -4
- data/doc/rdoc/files/COPYING.html +1 -1
- data/doc/rdoc/files/README.html +4 -4
- data/doc/rdoc/files/lib/serverside/application_rb.html +1 -1
- data/doc/rdoc/files/lib/serverside/cluster_rb.html +1 -1
- data/doc/rdoc/files/lib/serverside/connection_rb.html +1 -1
- data/doc/rdoc/files/lib/serverside/core_ext_rb.html +1 -1
- data/doc/rdoc/files/lib/serverside/daemon_rb.html +1 -1
- data/doc/rdoc/files/lib/serverside/request_rb.html +101 -0
- data/doc/rdoc/files/lib/serverside/routing_rb.html +1 -1
- data/doc/rdoc/files/lib/serverside/server_rb.html +1 -1
- data/doc/rdoc/files/lib/serverside/static_rb.html +1 -1
- data/doc/rdoc/files/lib/serverside/template_rb.html +1 -1
- data/doc/rdoc/files/lib/serverside_rb.html +1 -1
- data/doc/rdoc/fr_class_index.html +6 -5
- data/doc/rdoc/fr_file_index.html +1 -0
- data/doc/rdoc/fr_method_index.html +31 -31
- data/lib/serverside/application.rb +1 -1
- data/lib/serverside/connection.rb +12 -141
- data/lib/serverside/request.rb +150 -0
- data/lib/serverside/routing.rb +117 -126
- data/lib/serverside/server.rb +13 -12
- data/lib/serverside/static.rb +1 -1
- data/test/functional/primitive_static_server_test.rb +3 -3
- data/test/functional/routing_server.rb +1 -1
- data/test/functional/routing_server_test.rb +1 -1
- data/test/functional/static_profile.rb +1 -1
- data/test/functional/static_server_test.rb +2 -2
- data/test/unit/connection_test.rb +30 -224
- data/test/unit/request_test.rb +248 -0
- data/test/unit/routing_test.rb +4 -4
- data/test/unit/server_test.rb +10 -8
- data/test/unit/static_test.rb +1 -1
- metadata +61 -56
- data/doc/rdoc/classes/ServerSide/Connection/Router.html +0 -493
data/CHANGELOG
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
*SVN*
|
2
|
+
|
3
|
+
* Refactored HTTP-related code into a new HTTP::Request class and a simplified HTTP::Connection.
|
4
|
+
|
5
|
+
* Another small change to docs.
|
6
|
+
|
7
|
+
* Fixed small error in Rakefile that prevented doc_rforge task from updating the docs.
|
8
|
+
|
9
|
+
* Fixed minor documentation error.
|
10
|
+
|
1
11
|
*0.2.5*
|
2
12
|
|
3
13
|
* Added template serving to static file module.
|
data/README
CHANGED
@@ -12,9 +12,9 @@ clusters of servers.
|
|
12
12
|
* {Bug tracking}[http://code.google.com/p/serverside/issues/list]
|
13
13
|
* {RubyForge page}[http://rubyforge.org/projects/serverside/]
|
14
14
|
|
15
|
-
To check out the
|
15
|
+
To check out the source code:
|
16
16
|
|
17
|
-
svn co
|
17
|
+
svn co http://serverside.googlecode.com/svn/trunk
|
18
18
|
|
19
19
|
== Installation
|
20
20
|
|
@@ -48,7 +48,7 @@ By default ServerSide serves static files, but you can change the behavior by
|
|
48
48
|
creating custom {routing rules}[classes/ServerSide/Connection/Router.html].
|
49
49
|
Here's a simple routing rule:
|
50
50
|
|
51
|
-
ServerSide.route(:path => '/hello/:name') {
|
51
|
+
ServerSide::Router.route(:path => '/hello/:name') {
|
52
52
|
send_response(200, 'text', "Hello #{@parameters[:name]}!")
|
53
53
|
}
|
54
54
|
|
data/Rakefile
CHANGED
@@ -7,7 +7,7 @@ require 'fileutils'
|
|
7
7
|
include FileUtils
|
8
8
|
|
9
9
|
NAME = "serverside"
|
10
|
-
VERS = "0.2.
|
10
|
+
VERS = "0.2.6"
|
11
11
|
CLEAN.include ['**/.*.sw?', '*.gem', '.config']
|
12
12
|
RDOC_OPTS = ['--quiet', '--title', "ServerSide Documentation",
|
13
13
|
"--opname", "index.html",
|
@@ -68,7 +68,7 @@ task :uninstall => [:clean] do
|
|
68
68
|
end
|
69
69
|
|
70
70
|
task :doc_rforge do
|
71
|
-
|
71
|
+
sh %{rake doc}
|
72
72
|
sh %{scp -r doc/rdoc/* ciconia@rubyforge.org:/var/www/gforge-projects/serverside}
|
73
73
|
end
|
74
74
|
|
@@ -105,8 +105,8 @@ end
|
|
105
105
|
|
106
106
|
desc 'Run all tests, specs and finish with rcov'
|
107
107
|
task :aok do
|
108
|
-
|
109
|
-
|
108
|
+
sh %{rake rcov}
|
109
|
+
sh %{rake spec}
|
110
110
|
end
|
111
111
|
|
112
112
|
##############################################################################
|
data/bin/serverside
CHANGED
@@ -64,8 +64,8 @@ else
|
|
64
64
|
fn = File.join(path, 'serverside.rb')
|
65
65
|
require fn if File.file?(fn)
|
66
66
|
end
|
67
|
-
unless ServerSide::
|
68
|
-
ServerSide.route_default {serve_static('.'/@path)}
|
67
|
+
unless ServerSide::Router.has_routes?
|
68
|
+
ServerSide::Router.route_default {serve_static('.'/@path)}
|
69
69
|
end
|
70
70
|
|
71
71
|
if $cmd == 'serve'
|
@@ -75,8 +75,8 @@ if $cmd == 'serve'
|
|
75
75
|
end
|
76
76
|
puts "Serving at #{$cmd_config[:host]}:#{$cmd_config[:ports].begin}..."
|
77
77
|
trap('INT') {exit}
|
78
|
-
ServerSide::Server.new($cmd_config[:host], $cmd_config[:ports].begin,
|
79
|
-
ServerSide::
|
78
|
+
ServerSide::HTTP::Server.new($cmd_config[:host], $cmd_config[:ports].begin,
|
79
|
+
ServerSide::Router)
|
80
80
|
else
|
81
81
|
ServerSide::Application.daemonize($cmd_config, $cmd)
|
82
82
|
end
|
@@ -55,13 +55,13 @@
|
|
55
55
|
<tr class="top-aligned-row">
|
56
56
|
<td><strong>In:</strong></td>
|
57
57
|
<td>
|
58
|
-
<a href="../files/lib/serverside/daemon_rb.html">
|
59
|
-
lib/serverside/daemon.rb
|
60
|
-
</a>
|
61
|
-
<br />
|
62
58
|
<a href="../files/lib/serverside/cluster_rb.html">
|
63
59
|
lib/serverside/cluster.rb
|
64
60
|
</a>
|
61
|
+
<br />
|
62
|
+
<a href="../files/lib/serverside/daemon_rb.html">
|
63
|
+
lib/serverside/daemon.rb
|
64
|
+
</a>
|
65
65
|
<br />
|
66
66
|
</td>
|
67
67
|
</tr>
|
@@ -58,10 +58,6 @@
|
|
58
58
|
<a href="../files/lib/serverside_rb.html">
|
59
59
|
lib/serverside.rb
|
60
60
|
</a>
|
61
|
-
<br />
|
62
|
-
<a href="../files/lib/serverside/server_rb.html">
|
63
|
-
lib/serverside/server.rb
|
64
|
-
</a>
|
65
61
|
<br />
|
66
62
|
<a href="../files/lib/serverside/application_rb.html">
|
67
63
|
lib/serverside/application.rb
|
@@ -71,13 +67,21 @@
|
|
71
67
|
lib/serverside/connection.rb
|
72
68
|
</a>
|
73
69
|
<br />
|
74
|
-
<a href="../files/lib/serverside/
|
75
|
-
lib/serverside/
|
70
|
+
<a href="../files/lib/serverside/request_rb.html">
|
71
|
+
lib/serverside/request.rb
|
76
72
|
</a>
|
77
73
|
<br />
|
78
74
|
<a href="../files/lib/serverside/routing_rb.html">
|
79
75
|
lib/serverside/routing.rb
|
80
76
|
</a>
|
77
|
+
<br />
|
78
|
+
<a href="../files/lib/serverside/server_rb.html">
|
79
|
+
lib/serverside/server.rb
|
80
|
+
</a>
|
81
|
+
<br />
|
82
|
+
<a href="../files/lib/serverside/static_rb.html">
|
83
|
+
lib/serverside/static.rb
|
84
|
+
</a>
|
81
85
|
<br />
|
82
86
|
<a href="../files/lib/serverside/template_rb.html">
|
83
87
|
lib/serverside/template.rb
|
@@ -103,7 +107,8 @@ easy to create custom light-weight web applications. It contains the
|
|
103
107
|
following functionalities:
|
104
108
|
</p>
|
105
109
|
<ol>
|
106
|
-
<li>A fast multithreaded HTTP server with
|
110
|
+
<li>A fast multithreaded <a href="ServerSide/HTTP.html">HTTP</a> server with
|
111
|
+
support for persistent connections
|
107
112
|
|
108
113
|
</li>
|
109
114
|
</ol>
|
@@ -130,14 +135,6 @@ and streaming.
|
|
130
135
|
|
131
136
|
</div>
|
132
137
|
|
133
|
-
<div id="method-list">
|
134
|
-
<h3 class="section-bar">Methods</h3>
|
135
|
-
|
136
|
-
<div class="name-list">
|
137
|
-
<a href="#M000022">route</a>
|
138
|
-
<a href="#M000023">route_default</a>
|
139
|
-
</div>
|
140
|
-
</div>
|
141
138
|
|
142
139
|
</div>
|
143
140
|
|
@@ -150,9 +147,9 @@ and streaming.
|
|
150
147
|
<h3 class="section-bar">Classes and Modules</h3>
|
151
148
|
|
152
149
|
Module <a href="ServerSide/Application.html" class="link">ServerSide::Application</a><br />
|
153
|
-
Module <a href="ServerSide/
|
150
|
+
Module <a href="ServerSide/HTTP.html" class="link">ServerSide::HTTP</a><br />
|
154
151
|
Module <a href="ServerSide/StaticFiles.html" class="link">ServerSide::StaticFiles</a><br />
|
155
|
-
Class <a href="ServerSide/
|
152
|
+
Class <a href="ServerSide/Router.html" class="link">ServerSide::Router</a><br />
|
156
153
|
Class <a href="ServerSide/Template.html" class="link">ServerSide::Template</a><br />
|
157
154
|
|
158
155
|
</div>
|
@@ -164,63 +161,6 @@ Class <a href="ServerSide/Template.html" class="link">ServerSide::Template</a><b
|
|
164
161
|
|
165
162
|
|
166
163
|
<!-- if method_list -->
|
167
|
-
<div id="methods">
|
168
|
-
<h3 class="section-bar">Public Class methods</h3>
|
169
|
-
|
170
|
-
<div id="method-M000022" class="method-detail">
|
171
|
-
<a name="M000022"></a>
|
172
|
-
|
173
|
-
<div class="method-heading">
|
174
|
-
<a href="#M000022" class="method-signature">
|
175
|
-
<span class="method-name">route</span><span class="method-args">(rule, &block)</span>
|
176
|
-
</a>
|
177
|
-
</div>
|
178
|
-
|
179
|
-
<div class="method-description">
|
180
|
-
<p>
|
181
|
-
Adds a routing rule. This is a convenience method.
|
182
|
-
</p>
|
183
|
-
<p><a class="source-toggle" href="#"
|
184
|
-
onclick="toggleCode('M000022-source');return false;">[Source]</a></p>
|
185
|
-
<div class="method-source-code" id="M000022-source">
|
186
|
-
<pre>
|
187
|
-
<span class="ruby-comment cmt"># File lib/serverside/routing.rb, line 132</span>
|
188
|
-
132: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">route</span>(<span class="ruby-identifier">rule</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
|
189
|
-
133: <span class="ruby-constant">Connection</span><span class="ruby-operator">::</span><span class="ruby-constant">Router</span>.<span class="ruby-identifier">route</span>(<span class="ruby-identifier">rule</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
|
190
|
-
134: <span class="ruby-keyword kw">end</span>
|
191
|
-
</pre>
|
192
|
-
</div>
|
193
|
-
</div>
|
194
|
-
</div>
|
195
|
-
|
196
|
-
<div id="method-M000023" class="method-detail">
|
197
|
-
<a name="M000023"></a>
|
198
|
-
|
199
|
-
<div class="method-heading">
|
200
|
-
<a href="#M000023" class="method-signature">
|
201
|
-
<span class="method-name">route_default</span><span class="method-args">(&block)</span>
|
202
|
-
</a>
|
203
|
-
</div>
|
204
|
-
|
205
|
-
<div class="method-description">
|
206
|
-
<p>
|
207
|
-
Sets the default request handler. This is a convenience method.
|
208
|
-
</p>
|
209
|
-
<p><a class="source-toggle" href="#"
|
210
|
-
onclick="toggleCode('M000023-source');return false;">[Source]</a></p>
|
211
|
-
<div class="method-source-code" id="M000023-source">
|
212
|
-
<pre>
|
213
|
-
<span class="ruby-comment cmt"># File lib/serverside/routing.rb, line 137</span>
|
214
|
-
137: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">route_default</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
|
215
|
-
138: <span class="ruby-constant">Connection</span><span class="ruby-operator">::</span><span class="ruby-constant">Router</span>.<span class="ruby-identifier">route_default</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
|
216
|
-
139: <span class="ruby-keyword kw">end</span>
|
217
|
-
</pre>
|
218
|
-
</div>
|
219
|
-
</div>
|
220
|
-
</div>
|
221
|
-
|
222
|
-
|
223
|
-
</div>
|
224
164
|
|
225
165
|
|
226
166
|
</div>
|
@@ -80,8 +80,8 @@
|
|
80
80
|
<h3 class="section-bar">Methods</h3>
|
81
81
|
|
82
82
|
<div class="name-list">
|
83
|
-
<a href="#
|
84
|
-
<a href="#
|
83
|
+
<a href="#M000026">config=</a>
|
84
|
+
<a href="#M000027">daemonize</a>
|
85
85
|
</div>
|
86
86
|
</div>
|
87
87
|
|
@@ -103,19 +103,19 @@
|
|
103
103
|
<div id="methods">
|
104
104
|
<h3 class="section-bar">Public Class methods</h3>
|
105
105
|
|
106
|
-
<div id="method-
|
107
|
-
<a name="
|
106
|
+
<div id="method-M000026" class="method-detail">
|
107
|
+
<a name="M000026"></a>
|
108
108
|
|
109
109
|
<div class="method-heading">
|
110
|
-
<a href="#
|
110
|
+
<a href="#M000026" class="method-signature">
|
111
111
|
<span class="method-name">config=</span><span class="method-args">(c)</span>
|
112
112
|
</a>
|
113
113
|
</div>
|
114
114
|
|
115
115
|
<div class="method-description">
|
116
116
|
<p><a class="source-toggle" href="#"
|
117
|
-
onclick="toggleCode('
|
118
|
-
<div class="method-source-code" id="
|
117
|
+
onclick="toggleCode('M000026-source');return false;">[Source]</a></p>
|
118
|
+
<div class="method-source-code" id="M000026-source">
|
119
119
|
<pre>
|
120
120
|
<span class="ruby-comment cmt"># File lib/serverside/application.rb, line 9</span>
|
121
121
|
9: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">config=</span>(<span class="ruby-identifier">c</span>)
|
@@ -126,19 +126,19 @@
|
|
126
126
|
</div>
|
127
127
|
</div>
|
128
128
|
|
129
|
-
<div id="method-
|
130
|
-
<a name="
|
129
|
+
<div id="method-M000027" class="method-detail">
|
130
|
+
<a name="M000027"></a>
|
131
131
|
|
132
132
|
<div class="method-heading">
|
133
|
-
<a href="#
|
133
|
+
<a href="#M000027" class="method-signature">
|
134
134
|
<span class="method-name">daemonize</span><span class="method-args">(config, cmd)</span>
|
135
135
|
</a>
|
136
136
|
</div>
|
137
137
|
|
138
138
|
<div class="method-description">
|
139
139
|
<p><a class="source-toggle" href="#"
|
140
|
-
onclick="toggleCode('
|
141
|
-
<div class="method-source-code" id="
|
140
|
+
onclick="toggleCode('M000027-source');return false;">[Source]</a></p>
|
141
|
+
<div class="method-source-code" id="M000027-source">
|
142
142
|
<pre>
|
143
143
|
<span class="ruby-comment cmt"># File lib/serverside/application.rb, line 13</span>
|
144
144
|
13: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">daemonize</span>(<span class="ruby-identifier">config</span>, <span class="ruby-identifier">cmd</span>)
|
@@ -146,7 +146,7 @@
|
|
146
146
|
15: <span class="ruby-identifier">daemon_class</span> = <span class="ruby-constant">Class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Daemon</span><span class="ruby-operator">::</span><span class="ruby-constant">Cluster</span>) <span class="ruby-keyword kw">do</span>
|
147
147
|
16: <span class="ruby-identifier">meta_def</span>(<span class="ruby-identifier">:pid_fn</span>) {<span class="ruby-constant">Daemon</span><span class="ruby-operator">::</span><span class="ruby-constant">WorkingDirectory</span><span class="ruby-operator">/</span><span class="ruby-value str">'serverside.pid'</span>}
|
148
148
|
17: <span class="ruby-identifier">meta_def</span>(<span class="ruby-identifier">:server_loop</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">port</span><span class="ruby-operator">|</span>
|
149
|
-
18: <span class="ruby-constant">ServerSide</span><span class="ruby-operator">::</span><span class="ruby-constant">Server</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">config</span>[<span class="ruby-identifier">:host</span>], <span class="ruby-identifier">port</span>, <span class="ruby-constant">ServerSide</span><span class="ruby-operator">::</span><span class="ruby-constant">
|
149
|
+
18: <span class="ruby-constant">ServerSide</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Server</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">config</span>[<span class="ruby-identifier">:host</span>], <span class="ruby-identifier">port</span>, <span class="ruby-constant">ServerSide</span><span class="ruby-operator">::</span><span class="ruby-constant">Router</span>)
|
150
150
|
19: <span class="ruby-keyword kw">end</span>
|
151
151
|
20: <span class="ruby-identifier">meta_def</span>(<span class="ruby-identifier">:ports</span>) {<span class="ruby-identifier">config</span>[<span class="ruby-identifier">:ports</span>]}
|
152
152
|
21: <span class="ruby-keyword kw">end</span>
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
7
7
|
<head>
|
8
|
-
<title>Module: ServerSide::
|
8
|
+
<title>Module: ServerSide::HTTP</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<meta http-equiv="Content-Script-Type" content="text/javascript" />
|
11
11
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
@@ -50,7 +50,7 @@
|
|
50
50
|
<table class="header-table">
|
51
51
|
<tr class="top-aligned-row">
|
52
52
|
<td><strong>Module</strong></td>
|
53
|
-
<td class="class-name-in-header">ServerSide::
|
53
|
+
<td class="class-name-in-header">ServerSide::HTTP</td>
|
54
54
|
</tr>
|
55
55
|
<tr class="top-aligned-row">
|
56
56
|
<td><strong>In:</strong></td>
|
@@ -59,8 +59,12 @@
|
|
59
59
|
lib/serverside/connection.rb
|
60
60
|
</a>
|
61
61
|
<br />
|
62
|
-
<a href="../../files/lib/serverside/
|
63
|
-
lib/serverside/
|
62
|
+
<a href="../../files/lib/serverside/request_rb.html">
|
63
|
+
lib/serverside/request.rb
|
64
|
+
</a>
|
65
|
+
<br />
|
66
|
+
<a href="../../files/lib/serverside/server_rb.html">
|
67
|
+
lib/serverside/server.rb
|
64
68
|
</a>
|
65
69
|
<br />
|
66
70
|
</td>
|
@@ -76,17 +80,6 @@
|
|
76
80
|
|
77
81
|
<div id="contextContent">
|
78
82
|
|
79
|
-
<div id="description">
|
80
|
-
<p>
|
81
|
-
The <a href="Connection.html">Connection</a> module takes care of HTTP
|
82
|
-
connection. While most HTTP servers (at least the OO ones) will define
|
83
|
-
separate classes for request and response, I chose to use the concept of a
|
84
|
-
connection both for better performance, and also because a single
|
85
|
-
connection might handle multiple requests, if using HTTP 1.1 persistent
|
86
|
-
connection.
|
87
|
-
</p>
|
88
|
-
|
89
|
-
</div>
|
90
83
|
|
91
84
|
|
92
85
|
</div>
|
@@ -102,9 +95,10 @@ connection.
|
|
102
95
|
<div id="class-list">
|
103
96
|
<h3 class="section-bar">Classes and Modules</h3>
|
104
97
|
|
105
|
-
Module <a href="
|
106
|
-
Class <a href="Connection
|
107
|
-
Class <a href="
|
98
|
+
Module <a href="HTTP/Const.html" class="link">ServerSide::HTTP::Const</a><br />
|
99
|
+
Class <a href="HTTP/Connection.html" class="link">ServerSide::HTTP::Connection</a><br />
|
100
|
+
Class <a href="HTTP/Request.html" class="link">ServerSide::HTTP::Request</a><br />
|
101
|
+
Class <a href="HTTP/Server.html" class="link">ServerSide::HTTP::Server</a><br />
|
108
102
|
|
109
103
|
</div>
|
110
104
|
|
@@ -0,0 +1,200 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
7
|
+
<head>
|
8
|
+
<title>Class: ServerSide::HTTP::Connection</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<meta http-equiv="Content-Script-Type" content="text/javascript" />
|
11
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
12
|
+
<script type="text/javascript">
|
13
|
+
// <![CDATA[
|
14
|
+
|
15
|
+
function popupCode( url ) {
|
16
|
+
window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
|
17
|
+
}
|
18
|
+
|
19
|
+
function toggleCode( id ) {
|
20
|
+
if ( document.getElementById )
|
21
|
+
elem = document.getElementById( id );
|
22
|
+
else if ( document.all )
|
23
|
+
elem = eval( "document.all." + id );
|
24
|
+
else
|
25
|
+
return false;
|
26
|
+
|
27
|
+
elemStyle = elem.style;
|
28
|
+
|
29
|
+
if ( elemStyle.display != "block" ) {
|
30
|
+
elemStyle.display = "block"
|
31
|
+
} else {
|
32
|
+
elemStyle.display = "none"
|
33
|
+
}
|
34
|
+
|
35
|
+
return true;
|
36
|
+
}
|
37
|
+
|
38
|
+
// Make codeblocks hidden by default
|
39
|
+
document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
|
40
|
+
|
41
|
+
// ]]>
|
42
|
+
</script>
|
43
|
+
|
44
|
+
</head>
|
45
|
+
<body>
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
<div id="classHeader">
|
50
|
+
<table class="header-table">
|
51
|
+
<tr class="top-aligned-row">
|
52
|
+
<td><strong>Class</strong></td>
|
53
|
+
<td class="class-name-in-header">ServerSide::HTTP::Connection</td>
|
54
|
+
</tr>
|
55
|
+
<tr class="top-aligned-row">
|
56
|
+
<td><strong>In:</strong></td>
|
57
|
+
<td>
|
58
|
+
<a href="../../../files/lib/serverside/connection_rb.html">
|
59
|
+
lib/serverside/connection.rb
|
60
|
+
</a>
|
61
|
+
<br />
|
62
|
+
</td>
|
63
|
+
</tr>
|
64
|
+
|
65
|
+
<tr class="top-aligned-row">
|
66
|
+
<td><strong>Parent:</strong></td>
|
67
|
+
<td>
|
68
|
+
<a href="../../Object.html">
|
69
|
+
Object
|
70
|
+
</a>
|
71
|
+
</td>
|
72
|
+
</tr>
|
73
|
+
</table>
|
74
|
+
</div>
|
75
|
+
<!-- banner header -->
|
76
|
+
|
77
|
+
<div id="bodyContent">
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
<div id="contextContent">
|
82
|
+
|
83
|
+
<div id="description">
|
84
|
+
<p>
|
85
|
+
The <a href="Connection.html">Connection</a> class represents <a
|
86
|
+
href="../HTTP.html">HTTP</a> connections. Each connection instance creates
|
87
|
+
a separate thread for execution and processes incoming requests in a loop
|
88
|
+
until the connection is closed by either server or client, thus
|
89
|
+
implementing <a href="../HTTP.html">HTTP</a> 1.1 persistent connections.
|
90
|
+
</p>
|
91
|
+
|
92
|
+
</div>
|
93
|
+
|
94
|
+
|
95
|
+
</div>
|
96
|
+
|
97
|
+
<div id="method-list">
|
98
|
+
<h3 class="section-bar">Methods</h3>
|
99
|
+
|
100
|
+
<div class="name-list">
|
101
|
+
<a href="#M000039">new</a>
|
102
|
+
<a href="#M000040">process</a>
|
103
|
+
</div>
|
104
|
+
</div>
|
105
|
+
|
106
|
+
</div>
|
107
|
+
|
108
|
+
|
109
|
+
<!-- if includes -->
|
110
|
+
|
111
|
+
<div id="section">
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
<!-- if method_list -->
|
121
|
+
<div id="methods">
|
122
|
+
<h3 class="section-bar">Public Class methods</h3>
|
123
|
+
|
124
|
+
<div id="method-M000039" class="method-detail">
|
125
|
+
<a name="M000039"></a>
|
126
|
+
|
127
|
+
<div class="method-heading">
|
128
|
+
<a href="#M000039" class="method-signature">
|
129
|
+
<span class="method-name">new</span><span class="method-args">(conn, request_class)</span>
|
130
|
+
</a>
|
131
|
+
</div>
|
132
|
+
|
133
|
+
<div class="method-description">
|
134
|
+
<p>
|
135
|
+
Initializes the request instance. A new thread is created for processing
|
136
|
+
requests.
|
137
|
+
</p>
|
138
|
+
<p><a class="source-toggle" href="#"
|
139
|
+
onclick="toggleCode('M000039-source');return false;">[Source]</a></p>
|
140
|
+
<div class="method-source-code" id="M000039-source">
|
141
|
+
<pre>
|
142
|
+
<span class="ruby-comment cmt"># File lib/serverside/connection.rb, line 13</span>
|
143
|
+
13: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">conn</span>, <span class="ruby-identifier">request_class</span>)
|
144
|
+
14: <span class="ruby-ivar">@conn</span>, <span class="ruby-ivar">@request_class</span> = <span class="ruby-identifier">conn</span>, <span class="ruby-identifier">request_class</span>
|
145
|
+
15: <span class="ruby-ivar">@thread</span> = <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> {<span class="ruby-identifier">process</span>}
|
146
|
+
16: <span class="ruby-keyword kw">end</span>
|
147
|
+
</pre>
|
148
|
+
</div>
|
149
|
+
</div>
|
150
|
+
</div>
|
151
|
+
|
152
|
+
<h3 class="section-bar">Public Instance methods</h3>
|
153
|
+
|
154
|
+
<div id="method-M000040" class="method-detail">
|
155
|
+
<a name="M000040"></a>
|
156
|
+
|
157
|
+
<div class="method-heading">
|
158
|
+
<a href="#M000040" class="method-signature">
|
159
|
+
<span class="method-name">process</span><span class="method-args">()</span>
|
160
|
+
</a>
|
161
|
+
</div>
|
162
|
+
|
163
|
+
<div class="method-description">
|
164
|
+
<p>
|
165
|
+
Processes incoming requests by parsing them and then responding. If any
|
166
|
+
error occurs, or the connection is not persistent, the connection is
|
167
|
+
closed.
|
168
|
+
</p>
|
169
|
+
<p><a class="source-toggle" href="#"
|
170
|
+
onclick="toggleCode('M000040-source');return false;">[Source]</a></p>
|
171
|
+
<div class="method-source-code" id="M000040-source">
|
172
|
+
<pre>
|
173
|
+
<span class="ruby-comment cmt"># File lib/serverside/connection.rb, line 21</span>
|
174
|
+
21: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process</span>
|
175
|
+
22: <span class="ruby-keyword kw">while</span> <span class="ruby-keyword kw">true</span>
|
176
|
+
23: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@request_class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@conn</span>).<span class="ruby-identifier">process</span>
|
177
|
+
24: <span class="ruby-keyword kw">end</span>
|
178
|
+
25: <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">e</span>
|
179
|
+
26: <span class="ruby-comment cmt"># We don't care. Just close the connection.</span>
|
180
|
+
27: <span class="ruby-keyword kw">ensure</span>
|
181
|
+
28: <span class="ruby-ivar">@conn</span>.<span class="ruby-identifier">close</span>
|
182
|
+
29: <span class="ruby-keyword kw">end</span>
|
183
|
+
</pre>
|
184
|
+
</div>
|
185
|
+
</div>
|
186
|
+
</div>
|
187
|
+
|
188
|
+
|
189
|
+
</div>
|
190
|
+
|
191
|
+
|
192
|
+
</div>
|
193
|
+
|
194
|
+
|
195
|
+
<div id="validator-badges">
|
196
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
197
|
+
</div>
|
198
|
+
|
199
|
+
</body>
|
200
|
+
</html>
|