colouringcode-passenger 0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. data/NEWS +129 -0
  2. data/Rakefile +2 -2
  3. data/bin/passenger-install-apache2-module +1 -0
  4. data/bin/passenger-install-nginx-module +4 -2
  5. data/ext/apache2/Hooks.cpp +4 -2
  6. data/ext/common/ApplicationPoolServer.h +1 -1
  7. data/ext/common/ApplicationPoolServerExecutable.cpp +1 -1
  8. data/ext/common/MessageChannel.h +48 -4
  9. data/ext/common/StandardApplicationPool.h +4 -2
  10. data/ext/common/Version.h +1 -1
  11. data/ext/nginx/Configuration.c +1 -1
  12. data/ext/nginx/HttpStatusExtractor.h +1 -0
  13. data/ext/nginx/ScgiRequestParser.h +1 -0
  14. data/ext/oxt/system_calls.cpp +11 -0
  15. data/ext/oxt/system_calls.hpp +2 -1
  16. data/ext/oxt/thread.hpp +97 -1
  17. data/ext/phusion_passenger/native_support.c +30 -1
  18. data/lib/phusion_passenger/constants.rb +1 -1
  19. data/lib/phusion_passenger/dependencies.rb +32 -0
  20. data/lib/phusion_passenger/message_channel.rb +45 -3
  21. data/lib/phusion_passenger/platform_info.rb +1 -1
  22. data/lib/phusion_passenger/rack/application_spawner.rb +10 -4
  23. data/lib/phusion_passenger/rack/request_handler.rb +2 -5
  24. data/lib/phusion_passenger/railz/application_spawner.rb +59 -7
  25. data/lib/phusion_passenger/utils.rb +70 -16
  26. data/{vendor/rack-1.0.0-git/lib/rack → lib/phusion_passenger/utils}/rewindable_input.rb +34 -9
  27. data/test/ApplicationPoolTest.cpp +1 -1
  28. data/test/MessageChannelTest.cpp +9 -1
  29. data/test/stub/message_channel.rb +1 -1
  30. data/test/stub/message_channel_2.rb +1 -1
  31. data/test/stub/message_channel_3.rb +2 -2
  32. metadata +43 -155
  33. data/doc/Architectural overview.html +0 -1
  34. data/doc/rdoc/classes/ConditionVariable.html +0 -194
  35. data/doc/rdoc/classes/Exception.html +0 -120
  36. data/doc/rdoc/classes/GC.html +0 -113
  37. data/doc/rdoc/classes/IO.html +0 -169
  38. data/doc/rdoc/classes/PhusionPassenger.html +0 -238
  39. data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +0 -153
  40. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +0 -517
  41. data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +0 -719
  42. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerAlreadyStarted.html +0 -97
  43. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerError.html +0 -96
  44. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerNotStarted.html +0 -97
  45. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/UnknownMessage.html +0 -96
  46. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +0 -598
  47. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +0 -140
  48. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +0 -317
  49. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess/Instance.html +0 -138
  50. data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +0 -154
  51. data/doc/rdoc/classes/PhusionPassenger/Application.html +0 -283
  52. data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +0 -172
  53. data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +0 -145
  54. data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +0 -181
  55. data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +0 -141
  56. data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +0 -92
  57. data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +0 -489
  58. data/doc/rdoc/classes/PhusionPassenger/NativeSupport.html +0 -350
  59. data/doc/rdoc/classes/PhusionPassenger/Rack.html +0 -91
  60. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +0 -188
  61. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +0 -199
  62. data/doc/rdoc/classes/PhusionPassenger/Railz.html +0 -95
  63. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +0 -438
  64. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner/Error.html +0 -98
  65. data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +0 -200
  66. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +0 -436
  67. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner/Error.html +0 -98
  68. data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +0 -155
  69. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +0 -402
  70. data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +0 -125
  71. data/doc/rdoc/classes/PhusionPassenger/Utils.html +0 -803
  72. data/doc/rdoc/classes/PhusionPassenger/Utils/PseudoIO.html +0 -169
  73. data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +0 -140
  74. data/doc/rdoc/classes/PhusionPassenger/WSGI.html +0 -89
  75. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +0 -188
  76. data/doc/rdoc/classes/PlatformInfo.html +0 -866
  77. data/doc/rdoc/classes/RakeExtensions.html +0 -197
  78. data/doc/rdoc/classes/Signal.html +0 -131
  79. data/doc/rdoc/created.rid +0 -1
  80. data/doc/rdoc/files/DEVELOPERS_TXT.html +0 -255
  81. data/doc/rdoc/files/README.html +0 -175
  82. data/doc/rdoc/files/ext/phusion_passenger/native_support_c.html +0 -92
  83. data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +0 -129
  84. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +0 -129
  85. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +0 -126
  86. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +0 -128
  87. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +0 -130
  88. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +0 -122
  89. data/doc/rdoc/files/lib/phusion_passenger/application_rb.html +0 -127
  90. data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +0 -126
  91. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +0 -122
  92. data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +0 -134
  93. data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +0 -122
  94. data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +0 -122
  95. data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +0 -126
  96. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +0 -120
  97. data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +0 -122
  98. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +0 -127
  99. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +0 -133
  100. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +0 -125
  101. data/doc/rdoc/files/lib/phusion_passenger/railz/application_spawner_rb.html +0 -140
  102. data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +0 -126
  103. data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +0 -145
  104. data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +0 -125
  105. data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +0 -122
  106. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +0 -159
  107. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +0 -174
  108. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +0 -129
  109. data/doc/rdoc/files/misc/rake/extensions_rb.html +0 -130
  110. data/doc/rdoc/fr_class_index.html +0 -91
  111. data/doc/rdoc/fr_file_index.html +0 -76
  112. data/doc/rdoc/fr_method_index.html +0 -205
  113. data/doc/rdoc/index.html +0 -26
  114. data/doc/rdoc/rdoc-style.css +0 -187
  115. data/vendor/README +0 -13
  116. data/vendor/README_FOR_PACKAGERS +0 -1
  117. data/vendor/rack-1.0.0-git/COPYING +0 -18
  118. data/vendor/rack-1.0.0-git/KNOWN-ISSUES +0 -18
  119. data/vendor/rack-1.0.0-git/README +0 -353
  120. data/vendor/rack-1.0.0-git/Rakefile +0 -164
  121. data/vendor/rack-1.0.0-git/lib/rack.rb +0 -90
  122. data/vendor/rack-1.0.0-git/lib/rack/adapter/camping.rb +0 -22
  123. data/vendor/rack-1.0.0-git/lib/rack/auth/abstract/handler.rb +0 -37
  124. data/vendor/rack-1.0.0-git/lib/rack/auth/abstract/request.rb +0 -37
  125. data/vendor/rack-1.0.0-git/lib/rack/auth/basic.rb +0 -58
  126. data/vendor/rack-1.0.0-git/lib/rack/auth/digest/md5.rb +0 -124
  127. data/vendor/rack-1.0.0-git/lib/rack/auth/digest/nonce.rb +0 -51
  128. data/vendor/rack-1.0.0-git/lib/rack/auth/digest/params.rb +0 -55
  129. data/vendor/rack-1.0.0-git/lib/rack/auth/digest/request.rb +0 -40
  130. data/vendor/rack-1.0.0-git/lib/rack/auth/openid.rb +0 -487
  131. data/vendor/rack-1.0.0-git/lib/rack/builder.rb +0 -63
  132. data/vendor/rack-1.0.0-git/lib/rack/cascade.rb +0 -41
  133. data/vendor/rack-1.0.0-git/lib/rack/chunked.rb +0 -49
  134. data/vendor/rack-1.0.0-git/lib/rack/commonlogger.rb +0 -52
  135. data/vendor/rack-1.0.0-git/lib/rack/conditionalget.rb +0 -47
  136. data/vendor/rack-1.0.0-git/lib/rack/content_length.rb +0 -29
  137. data/vendor/rack-1.0.0-git/lib/rack/content_type.rb +0 -23
  138. data/vendor/rack-1.0.0-git/lib/rack/deflater.rb +0 -96
  139. data/vendor/rack-1.0.0-git/lib/rack/directory.rb +0 -153
  140. data/vendor/rack-1.0.0-git/lib/rack/file.rb +0 -88
  141. data/vendor/rack-1.0.0-git/lib/rack/handler.rb +0 -69
  142. data/vendor/rack-1.0.0-git/lib/rack/handler/cgi.rb +0 -61
  143. data/vendor/rack-1.0.0-git/lib/rack/handler/evented_mongrel.rb +0 -8
  144. data/vendor/rack-1.0.0-git/lib/rack/handler/fastcgi.rb +0 -88
  145. data/vendor/rack-1.0.0-git/lib/rack/handler/lsws.rb +0 -55
  146. data/vendor/rack-1.0.0-git/lib/rack/handler/mongrel.rb +0 -84
  147. data/vendor/rack-1.0.0-git/lib/rack/handler/scgi.rb +0 -59
  148. data/vendor/rack-1.0.0-git/lib/rack/handler/swiftiplied_mongrel.rb +0 -8
  149. data/vendor/rack-1.0.0-git/lib/rack/handler/thin.rb +0 -18
  150. data/vendor/rack-1.0.0-git/lib/rack/handler/webrick.rb +0 -67
  151. data/vendor/rack-1.0.0-git/lib/rack/head.rb +0 -19
  152. data/vendor/rack-1.0.0-git/lib/rack/lint.rb +0 -537
  153. data/vendor/rack-1.0.0-git/lib/rack/lobster.rb +0 -65
  154. data/vendor/rack-1.0.0-git/lib/rack/lock.rb +0 -16
  155. data/vendor/rack-1.0.0-git/lib/rack/methodoverride.rb +0 -27
  156. data/vendor/rack-1.0.0-git/lib/rack/mime.rb +0 -204
  157. data/vendor/rack-1.0.0-git/lib/rack/mock.rb +0 -184
  158. data/vendor/rack-1.0.0-git/lib/rack/recursive.rb +0 -57
  159. data/vendor/rack-1.0.0-git/lib/rack/reloader.rb +0 -106
  160. data/vendor/rack-1.0.0-git/lib/rack/request.rb +0 -248
  161. data/vendor/rack-1.0.0-git/lib/rack/response.rb +0 -183
  162. data/vendor/rack-1.0.0-git/lib/rack/session/abstract/id.rb +0 -142
  163. data/vendor/rack-1.0.0-git/lib/rack/session/cookie.rb +0 -91
  164. data/vendor/rack-1.0.0-git/lib/rack/session/memcache.rb +0 -109
  165. data/vendor/rack-1.0.0-git/lib/rack/session/pool.rb +0 -100
  166. data/vendor/rack-1.0.0-git/lib/rack/showexceptions.rb +0 -349
  167. data/vendor/rack-1.0.0-git/lib/rack/showstatus.rb +0 -106
  168. data/vendor/rack-1.0.0-git/lib/rack/static.rb +0 -38
  169. data/vendor/rack-1.0.0-git/lib/rack/urlmap.rb +0 -55
  170. data/vendor/rack-1.0.0-git/lib/rack/utils.rb +0 -522
