passenger 3.0.2 → 3.0.3

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

Potentially problematic release.


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

Files changed (220) hide show
  1. data/NEWS +29 -0
  2. data/build/agents.rb +1 -0
  3. data/build/apache2.rb +2 -1
  4. data/build/cxx_tests.rb +7 -0
  5. data/build/rpm.rb +17 -22
  6. data/doc/cxxapi/Constants_8h_source.html +1 -1
  7. data/doc/cxxapi/Exceptions_8h_source.html +18 -4
  8. data/doc/cxxapi/Logging_8h_source.html +332 -262
  9. data/doc/cxxapi/annotated.html +1 -0
  10. data/doc/cxxapi/classes.html +4 -4
  11. data/doc/cxxapi/group__Exceptions.html +2 -0
  12. data/doc/cxxapi/hierarchy.html +1 -0
  13. data/doc/cxxapi/inherit__graph__35.map +1 -3
  14. data/doc/cxxapi/inherit__graph__35.md5 +1 -1
  15. data/doc/cxxapi/inherit__graph__35.png +0 -0
  16. data/doc/cxxapi/inherit__graph__36.map +3 -1
  17. data/doc/cxxapi/inherit__graph__36.md5 +1 -1
  18. data/doc/cxxapi/inherit__graph__36.png +0 -0
  19. data/doc/cxxapi/inherit__graph__37.map +1 -1
  20. data/doc/cxxapi/inherit__graph__37.md5 +1 -1
  21. data/doc/cxxapi/inherit__graph__37.png +0 -0
  22. data/doc/cxxapi/inherit__graph__38.map +1 -1
  23. data/doc/cxxapi/inherit__graph__38.md5 +1 -1
  24. data/doc/cxxapi/inherit__graph__38.png +0 -0
  25. data/doc/cxxapi/inherit__graph__39.map +1 -1
  26. data/doc/cxxapi/inherit__graph__39.md5 +1 -1
  27. data/doc/cxxapi/inherit__graph__39.png +0 -0
  28. data/doc/cxxapi/inherit__graph__40.map +1 -1
  29. data/doc/cxxapi/inherit__graph__40.md5 +1 -1
  30. data/doc/cxxapi/inherit__graph__40.png +0 -0
  31. data/doc/cxxapi/inherits.html +9 -6
  32. data/doc/cxxapi/namespacePassenger.html +2 -0
  33. data/doc/cxxapi/tree.html +2 -0
  34. data/doc/rdoc/classes/ConditionVariable.html +215 -0
  35. data/doc/rdoc/classes/Exception.html +120 -0
  36. data/doc/rdoc/classes/GC.html +113 -0
  37. data/doc/rdoc/classes/IO.html +221 -0
  38. data/doc/rdoc/classes/PhusionPassenger.html +397 -0
  39. data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +180 -0
  40. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +647 -0
  41. data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +654 -0
  42. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/InvalidPassword.html +92 -0
  43. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerAlreadyStarted.html +97 -0
  44. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerError.html +96 -0
  45. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerNotStarted.html +97 -0
  46. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/UnknownMessage.html +96 -0
  47. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +619 -0
  48. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +142 -0
  49. data/doc/rdoc/classes/PhusionPassenger/AdminTools/MemoryStats.html +368 -0
  50. data/doc/rdoc/classes/PhusionPassenger/AdminTools/MemoryStats/Process.html +231 -0
  51. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance.html +588 -0
  52. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/CorruptedDirectoryError.html +92 -0
  53. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/GenerationsAbsentError.html +92 -0
  54. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Group.html +147 -0
  55. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Process.html +279 -0
  56. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/RoleDeniedError.html +92 -0
  57. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/StaleDirectoryError.html +92 -0
  58. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Stats.html +123 -0
  59. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/UnsupportedGenerationStructureVersionError.html +92 -0
  60. data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger.html +368 -0
  61. data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/Log.html +299 -0
  62. data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/SharedData.html +206 -0
  63. data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +155 -0
  64. data/doc/rdoc/classes/PhusionPassenger/AppProcess.html +367 -0
  65. data/doc/rdoc/classes/PhusionPassenger/ClassicRails.html +95 -0
  66. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/ApplicationSpawner.html +351 -0
  67. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/ApplicationSpawner/Error.html +98 -0
  68. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/CGIFixed.html +200 -0
  69. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/FrameworkSpawner.html +410 -0
  70. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/FrameworkSpawner/Error.html +98 -0
  71. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/RequestHandler.html +156 -0
  72. data/doc/rdoc/classes/PhusionPassenger/ClassicRailsExtensions.html +115 -0
  73. data/doc/rdoc/classes/PhusionPassenger/ClassicRailsExtensions/AnalyticsLogging.html +202 -0
  74. data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +172 -0
  75. data/doc/rdoc/classes/PhusionPassenger/DebugLogging.html +273 -0
  76. data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +145 -0
  77. data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +162 -0
  78. data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +141 -0
  79. data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +92 -0
  80. data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +673 -0
  81. data/doc/rdoc/classes/PhusionPassenger/MessageChannel/InvalidHashError.html +92 -0
  82. data/doc/rdoc/classes/PhusionPassenger/MessageClient.html +415 -0
  83. data/doc/rdoc/classes/PhusionPassenger/NativeSupportLoader.html +134 -0
  84. data/doc/rdoc/classes/PhusionPassenger/Packaging.html +129 -0
  85. data/doc/rdoc/classes/PhusionPassenger/PlatformInfo.html +1972 -0
  86. data/doc/rdoc/classes/PhusionPassenger/Plugin.html +237 -0
  87. data/doc/rdoc/classes/PhusionPassenger/Rack.html +91 -0
  88. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +312 -0
  89. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner/Error.html +98 -0
  90. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +218 -0
  91. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions.html +114 -0
  92. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging.html +259 -0
  93. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ACExtension.html +139 -0
  94. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ASBenchmarkableExtension.html +118 -0
  95. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ExceptionLogger.html +135 -0
  96. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +378 -0
  97. data/doc/rdoc/classes/PhusionPassenger/Standalone.html +111 -0
  98. data/doc/rdoc/classes/PhusionPassenger/Standalone/AppFinder.html +252 -0
  99. data/doc/rdoc/classes/PhusionPassenger/Standalone/Command.html +161 -0
  100. data/doc/rdoc/classes/PhusionPassenger/Standalone/ConfigFile.html +368 -0
  101. data/doc/rdoc/classes/PhusionPassenger/Standalone/ConfigFile/DisallowedContextError.html +132 -0
  102. data/doc/rdoc/classes/PhusionPassenger/Standalone/HelpCommand.html +151 -0
  103. data/doc/rdoc/classes/PhusionPassenger/Standalone/Main.html +189 -0
  104. data/doc/rdoc/classes/PhusionPassenger/Standalone/PackageRuntimeCommand.html +177 -0
  105. data/doc/rdoc/classes/PhusionPassenger/Standalone/RuntimeInstaller.html +341 -0
  106. data/doc/rdoc/classes/PhusionPassenger/Standalone/StartCommand.html +203 -0
  107. data/doc/rdoc/classes/PhusionPassenger/Standalone/StatusCommand.html +156 -0
  108. data/doc/rdoc/classes/PhusionPassenger/Standalone/StopCommand.html +168 -0
  109. data/doc/rdoc/classes/PhusionPassenger/Standalone/Utils.html +86 -0
  110. data/doc/rdoc/classes/PhusionPassenger/Standalone/VersionCommand.html +135 -0
  111. data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +125 -0
  112. data/doc/rdoc/classes/PhusionPassenger/Utils.html +1543 -0
  113. data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher.html +204 -0
  114. data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher/DirInfo.html +171 -0
  115. data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher/FileInfo.html +140 -0
  116. data/doc/rdoc/classes/PhusionPassenger/Utils/HostsFileParser.html +260 -0
  117. data/doc/rdoc/classes/PhusionPassenger/Utils/PseudoIO.html +194 -0
  118. data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput.html +265 -0
  119. data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput/Tempfile.html +120 -0
  120. data/doc/rdoc/classes/PhusionPassenger/Utils/UnseekableSocket.html +561 -0
  121. data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +140 -0
  122. data/doc/rdoc/classes/PhusionPassenger/WSGI.html +89 -0
  123. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +182 -0
  124. data/doc/rdoc/classes/Process.html +115 -0
  125. data/doc/rdoc/classes/Signal.html +139 -0
  126. data/doc/rdoc/created.rid +1 -0
  127. data/doc/rdoc/files/DEVELOPERS_TXT.html +280 -0
  128. data/doc/rdoc/files/README.html +157 -0
  129. data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +130 -0
  130. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +135 -0
  131. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +126 -0
  132. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +128 -0
  133. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/memory_stats_rb.html +126 -0
  134. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/server_instance_rb.html +132 -0
  135. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +122 -0
  136. data/doc/rdoc/files/lib/phusion_passenger/analytics_logger_rb.html +129 -0
  137. data/doc/rdoc/files/lib/phusion_passenger/app_process_rb.html +127 -0
  138. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/application_spawner_rb.html +141 -0
  139. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/cgi_fixed_rb.html +126 -0
  140. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/framework_spawner_rb.html +146 -0
  141. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/request_handler_rb.html +125 -0
  142. data/doc/rdoc/files/lib/phusion_passenger/classic_rails_extensions/init_rb.html +132 -0
  143. data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +126 -0
  144. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +122 -0
  145. data/doc/rdoc/files/lib/phusion_passenger/debug_logging_rb.html +122 -0
  146. data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +147 -0
  147. data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +122 -0
  148. data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +127 -0
  149. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +120 -0
  150. data/doc/rdoc/files/lib/phusion_passenger/message_client_rb.html +127 -0
  151. data/doc/rdoc/files/lib/phusion_passenger/native_support_rb.html +132 -0
  152. data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +122 -0
  153. data/doc/rdoc/files/lib/phusion_passenger/platform_info/apache_rb.html +127 -0
  154. data/doc/rdoc/files/lib/phusion_passenger/platform_info/binary_compatibility_rb.html +129 -0
  155. data/doc/rdoc/files/lib/phusion_passenger/platform_info/compiler_rb.html +127 -0
  156. data/doc/rdoc/files/lib/phusion_passenger/platform_info/curl_rb.html +126 -0
  157. data/doc/rdoc/files/lib/phusion_passenger/platform_info/documentation_tools_rb.html +126 -0
  158. data/doc/rdoc/files/lib/phusion_passenger/platform_info/linux_rb.html +126 -0
  159. data/doc/rdoc/files/lib/phusion_passenger/platform_info/operating_system_rb.html +127 -0
  160. data/doc/rdoc/files/lib/phusion_passenger/platform_info/ruby_rb.html +128 -0
  161. data/doc/rdoc/files/lib/phusion_passenger/platform_info/zlib_rb.html +126 -0
  162. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +122 -0
  163. data/doc/rdoc/files/lib/phusion_passenger/plugin_rb.html +127 -0
  164. data/doc/rdoc/files/lib/phusion_passenger/public_api_rb.html +127 -0
  165. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +137 -0
  166. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +125 -0
  167. data/doc/rdoc/files/lib/phusion_passenger/rails3_extensions/init_rb.html +127 -0
  168. data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +122 -0
  169. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +160 -0
  170. data/doc/rdoc/files/lib/phusion_passenger/standalone/app_finder_rb.html +127 -0
  171. data/doc/rdoc/files/lib/phusion_passenger/standalone/command_rb.html +136 -0
  172. data/doc/rdoc/files/lib/phusion_passenger/standalone/config_file_rb.html +126 -0
  173. data/doc/rdoc/files/lib/phusion_passenger/standalone/help_command_rb.html +126 -0
  174. data/doc/rdoc/files/lib/phusion_passenger/standalone/main_rb.html +126 -0
  175. data/doc/rdoc/files/lib/phusion_passenger/standalone/package_runtime_command_rb.html +127 -0
  176. data/doc/rdoc/files/lib/phusion_passenger/standalone/runtime_installer_rb.html +133 -0
  177. data/doc/rdoc/files/lib/phusion_passenger/standalone/start_command_rb.html +136 -0
  178. data/doc/rdoc/files/lib/phusion_passenger/standalone/status_command_rb.html +126 -0
  179. data/doc/rdoc/files/lib/phusion_passenger/standalone/stop_command_rb.html +126 -0
  180. data/doc/rdoc/files/lib/phusion_passenger/standalone/utils_rb.html +126 -0
  181. data/doc/rdoc/files/lib/phusion_passenger/standalone/version_command_rb.html +127 -0
  182. data/doc/rdoc/files/lib/phusion_passenger/utils/file_system_watcher_rb.html +126 -0
  183. data/doc/rdoc/files/lib/phusion_passenger/utils/hosts_file_parser_rb.html +120 -0
  184. data/doc/rdoc/files/lib/phusion_passenger/utils/rewindable_input_rb.html +100 -0
  185. data/doc/rdoc/files/lib/phusion_passenger/utils/tmpdir_rb.html +122 -0
  186. data/doc/rdoc/files/lib/phusion_passenger/utils/unseekable_socket_rb.html +126 -0
  187. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +179 -0
  188. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +132 -0
  189. data/doc/rdoc/fr_class_index.html +139 -0
  190. data/doc/rdoc/fr_file_index.html +108 -0
  191. data/doc/rdoc/fr_method_index.html +439 -0
  192. data/doc/rdoc/index.html +26 -0
  193. data/doc/rdoc/rdoc-style.css +187 -0
  194. data/ext/apache2/Configuration.cpp +41 -0
  195. data/ext/apache2/Configuration.hpp +19 -0
  196. data/ext/apache2/Hooks.cpp +67 -5
  197. data/ext/common/Constants.h +1 -1
  198. data/ext/common/Exceptions.h +14 -0
  199. data/ext/common/Logging.h +76 -6
  200. data/ext/common/LoggingAgent/FilterSupport.h +1317 -0
  201. data/ext/common/LoggingAgent/LoggingServer.h +93 -4
  202. data/ext/common/LoggingAgent/RemoteSender.h +5 -5
  203. data/ext/common/Utils/StrIntUtils.cpp +12 -1
  204. data/ext/common/Utils/StrIntUtils.h +2 -1
  205. data/ext/common/Utils/StringMap.h +100 -0
  206. data/ext/nginx/Configuration.c +0 -1
  207. data/ext/nginx/ContentHandler.c +33 -7
  208. data/lib/phusion_passenger.rb +2 -2
  209. data/lib/phusion_passenger/abstract_request_handler.rb +5 -0
  210. data/lib/phusion_passenger/analytics_logger.rb +77 -11
  211. data/lib/phusion_passenger/dependencies.rb +11 -1
  212. data/lib/phusion_passenger/platform_info.rb +1 -1
  213. data/lib/phusion_passenger/utils.rb +9 -1
  214. data/test/cxx/FilterSupportTest.cpp +276 -0
  215. data/test/cxx/LoggingTest.cpp +28 -0
  216. data/test/cxx/StringMapTest.cpp +70 -0
  217. data/test/integration_tests/cgi_environment_spec.rb +10 -0
  218. metadata +170 -8
  219. data/ext/common/libboost_oxt/aggregate.cpp +0 -10
  220. data/ext/common/libpassenger_common/aggregate.cpp +0 -15
@@ -0,0 +1,299 @@
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::AnalyticsLogger::Log</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::AnalyticsLogger::Log</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/analytics_logger_rb.html">lib/phusion_passenger/analytics_logger.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
+
79
+
80
+
81
+ <div class="sectiontitle">Methods</div>
82
+ <ul>
83
+ <li><a href="#M000300">begin_measure</a></li>
84
+ <li><a href="#M000304">close</a></li>
85
+ <li><a href="#M000301">end_measure</a></li>
86
+ <li><a href="#M000302">measure</a></li>
87
+ <li><a href="#M000303">measured_time_points</a></li>
88
+ <li><a href="#M000299">message</a></li>
89
+ <li><a href="#M000297">new</a></li>
90
+ <li><a href="#M000298">null?</a></li>
91
+ </ul>
92
+
93
+
94
+
95
+
96
+
97
+ <div class="sectiontitle">Attributes</div>
98
+ <table border='0' cellpadding='5'>
99
+ <tr valign='top'>
100
+ <td class='attr-rw'>
101
+ [R]
102
+ </td>
103
+ <td class='attr-name'>txn_id</td>
104
+ <td class='attr-desc'></td>
105
+ </tr>
106
+ </table>
107
+
108
+ <div class="sectiontitle">Public Class methods</div>
109
+ <div class="method">
110
+ <div class="title">
111
+ <a name="M000297"></a><b>new</b>(shared_data = nil, txn_id = nil)
112
+ </div>
113
+ <div class="sourcecode">
114
+ <p class="source-link">[ <a href="javascript:toggleSource('M000297_source')" id="l_M000297_source">show source</a> ]</p>
115
+ <div id="M000297_source" class="dyn-source">
116
+ <pre>
117
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/analytics_logger.rb, line 41</span>
118
+ 41: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">shared_data</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">txn_id</span> = <span class="ruby-keyword kw">nil</span>)
119
+ 42: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">shared_data</span>
120
+ 43: <span class="ruby-ivar">@shared_data</span> = <span class="ruby-identifier">shared_data</span>
121
+ 44: <span class="ruby-ivar">@txn_id</span> = <span class="ruby-identifier">txn_id</span>
122
+ 45: <span class="ruby-identifier">shared_data</span>.<span class="ruby-identifier">ref</span>
123
+ 46: <span class="ruby-keyword kw">end</span>
124
+ 47: <span class="ruby-keyword kw">end</span>
125
+ </pre>
126
+ </div>
127
+ </div>
128
+ </div>
129
+ <div class="sectiontitle">Public Instance methods</div>
130
+ <div class="method">
131
+ <div class="title">
132
+ <a name="M000300"></a><b>begin_measure</b>(name, extra_info = nil)
133
+ </div>
134
+ <div class="sourcecode">
135
+ <p class="source-link">[ <a href="javascript:toggleSource('M000300_source')" id="l_M000300_source">show source</a> ]</p>
136
+ <div id="M000300_source" class="dyn-source">
137
+ <pre>
138
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/analytics_logger.rb, line 61</span>
139
+ 61: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">begin_measure</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">extra_info</span> = <span class="ruby-keyword kw">nil</span>)
140
+ 62: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">extra_info</span>
141
+ 63: <span class="ruby-identifier">extra_info_base64</span> = [<span class="ruby-identifier">extra_info</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">&quot;m&quot;</span>)
142
+ 64: <span class="ruby-identifier">extra_info_base64</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-value str">&quot;\n&quot;</span>, <span class="ruby-value str">&quot;&quot;</span>)
143
+ 65: <span class="ruby-identifier">extra_info_base64</span>.<span class="ruby-identifier">strip!</span>
144
+ 66: <span class="ruby-keyword kw">else</span>
145
+ 67: <span class="ruby-identifier">extra_info_base64</span> = <span class="ruby-keyword kw">nil</span>
146
+ 68: <span class="ruby-keyword kw">end</span>
147
+ 69: <span class="ruby-identifier">times</span> = <span class="ruby-constant">NativeSupport</span>.<span class="ruby-identifier">process_times</span>
148
+ 70: <span class="ruby-identifier">message</span> <span class="ruby-node">&quot;BEGIN: #{name} (#{current_timestamp.to_s(36)},#{times.utime.to_s(36)},#{times.stime.to_s(36)}) #{extra_info_base64}&quot;</span>
149
+ 71: <span class="ruby-keyword kw">end</span>
150
+ </pre>
151
+ </div>
152
+ </div>
153
+ </div>
154
+ <div class="method">
155
+ <div class="title">
156
+ <a name="M000304"></a><b>close</b>(flush_to_disk = false)
157
+ </div>
158
+ <div class="sourcecode">
159
+ <p class="source-link">[ <a href="javascript:toggleSource('M000304_source')" id="l_M000304_source">show source</a> ]</p>
160
+ <div id="M000304_source" class="dyn-source">
161
+ <pre>
162
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/analytics_logger.rb, line 108</span>
163
+ 108: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close</span>(<span class="ruby-identifier">flush_to_disk</span> = <span class="ruby-keyword kw">false</span>)
164
+ 109: <span class="ruby-ivar">@shared_data</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
165
+ 110: <span class="ruby-comment cmt"># We need an ACK here. See abstract_request_handler.rb finalize_request.</span>
166
+ 111: <span class="ruby-ivar">@shared_data</span>.<span class="ruby-identifier">client</span>.<span class="ruby-identifier">write</span>(<span class="ruby-value str">&quot;closeTransaction&quot;</span>, <span class="ruby-ivar">@txn_id</span>,
167
+ 112: <span class="ruby-constant">AnalyticsLogger</span>.<span class="ruby-identifier">timestamp_string</span>, <span class="ruby-keyword kw">true</span>)
168
+ 113: <span class="ruby-identifier">result</span> = <span class="ruby-ivar">@shared_data</span>.<span class="ruby-identifier">client</span>.<span class="ruby-identifier">read</span>
169
+ 114: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">result</span> <span class="ruby-operator">!=</span> [<span class="ruby-value str">&quot;ok&quot;</span>]
170
+ 115: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Expected logging server to respond with 'ok', but got #{result.inspect} instead&quot;</span>
171
+ 116: <span class="ruby-keyword kw">end</span>
172
+ 117: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">flush_to_disk</span>
173
+ 118: <span class="ruby-ivar">@shared_data</span>.<span class="ruby-identifier">client</span>.<span class="ruby-identifier">write</span>(<span class="ruby-value str">&quot;flush&quot;</span>)
174
+ 119: <span class="ruby-identifier">result</span> = <span class="ruby-ivar">@shared_data</span>.<span class="ruby-identifier">client</span>.<span class="ruby-identifier">read</span>
175
+ 120: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">result</span> <span class="ruby-operator">!=</span> [<span class="ruby-value str">&quot;ok&quot;</span>]
176
+ 121: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Invalid logging server response #{result.inspect} to the 'flush' command&quot;</span>
177
+ 122: <span class="ruby-keyword kw">end</span>
178
+ 123: <span class="ruby-keyword kw">end</span>
179
+ 124: <span class="ruby-ivar">@shared_data</span>.<span class="ruby-identifier">unref</span>
180
+ 125: <span class="ruby-ivar">@shared_data</span> = <span class="ruby-keyword kw">nil</span>
181
+ 126: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@shared_data</span>
182
+ 127: <span class="ruby-keyword kw">end</span>
183
+ </pre>
184
+ </div>
185
+ </div>
186
+ </div>
187
+ <div class="method">
188
+ <div class="title">
189
+ <a name="M000301"></a><b>end_measure</b>(name, error_encountered = false)
190
+ </div>
191
+ <div class="sourcecode">
192
+ <p class="source-link">[ <a href="javascript:toggleSource('M000301_source')" id="l_M000301_source">show source</a> ]</p>
193
+ <div id="M000301_source" class="dyn-source">
194
+ <pre>
195
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/analytics_logger.rb, line 73</span>
196
+ 73: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">end_measure</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">error_encountered</span> = <span class="ruby-keyword kw">false</span>)
197
+ 74: <span class="ruby-identifier">times</span> = <span class="ruby-constant">NativeSupport</span>.<span class="ruby-identifier">process_times</span>
198
+ 75: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">error_encountered</span>
199
+ 76: <span class="ruby-identifier">message</span> <span class="ruby-node">&quot;FAIL: #{name} (#{current_timestamp.to_s(36)},#{times.utime.to_s(36)},#{times.stime.to_s(36)})&quot;</span>
200
+ 77: <span class="ruby-keyword kw">else</span>
201
+ 78: <span class="ruby-identifier">message</span> <span class="ruby-node">&quot;END: #{name} (#{current_timestamp.to_s(36)},#{times.utime.to_s(36)},#{times.stime.to_s(36)})&quot;</span>
202
+ 79: <span class="ruby-keyword kw">end</span>
203
+ 80: <span class="ruby-keyword kw">end</span>
204
+ </pre>
205
+ </div>
206
+ </div>
207
+ </div>
208
+ <div class="method">
209
+ <div class="title">
210
+ <a name="M000302"></a><b>measure</b>(name, extra_info = nil) {|| ...}
211
+ </div>
212
+ <div class="sourcecode">
213
+ <p class="source-link">[ <a href="javascript:toggleSource('M000302_source')" id="l_M000302_source">show source</a> ]</p>
214
+ <div id="M000302_source" class="dyn-source">
215
+ <pre>
216
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/analytics_logger.rb, line 82</span>
217
+ 82: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">measure</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">extra_info</span> = <span class="ruby-keyword kw">nil</span>)
218
+ 83: <span class="ruby-identifier">begin_measure</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">extra_info</span>)
219
+ 84: <span class="ruby-keyword kw">begin</span>
220
+ 85: <span class="ruby-keyword kw">yield</span>
221
+ 86: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span>
222
+ 87: <span class="ruby-identifier">error</span> = <span class="ruby-keyword kw">true</span>
223
+ 88: <span class="ruby-identifier">raise</span>
224
+ 89: <span class="ruby-keyword kw">ensure</span>
225
+ 90: <span class="ruby-identifier">end_measure</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">error</span>)
226
+ 91: <span class="ruby-keyword kw">end</span>
227
+ 92: <span class="ruby-keyword kw">end</span>
228
+ </pre>
229
+ </div>
230
+ </div>
231
+ </div>
232
+ <div class="method">
233
+ <div class="title">
234
+ <a name="M000303"></a><b>measured_time_points</b>(name, begin_time, end_time, extra_info = nil)
235
+ </div>
236
+ <div class="sourcecode">
237
+ <p class="source-link">[ <a href="javascript:toggleSource('M000303_source')" id="l_M000303_source">show source</a> ]</p>
238
+ <div id="M000303_source" class="dyn-source">
239
+ <pre>
240
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/analytics_logger.rb, line 94</span>
241
+ 94: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">measured_time_points</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">begin_time</span>, <span class="ruby-identifier">end_time</span>, <span class="ruby-identifier">extra_info</span> = <span class="ruby-keyword kw">nil</span>)
242
+ 95: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">extra_info</span>
243
+ 96: <span class="ruby-identifier">extra_info_base64</span> = [<span class="ruby-identifier">extra_info</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">&quot;m&quot;</span>)
244
+ 97: <span class="ruby-identifier">extra_info_base64</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-value str">&quot;\n&quot;</span>, <span class="ruby-value str">&quot;&quot;</span>)
245
+ 98: <span class="ruby-identifier">extra_info_base64</span>.<span class="ruby-identifier">strip!</span>
246
+ 99: <span class="ruby-keyword kw">else</span>
247
+ 100: <span class="ruby-identifier">extra_info_base64</span> = <span class="ruby-keyword kw">nil</span>
248
+ 101: <span class="ruby-keyword kw">end</span>
249
+ 102: <span class="ruby-identifier">begin_timestamp</span> = <span class="ruby-identifier">begin_time</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">*</span> <span class="ruby-value">1_000_000</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">begin_time</span>.<span class="ruby-identifier">usec</span>
250
+ 103: <span class="ruby-identifier">end_timestamp</span> = <span class="ruby-identifier">end_time</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">*</span> <span class="ruby-value">1_000_000</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">end_time</span>.<span class="ruby-identifier">usec</span>
251
+ 104: <span class="ruby-identifier">message</span> <span class="ruby-node">&quot;BEGIN: #{name} (#{begin_timestamp.to_s(36)}) #{extra_info_base64}&quot;</span>
252
+ 105: <span class="ruby-identifier">message</span> <span class="ruby-node">&quot;END: #{name} (#{end_timestamp.to_s(36)})&quot;</span>
253
+ 106: <span class="ruby-keyword kw">end</span>
254
+ </pre>
255
+ </div>
256
+ </div>
257
+ </div>
258
+ <div class="method">
259
+ <div class="title">
260
+ <a name="M000299"></a><b>message</b>(text)
261
+ </div>
262
+ <div class="sourcecode">
263
+ <p class="source-link">[ <a href="javascript:toggleSource('M000299_source')" id="l_M000299_source">show source</a> ]</p>
264
+ <div id="M000299_source" class="dyn-source">
265
+ <pre>
266
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/analytics_logger.rb, line 53</span>
267
+ 53: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">message</span>(<span class="ruby-identifier">text</span>)
268
+ 54: <span class="ruby-ivar">@shared_data</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
269
+ 55: <span class="ruby-ivar">@shared_data</span>.<span class="ruby-identifier">client</span>.<span class="ruby-identifier">write</span>(<span class="ruby-value str">&quot;log&quot;</span>, <span class="ruby-ivar">@txn_id</span>,
270
+ 56: <span class="ruby-constant">AnalyticsLogger</span>.<span class="ruby-identifier">timestamp_string</span>)
271
+ 57: <span class="ruby-ivar">@shared_data</span>.<span class="ruby-identifier">client</span>.<span class="ruby-identifier">write_scalar</span>(<span class="ruby-identifier">text</span>)
272
+ 58: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@shared_data</span>
273
+ 59: <span class="ruby-keyword kw">end</span>
274
+ </pre>
275
+ </div>
276
+ </div>
277
+ </div>
278
+ <div class="method">
279
+ <div class="title">
280
+ <a name="M000298"></a><b>null?</b>()
281
+ </div>
282
+ <div class="sourcecode">
283
+ <p class="source-link">[ <a href="javascript:toggleSource('M000298_source')" id="l_M000298_source">show source</a> ]</p>
284
+ <div id="M000298_source" class="dyn-source">
285
+ <pre>
286
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/analytics_logger.rb, line 49</span>
287
+ 49: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">null?</span>
288
+ 50: <span class="ruby-keyword kw">return</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@shared_data</span>
289
+ 51: <span class="ruby-keyword kw">end</span>
290
+ </pre>
291
+ </div>
292
+ </div>
293
+ </div>
294
+ </div>
295
+
296
+ </div>
297
+
298
+ </body>
299
+ </html>
@@ -0,0 +1,206 @@
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::AnalyticsLogger::SharedData</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::AnalyticsLogger::SharedData</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/analytics_logger_rb.html">lib/phusion_passenger/analytics_logger.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
+
79
+
80
+
81
+ <div class="sectiontitle">Methods</div>
82
+ <ul>
83
+ <li><a href="#M000306">disconnect</a></li>
84
+ <li><a href="#M000305">new</a></li>
85
+ <li><a href="#M000307">ref</a></li>
86
+ <li><a href="#M000309">synchronize</a></li>
87
+ <li><a href="#M000308">unref</a></li>
88
+ </ul>
89
+
90
+
91
+
92
+
93
+
94
+ <div class="sectiontitle">Attributes</div>
95
+ <table border='0' cellpadding='5'>
96
+ <tr valign='top'>
97
+ <td class='attr-rw'>
98
+ [RW]
99
+ </td>
100
+ <td class='attr-name'>client</td>
101
+ <td class='attr-desc'></td>
102
+ </tr>
103
+ <tr valign='top'>
104
+ <td class='attr-rw'>
105
+ [R]
106
+ </td>
107
+ <td class='attr-name'>mutex</td>
108
+ <td class='attr-desc'></td>
109
+ </tr>
110
+ </table>
111
+
112
+ <div class="sectiontitle">Public Class methods</div>
113
+ <div class="method">
114
+ <div class="title">
115
+ <a name="M000305"></a><b>new</b>()
116
+ </div>
117
+ <div class="sourcecode">
118
+ <p class="source-link">[ <a href="javascript:toggleSource('M000305_source')" id="l_M000305_source">show source</a> ]</p>
119
+ <div id="M000305_source" class="dyn-source">
120
+ <pre>
121
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/analytics_logger.rb, line 333</span>
122
+ 333: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
123
+ 334: <span class="ruby-ivar">@mutex</span> = <span class="ruby-constant">Mutex</span>.<span class="ruby-identifier">new</span>
124
+ 335: <span class="ruby-ivar">@refcount</span> = <span class="ruby-value">1</span>
125
+ 336: <span class="ruby-keyword kw">end</span>
126
+ </pre>
127
+ </div>
128
+ </div>
129
+ </div>
130
+ <div class="sectiontitle">Public Instance methods</div>
131
+ <div class="method">
132
+ <div class="title">
133
+ <a name="M000306"></a><b>disconnect</b>(check_error_response = false)
134
+ </div>
135
+ <div class="sourcecode">
136
+ <p class="source-link">[ <a href="javascript:toggleSource('M000306_source')" id="l_M000306_source">show source</a> ]</p>
137
+ <div id="M000306_source" class="dyn-source">
138
+ <pre>
139
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/analytics_logger.rb, line 338</span>
140
+ 338: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">disconnect</span>(<span class="ruby-identifier">check_error_response</span> = <span class="ruby-keyword kw">false</span>)
141
+ 339: <span class="ruby-comment cmt"># TODO: implement check_error_response support</span>
142
+ 340: <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">close</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@client</span>
143
+ 341: <span class="ruby-keyword kw">end</span>
144
+ </pre>
145
+ </div>
146
+ </div>
147
+ </div>
148
+ <div class="method">
149
+ <div class="title">
150
+ <a name="M000307"></a><b>ref</b>()
151
+ </div>
152
+ <div class="sourcecode">
153
+ <p class="source-link">[ <a href="javascript:toggleSource('M000307_source')" id="l_M000307_source">show source</a> ]</p>
154
+ <div id="M000307_source" class="dyn-source">
155
+ <pre>
156
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/analytics_logger.rb, line 343</span>
157
+ 343: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ref</span>
158
+ 344: <span class="ruby-ivar">@refcount</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
159
+ 345: <span class="ruby-keyword kw">end</span>
160
+ </pre>
161
+ </div>
162
+ </div>
163
+ </div>
164
+ <div class="method">
165
+ <div class="title">
166
+ <a name="M000309"></a><b>synchronize</b>() {|| ...}
167
+ </div>
168
+ <div class="sourcecode">
169
+ <p class="source-link">[ <a href="javascript:toggleSource('M000309_source')" id="l_M000309_source">show source</a> ]</p>
170
+ <div id="M000309_source" class="dyn-source">
171
+ <pre>
172
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/analytics_logger.rb, line 354</span>
173
+ 354: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">synchronize</span>
174
+ 355: <span class="ruby-ivar">@mutex</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
175
+ 356: <span class="ruby-keyword kw">yield</span>
176
+ 357: <span class="ruby-keyword kw">end</span>
177
+ 358: <span class="ruby-keyword kw">end</span>
178
+ </pre>
179
+ </div>
180
+ </div>
181
+ </div>
182
+ <div class="method">
183
+ <div class="title">
184
+ <a name="M000308"></a><b>unref</b>()
185
+ </div>
186
+ <div class="sourcecode">
187
+ <p class="source-link">[ <a href="javascript:toggleSource('M000308_source')" id="l_M000308_source">show source</a> ]</p>
188
+ <div id="M000308_source" class="dyn-source">
189
+ <pre>
190
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/analytics_logger.rb, line 347</span>
191
+ 347: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">unref</span>
192
+ 348: <span class="ruby-ivar">@refcount</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
193
+ 349: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@refcount</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
194
+ 350: <span class="ruby-identifier">disconnect</span>
195
+ 351: <span class="ruby-keyword kw">end</span>
196
+ 352: <span class="ruby-keyword kw">end</span>
197
+ </pre>
198
+ </div>
199
+ </div>
200
+ </div>
201
+ </div>
202
+
203
+ </div>
204
+
205
+ </body>
206
+ </html>