@@ -1,350 +0,0 @@
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
- <html>
6
- <head>
7
- <title>Module: PhusionPassenger::NativeSupport</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
-
11
- <script language="JavaScript" type="text/javascript">
12
- // <![CDATA[
13
-
14
- function toggleSource( id )
15
- {
16
- var elem
17
- var link
18
-
19
- if( document.getElementById )
20
- {
21
- elem = document.getElementById( id )
22
- link = document.getElementById( "l_" + id )
23
- }
24
- else if ( document.all )
25
- {
26
- elem = eval( "document.all." + id )
27
- link = eval( "document.all.l_" + id )
28
- }
29
- else
30
- return false;
31
-
32
- if( elem.style.display == "block" )
33
- {
34
- elem.style.display = "none"
35
- link.innerHTML = "show source"
36
- }
37
- else
38
- {
39
- elem.style.display = "block"
40
- link.innerHTML = "hide source"
41
- }
42
- }
43
-
44
- function openCode( url )
45
- {
46
- window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
47
- }
48
- // ]]>
49
- </script>
50
- </head>
51
-
52
- <body>
53
- <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
54
- <td class="file-title"><span class="file-title-prefix">Module</span><br />PhusionPassenger::NativeSupport</td>
55
- <td align="right">
56
- <table cellspacing="0" cellpadding="2">
57
- <tr valign="top">
58
- <td>In:</td>
59
- <td>
60
- <a href="../../files/ext/phusion_passenger/native_support_c.html">ext/phusion_passenger/native_support.c</a>
61
- </td>
62
- </tr>
63
- </table>
64
- </td>
65
- </tr>
66
- </table>
67
- <!-- banner header -->
68
-
69
- <div id="bodyContent">
70
- <div id="content">
71
-
72
- <div class="description"><p>
73
- Utility functions for accessing system functionality.
74
- </p>
75
- </div>
76
-
77
-
78
-
79
- <div class="sectiontitle">Methods</div>
80
- <ul>
81
- <li><a href="#M000047">accept</a></li>
82
- <li><a href="#M000048">close_all_file_descriptors</a></li>
83
- <li><a href="#M000046">create_unix_socket</a></li>
84
- <li><a href="#M000049">disable_stdio_buffering</a></li>
85
- <li><a href="#M000045">recv_fd</a></li>
86
- <li><a href="#M000044">send_fd</a></li>
87
- </ul>
88
-
89
-
90
-
91
-
92
- <div class="sectiontitle">Constants</div>
93
- <table border='0' cellpadding='5'>
94
- <tr valign='top'>
95
- <td class="attr-name">UNIX_PATH_MAX</td>
96
- <td>=</td>
97
- <td class="attr-value">INT2NUM(sizeof(addr.sun_path))</td>
98
- </tr>
99
- <tr valign='top'>
100
- <td>&nbsp;</td>
101
- <td colspan="2" class="attr-desc">
102
- The maximum length of a Unix socket path, including terminating null.
103
-
104
- </td>
105
- </tr>
106
- </table>
107
-
108
-
109
- <div class="sectiontitle">Public Class methods</div>
110
- <div class="method">
111
- <div class="title">
112
- <a name="M000047"></a><b> accept(fileno)<br />
113
- </b>
114
- </div>
115
- <div class="description">
116
- <p>
117
- Accept a new client from the given socket.
118
- </p>
119
- <ul>
120
- <li><tt>fileno</tt> (integer): The file descriptor of the server socket.
121
-
122
- </li>
123
- <li>Returns: The accepted client&#8216;s file descriptor.
124
-
125
- </li>
126
- <li>Raises <tt>SystemCallError</tt> if something went wrong.
127
-
128
- </li>
129
- </ul>
130
- </div>
131
- <div class="sourcecode">
132
- <p class="source-link">[ <a href="javascript:toggleSource('M000047_source')" id="l_M000047_source">show source</a> ]</p>
133
- <div id="M000047_source" class="dyn-source">
134
- <pre>
135
- /*
136
- * call-seq: accept(fileno)
137
- *
138
- * Accept a new client from the given socket.
139
- *
140
- * - +fileno+ (integer): The file descriptor of the server socket.
141
- * - Returns: The accepted client's file descriptor.
142
- * - Raises +SystemCallError+ if something went wrong.
143
- */
144
- static VALUE
145
- f_accept(VALUE self, VALUE fileno) {
146
-
147
- </pre>
148
- </div>
149
- </div>
150
- </div>
151
- <div class="method">
152
- <div class="title">
153
- <a name="M000048"></a><b> close_all_file_descriptors(exceptions)<br />
154
- </b>
155
- </div>
156
- <div class="description">
157
- <p>
158
- Close all file descriptors, except those given in the <tt>exceptions</tt>
159
- array. For example, the following would close all file descriptors except
160
- standard input (0) and standard output (1).
161
- </p>
162
- <pre>
163
- close_all_file_descriptors([0, 1])
164
- </pre>
165
- </div>
166
- <div class="sourcecode">
167
- <p class="source-link">[ <a href="javascript:toggleSource('M000048_source')" id="l_M000048_source">show source</a> ]</p>
168
- <div id="M000048_source" class="dyn-source">
169
- <pre>
170
- /*
171
- * call-seq: close_all_file_descriptors(exceptions)
172
- *
173
- * Close all file descriptors, except those given in the +exceptions+ array.
174
- * For example, the following would close all file descriptors except standard
175
- * input (0) and standard output (1).
176
- *
177
- * close_all_file_descriptors([0, 1])
178
- */
179
- static VALUE
180
- close_all_file_descriptors(VALUE self, VALUE exceptions) {
181
-
182
- </pre>
183
- </div>
184
- </div>
185
- </div>
186
- <div class="method">
187
- <div class="title">
188
- <a name="M000046"></a><b> create_unix_socket(filename, backlog)<br />
189
- </b>
190
- </div>
191
- <div class="description">
192
- <p>
193
- Create a SOCK_STREAM server Unix socket. Unlike Ruby&#8216;s UNIXServer
194
- class, this function is also able to create Unix sockets on the abstract
195
- namespace by prepending the filename with a null byte.
196
- </p>
197
- <ul>
198
- <li><tt>filename</tt> (string): The filename of the Unix socket to create.
199
-
200
- </li>
201
- <li><tt>backlog</tt> (integer): The backlog to use for listening on the socket.
202
-
203
- </li>
204
- <li>Returns: The file descriptor of the created Unix socket, as an integer.
205
-
206
- </li>
207
- <li>Raises <tt>SystemCallError</tt> if something went wrong.
208
-
209
- </li>
210
- </ul>
211
- </div>
212
- <div class="sourcecode">
213
- <p class="source-link">[ <a href="javascript:toggleSource('M000046_source')" id="l_M000046_source">show source</a> ]</p>
214
- <div id="M000046_source" class="dyn-source">
215
- <pre>
216
- /*
217
- * call-seq: create_unix_socket(filename, backlog)
218
- *
219
- * Create a SOCK_STREAM server Unix socket. Unlike Ruby's UNIXServer class,
220
- * this function is also able to create Unix sockets on the abstract namespace
221
- * by prepending the filename with a null byte.
222
- *
223
- * - +filename+ (string): The filename of the Unix socket to create.
224
- * - +backlog+ (integer): The backlog to use for listening on the socket.
225
- * - Returns: The file descriptor of the created Unix socket, as an integer.
226
- * - Raises +SystemCallError+ if something went wrong.
227
- */
228
- static VALUE
229
- create_unix_socket(VALUE self, VALUE filename, VALUE backlog) {
230
-
231
- </pre>
232
- </div>
233
- </div>
234
- </div>
235
- <div class="method">
236
- <div class="title">
237
- <a name="M000049"></a><b> disable_stdio_buffering<br />
238
- </b>
239
- </div>
240
- <div class="description">
241
- <p>
242
- Disables any kind of buffering on the C <tt>stdout</tt> and <tt>stderr</tt>
243
- variables, so that +fprintf()+ on <tt>stdout</tt> and <tt>stderr</tt> have
244
- immediate effect.
245
- </p>
246
- </div>
247
- <div class="sourcecode">
248
- <p class="source-link">[ <a href="javascript:toggleSource('M000049_source')" id="l_M000049_source">show source</a> ]</p>
249
- <div id="M000049_source" class="dyn-source">
250
- <pre>
251
- /*
252
- * call-seq: disable_stdio_buffering
253
- *
254
- * Disables any kind of buffering on the C +stdout+ and +stderr+ variables,
255
- * so that +fprintf()+ on +stdout+ and +stderr+ have immediate effect.
256
- */
257
- static VALUE
258
- disable_stdio_buffering() {
259
-
260
- </pre>
261
- </div>
262
- </div>
263
- </div>
264
- <div class="method">
265
- <div class="title">
266
- <a name="M000045"></a><b> recv_fd(socket_fd)<br />
267
- </b>
268
- </div>
269
- <div class="description">
270
- <p>
271
- Receive a file descriptor from the given Unix socket. Returns the received
272
- file descriptor as an integer. Raises <tt>SystemCallError</tt> if something
273
- went wrong.
274
- </p>
275
- <p>
276
- You do not have call this method directly. A convenience wrapper is
277
- provided by <a href="../IO.html#M000006">IO#recv_io</a>.
278
- </p>
279
- </div>
280
- <div class="sourcecode">
281
- <p class="source-link">[ <a href="javascript:toggleSource('M000045_source')" id="l_M000045_source">show source</a> ]</p>
282
- <div id="M000045_source" class="dyn-source">
283
- <pre>
284
- /*
285
- * call-seq: recv_fd(socket_fd)
286
- *
287
- * Receive a file descriptor from the given Unix socket. Returns the received
288
- * file descriptor as an integer. Raises +SystemCallError+ if something went
289
- * wrong.
290
- *
291
- * You do not have call this method directly. A convenience wrapper is
292
- * provided by IO#recv_io.
293
- */
294
- static VALUE
295
- recv_fd(VALUE self, VALUE socket_fd) {
296
-
297
- </pre>
298
- </div>
299
- </div>
300
- </div>
301
- <div class="method">
302
- <div class="title">
303
- <a name="M000044"></a><b> send_fd(socket_fd, fd_to_send)<br />
304
- </b>
305
- </div>
306
- <div class="description">
307
- <p>
308
- Send a file descriptor over the given Unix socket. You do not have to call
309
- this function directly. A convenience wrapper is provided by <a
310
- href="../IO.html#M000005">IO#send_io</a>.
311
- </p>
312
- <ul>
313
- <li><tt>socket_fd</tt> (integer): The file descriptor of the socket.
314
-
315
- </li>
316
- <li><tt>fd_to_send</tt> (integer): The file descriptor to send.
317
-
318
- </li>
319
- <li>Raises <tt>SystemCallError</tt> if something went wrong.
320
-
321
- </li>
322
- </ul>
323
- </div>
324
- <div class="sourcecode">
325
- <p class="source-link">[ <a href="javascript:toggleSource('M000044_source')" id="l_M000044_source">show source</a> ]</p>
326
- <div id="M000044_source" class="dyn-source">
327
- <pre>
328
- /*
329
- * call-seq: send_fd(socket_fd, fd_to_send)
330
- *
331
- * Send a file descriptor over the given Unix socket. You do not have to call
332
- * this function directly. A convenience wrapper is provided by IO#send_io.
333
- *
334
- * - +socket_fd+ (integer): The file descriptor of the socket.
335
- * - +fd_to_send+ (integer): The file descriptor to send.
336
- * - Raises +SystemCallError+ if something went wrong.
337
- */
338
- static VALUE
339
- send_fd(VALUE self, VALUE socket_fd, VALUE fd_to_send) {
340
-
341
- </pre>
342
- </div>
343
- </div>
344
- </div>
345
- </div>
346
-
347
- </div>
348
-
349
- </body>
350
- </html>
@@ -1,91 +0,0 @@
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
- <html>
6
- <head>
7
- <title>Module: PhusionPassenger::Rack</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
-
11
- <script language="JavaScript" type="text/javascript">
12
- // <![CDATA[
13
-
14
- function toggleSource( id )
15
- {
16
- var elem
17
- var link
18
-
19
- if( document.getElementById )
20
- {
21
- elem = document.getElementById( id )
22
- link = document.getElementById( "l_" + id )
23
- }
24
- else if ( document.all )
25
- {
26
- elem = eval( "document.all." + id )
27
- link = eval( "document.all.l_" + id )
28
- }
29
- else
30
- return false;
31
-
32
- if( elem.style.display == "block" )
33
- {
34
- elem.style.display = "none"
35
- link.innerHTML = "show source"
36
- }
37
- else
38
- {
39
- elem.style.display = "block"
40
- link.innerHTML = "hide source"
41
- }
42
- }
43
-
44
- function openCode( url )
45
- {
46
- window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
47
- }
48
- // ]]>
49
- </script>
50
- </head>
51
-
52
- <body>
53
- <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
54
- <td class="file-title"><span class="file-title-prefix">Module</span><br />PhusionPassenger::Rack</td>
55
- <td align="right">
56
- <table cellspacing="0" cellpadding="2">
57
- <tr valign="top">
58
- <td>In:</td>
59
- <td>
60
- <a href="../../files/lib/phusion_passenger/rack/application_spawner_rb.html">lib/phusion_passenger/rack/application_spawner.rb</a>
61
- <a href="../../files/lib/phusion_passenger/rack/request_handler_rb.html">lib/phusion_passenger/rack/request_handler.rb</a>
62
- </td>
63
- </tr>
64
- </table>
65
- </td>
66
- </tr>
67
- </table>
68
- <!-- banner header -->
69
-
70
- <div id="bodyContent">
71
- <div id="content">
72
-
73
-
74
-
75
-
76
-
77
-
78
-
79
- <div class="sectiontitle">Classes and Modules</div>
80
- Class <a href="Rack/ApplicationSpawner.html" class="link">PhusionPassenger::Rack::ApplicationSpawner</a><br />
81
- Class <a href="Rack/RequestHandler.html" class="link">PhusionPassenger::Rack::RequestHandler</a><br />
82
-
83
-
84
-
85
-
86
- </div>
87
-
88
- </div>
89
-
90
- </body>
91
- </html>
@@ -1,188 +0,0 @@
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
- <html>
6
- <head>
7
- <title>Class: PhusionPassenger::Rack::ApplicationSpawner</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
-
11
- <script language="JavaScript" type="text/javascript">
12
- // <![CDATA[
13
-
14
- function toggleSource( id )
15
- {
16
- var elem
17
- var link
18
-
19
- if( document.getElementById )
20
- {
21
- elem = document.getElementById( id )
22
- link = document.getElementById( "l_" + id )
23
- }
24
- else if ( document.all )
25
- {
26
- elem = eval( "document.all." + id )
27
- link = eval( "document.all.l_" + id )
28
- }
29
- else
30
- return false;
31
-
32
- if( elem.style.display == "block" )
33
- {
34
- elem.style.display = "none"
35
- link.innerHTML = "show source"
36
- }
37
- else
38
- {
39
- elem.style.display = "block"
40
- link.innerHTML = "hide source"
41
- }
42
- }
43
-
44
- function openCode( url )
45
- {
46
- window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
47
- }
48
- // ]]>
49
- </script>
50
- </head>
51
-
52
- <body>
53
- <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
54
- <td class="file-title"><span class="file-title-prefix">Class</span><br />PhusionPassenger::Rack::ApplicationSpawner</td>
55
- <td align="right">
56
- <table cellspacing="0" cellpadding="2">
57
- <tr valign="top">
58
- <td>In:</td>
59
- <td>
60
- <a href="../../../files/lib/phusion_passenger/rack/application_spawner_rb.html">lib/phusion_passenger/rack/application_spawner.rb</a>
61
- </td>
62
- </tr>
63
- <tr>
64
- <td>Parent:</td>
65
- <td>
66
- Object
67
- </td>
68
- </tr>
69
- </table>
70
- </td>
71
- </tr>
72
- </table>
73
- <!-- banner header -->
74
-
75
- <div id="bodyContent">
76
- <div id="content">
77
-
78
- <div class="description"><p>
79
- Class for spawning <a href="../Rack.html">Rack</a> applications.
80
- </p>
81
- </div>
82
-
83
-
84
-
85
- <div class="sectiontitle">Methods</div>
86
- <ul>
87
- <li><a href="#M000040">spawn_application</a></li>
88
- <li><a href="#M000041">spawn_application</a></li>
89
- </ul>
90
-
91
- <div class="sectiontitle">Included Modules</div>
92
- <ul>
93
- <li><a href="../Utils.html">Utils</a></li>
94
- </ul>
95
-
96
-
97
-
98
-
99
-
100
- <div class="sectiontitle">Public Class methods</div>
101
- <div class="method">
102
- <div class="title">
103
- <a name="M000040"></a><b>spawn_application</b>(*args)
104
- </div>
105
- <div class="sourcecode">
106
- <p class="source-link">[ <a href="javascript:toggleSource('M000040_source')" id="l_M000040_source">show source</a> ]</p>
107
- <div id="M000040_source" class="dyn-source">
108
- <pre>
109
- <span class="ruby-comment cmt"># File lib/phusion_passenger/rack/application_spawner.rb, line 43</span>
110
- 43: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">spawn_application</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
111
- 44: <span class="ruby-ivar">@@instance</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">ApplicationSpawner</span>.<span class="ruby-identifier">new</span>
112
- 45: <span class="ruby-ivar">@@instance</span>.<span class="ruby-identifier">spawn_application</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
113
- 46: <span class="ruby-keyword kw">end</span>
114
- </pre>
115
- </div>
116
- </div>
117
- </div>
118
- <div class="sectiontitle">Public Instance methods</div>
119
- <div class="method">
120
- <div class="title">
121
- <a name="M000041"></a><b>spawn_application</b>(app_root, options = {})
122
- </div>
123
- <div class="description">
124
- <p>
125
- Spawn an instance of the given <a href="../Rack.html">Rack</a> application.
126
- When successful, an <a href="../Application.html">Application</a> object
127
- will be returned, which represents the spawned application.
128
- </p>
129
- <p>
130
- Accepts the same options as Railz::ApplicationSpawner#initialize.
131
- </p>
132
- <p>
133
- Raises:
134
- </p>
135
- <ul>
136
- <li><a href="../AppInitError.html">AppInitError</a>: The <a
137
- href="../Rack.html">Rack</a> application raised an exception or called
138
- exit() during startup.
139
-
140
- </li>
141
- <li>SystemCallError, IOError, SocketError: Something went wrong.
142
-
143
- </li>
144
- </ul>
145
- </div>
146
- <div class="sourcecode">
147
- <p class="source-link">[ <a href="javascript:toggleSource('M000041_source')" id="l_M000041_source">show source</a> ]</p>
148
- <div id="M000041_source" class="dyn-source">
149
- <pre>
150
- <span class="ruby-comment cmt"># File lib/phusion_passenger/rack/application_spawner.rb, line 58</span>
151
- 58: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">spawn_application</span>(<span class="ruby-identifier">app_root</span>, <span class="ruby-identifier">options</span> = {})
152
- 59: <span class="ruby-identifier">options</span> = <span class="ruby-identifier">sanitize_spawn_options</span>(<span class="ruby-identifier">options</span>)
153
- 60:
154
- 61: <span class="ruby-identifier">a</span>, <span class="ruby-identifier">b</span> = <span class="ruby-constant">UNIXSocket</span>.<span class="ruby-identifier">pair</span>
155
- 62: <span class="ruby-identifier">pid</span> = <span class="ruby-identifier">safe_fork</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">do</span>
156
- 63: <span class="ruby-identifier">a</span>.<span class="ruby-identifier">close</span>
157
- 64:
158
- 65: <span class="ruby-identifier">file_descriptors_to_leave_open</span> = [<span class="ruby-value">0</span>, <span class="ruby-value">1</span>, <span class="ruby-value">2</span>, <span class="ruby-identifier">b</span>.<span class="ruby-identifier">fileno</span>]
159
- 66: <span class="ruby-constant">NativeSupport</span>.<span class="ruby-identifier">close_all_file_descriptors</span>(<span class="ruby-identifier">file_descriptors_to_leave_open</span>)
160
- 67: <span class="ruby-identifier">close_all_io_objects_for_fds</span>(<span class="ruby-identifier">file_descriptors_to_leave_open</span>)
161
- 68:
162
- 69: <span class="ruby-identifier">run</span>(<span class="ruby-constant">MessageChannel</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">b</span>), <span class="ruby-identifier">app_root</span>, <span class="ruby-identifier">options</span>)
163
- 70: <span class="ruby-keyword kw">end</span>
164
- 71: <span class="ruby-identifier">b</span>.<span class="ruby-identifier">close</span>
165
- 72: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">waitpid</span>(<span class="ruby-identifier">pid</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
166
- 73:
167
- 74: <span class="ruby-identifier">channel</span> = <span class="ruby-constant">MessageChannel</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">a</span>)
168
- 75: <span class="ruby-identifier">unmarshal_and_raise_errors</span>(<span class="ruby-identifier">channel</span>, <span class="ruby-operator">!</span><span class="ruby-operator">!</span><span class="ruby-identifier">options</span>[<span class="ruby-value str">&quot;print_exceptions&quot;</span>], <span class="ruby-value str">&quot;rack&quot;</span>)
169
- 76:
170
- 77: <span class="ruby-comment cmt"># No exception was raised, so spawning succeeded.</span>
171
- 78: <span class="ruby-identifier">pid</span>, <span class="ruby-identifier">socket_name</span>, <span class="ruby-identifier">socket_type</span> = <span class="ruby-identifier">channel</span>.<span class="ruby-identifier">read</span>
172
- 79: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pid</span>.<span class="ruby-identifier">nil?</span>
173
- 80: <span class="ruby-identifier">raise</span> <span class="ruby-constant">IOError</span>, <span class="ruby-value str">&quot;Connection closed&quot;</span>
174
- 81: <span class="ruby-keyword kw">end</span>
175
- 82: <span class="ruby-identifier">owner_pipe</span> = <span class="ruby-identifier">channel</span>.<span class="ruby-identifier">recv_io</span>
176
- 83: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">Application</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@app_root</span>, <span class="ruby-identifier">pid</span>, <span class="ruby-identifier">socket_name</span>,
177
- 84: <span class="ruby-identifier">socket_type</span>, <span class="ruby-identifier">owner_pipe</span>)
178
- 85: <span class="ruby-keyword kw">end</span>
179
- </pre>
180
- </div>
181
- </div>
182
- </div>
183
- </div>
184
-
185
- </div>
186
-
187
- </body>
188
- </html>