Deploy code docs to GitHub Pages for workflow run 1320

Commit: c08b1d1213
This commit is contained in:
tgstation-server
2023-03-21 00:49:40 +00:00
parent 9e2ad24b7c
commit a2a4cd806f
18 changed files with 345 additions and 274 deletions
+2 -2
View File
@@ -298,7 +298,7 @@ $(function() {
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> </div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_system_1_1_process_executor.html#a09b2d58bfe8a6053bfc369b143211bfd"> 251</a></span> <span class="keyword">public</span> <a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process.html">IProcess</a> <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_system_1_1_process_executor.html#a09b2d58bfe8a6053bfc369b143211bfd">GetProcessByName</a>(<span class="keywordtype">string</span> name)</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> {</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_system_1_1_process_executor.html#abbe8126c6fb5bff2bab522eef5f9d5c5">logger</a>.LogTrace(<span class="stringliteral">&quot;GetProcessByName: {0}...&quot;</span>, name ?? <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentNullException(nameof(name)));</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_system_1_1_process_executor.html#abbe8126c6fb5bff2bab522eef5f9d5c5">logger</a>.LogTrace(<span class="stringliteral">&quot;GetProcessByName: {processName}...&quot;</span>, name ?? <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentNullException(nameof(name)));</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> var procs = global::System.Diagnostics.Process.GetProcessesByName(name);</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> global::System.Diagnostics.Process handle = <span class="keyword">null</span>;</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <span class="keywordflow">foreach</span> (var proc <span class="keywordflow">in</span> procs)</div>
@@ -306,7 +306,7 @@ $(function() {
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> handle = proc;</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> {</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_system_1_1_process_executor.html#abbe8126c6fb5bff2bab522eef5f9d5c5">logger</a>.LogTrace(<span class="stringliteral">&quot;Disposing extra found PID: {0}...&quot;</span>, proc.Id);</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_system_1_1_process_executor.html#abbe8126c6fb5bff2bab522eef5f9d5c5">logger</a>.LogTrace(<span class="stringliteral">&quot;Disposing extra found PID: {pid}...&quot;</span>, proc.Id);</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> proc.Dispose();</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> }</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> </div>
+136 -105
View File
@@ -125,7 +125,7 @@ $(function() {
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keywordflow">if</span> (reattachInformation == <span class="keyword">null</span>)</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentNullException(nameof(reattachInformation));</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogDebug(<span class="stringliteral">&quot;Saving reattach information: {0}...&quot;</span>, reattachInformation);</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogDebug(<span class="stringliteral">&quot;Saving reattach information: {info}...&quot;</span>, reattachInformation);</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> </div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> await <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aa948dc00c200539206747c99b95986af">ClearImpl</a>(db, <span class="keyword">false</span>, cancellationToken);</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
@@ -148,112 +148,141 @@ $(function() {
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> {</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information.html">Models.ReattachInformation</a> result = <span class="keyword">null</span>;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> TimeSpan? topicTimeout = <span class="keyword">null</span>;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> await <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a2227915dc11711ab8eac49598f9bda08">databaseContextFactory</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42">UseContext</a>(async (db) =&gt;</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> {</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> var dbReattachInfos = await db</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> .ReattachInformations</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> .AsQueryable()</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> .Where(x =&gt; x.CompileJob.Job.Instance.Id == <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a3942d5832fa872589b17d1ea8b6d7150">metadata</a>.Id)</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> .Include(x =&gt; x.CompileJob)</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> .ToListAsync(cancellationToken);</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> result = dbReattachInfos.FirstOrDefault();</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> if (result == <span class="keywordflow">default</span>)</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> </div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> var timeoutMilliseconds = await db</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> .Instances</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> .AsQueryable()</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> .Where(x =&gt; x.Id == <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a3942d5832fa872589b17d1ea8b6d7150">metadata</a>.Id)</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> .Select(x =&gt; x.DreamDaemonSettings.TopicRequestTimeout)</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> .FirstOrDefaultAsync(cancellationToken)</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> ;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> if (timeoutMilliseconds == <span class="keywordflow">default</span>)</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> {</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogCritical(<span class="stringliteral">&quot;Missing TopicRequestTimeout!&quot;</span>);</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> async Task KillProcess(Models.ReattachInformation reattachInfo)</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> {</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordflow">try</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> {</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keyword">using </span>var process = <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a1e099a9da77ecb396147ac6c4e85f4f0">processExecutor</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor.html#a5618ee521ada90bb15bf3315440898f3">GetProcess</a>(reattachInfo.ProcessId);</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordflow">if</span> (process != <span class="keyword">null</span>)</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> {</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">if</span> (reattachInfo == result)</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> {</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogWarning(<span class="stringliteral">&quot;Killing PID {pid} associated with CompileJob-less reattach information...&quot;</span>, reattachInfo.ProcessId);</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> }</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> {</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogWarning(<span class="stringliteral">&quot;Killing PID {pid} associated with extra reattach information...&quot;</span>, reattachInfo.ProcessId);</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> }</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> process.Terminate();</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> await process.Lifetime;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> }</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> }</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">catch</span> (Exception ex)</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> {</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogWarning(ex, <span class="stringliteral">&quot;Failed to kill process!&quot;</span>);</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> }</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> </div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> topicTimeout = TimeSpan.FromMilliseconds(timeoutMilliseconds.Value);</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keywordtype">bool</span> first = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> foreach (var reattachInfo in dbReattachInfos)</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> {</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keywordflow">if</span> (first)</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> {</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> first = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> }</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogWarning(<span class="stringliteral">&quot;Killing PID {0} associated with extra reattach information...&quot;</span>, reattachInfo.ProcessId);</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keywordflow">try</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> {</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> using var process = processExecutor.GetProcess(reattachInfo.ProcessId);</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> process.Terminate();</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> await process.Lifetime;</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> }</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> catch (Exception ex)</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> {</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogWarning(ex, <span class="stringliteral">&quot;Failed to kill process!&quot;</span>);</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> }</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> </div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> db.ReattachInformations.Remove(reattachInfo);</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> }</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> </div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> await db.Save(cancellationToken);</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> });</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> }</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> await <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a2227915dc11711ab8eac49598f9bda08">databaseContextFactory</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42">UseContext</a>(async (db) =&gt;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> {</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> var dbReattachInfos = await db</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> .ReattachInformations</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> .AsQueryable()</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> .Where(x =&gt; x.CompileJob.Job.Instance.Id == <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a3942d5832fa872589b17d1ea8b6d7150">metadata</a>.Id)</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> .Include(x =&gt; x.CompileJob)</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> .ToListAsync(cancellationToken);</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> result = dbReattachInfos.FirstOrDefault();</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> if (result == <span class="keywordflow">default</span>)</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> </div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> var timeoutMilliseconds = await db</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> .Instances</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> .AsQueryable()</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> .Where(x =&gt; x.Id == <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a3942d5832fa872589b17d1ea8b6d7150">metadata</a>.Id)</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> .Select(x =&gt; x.DreamDaemonSettings.TopicRequestTimeout)</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> .FirstOrDefaultAsync(cancellationToken)</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> ;</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> </div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> if (timeoutMilliseconds == <span class="keywordflow">default</span>)</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> {</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogCritical(<span class="stringliteral">&quot;Missing TopicRequestTimeout!&quot;</span>);</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> }</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> </div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> topicTimeout = TimeSpan.FromMilliseconds(timeoutMilliseconds.Value);</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> </div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keywordflow">if</span> (!topicTimeout.HasValue)</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> {</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogDebug(<span class="stringliteral">&quot;Reattach information not found!&quot;</span>);</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="keywordflow">return</span> <span class="keyword">null</span>;</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> }</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> </div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> var dmb = await <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a732863bb9fd35fece0bb2c926b55f8e9">dmbFactory</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory.html#a8dd876c40ac37b38be7bbe71dbe0363f">FromCompileJob</a>(result.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information.html#a02ee6eb05943c4bbfed4aca64692fa80">CompileJob</a>, cancellationToken);</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="keywordflow">if</span> (dmb == <span class="keyword">null</span>)</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> {</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogError(<span class="stringliteral">&quot;Unable to reattach! Could not load .dmb!&quot;</span>);</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keywordflow">return</span> <span class="keyword">null</span>;</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> }</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> </div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> var info = <span class="keyword">new</span> <a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_reattach_information.html">ReattachInformation</a>(</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> result,</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> dmb,</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> topicTimeout.Value);</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keywordtype">bool</span> first = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> foreach (var reattachInfo in dbReattachInfos)</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> {</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="keywordflow">if</span> (first)</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> {</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> first = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> }</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> </div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> await KillProcess(reattachInfo);</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> </div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> db.ReattachInformations.Remove(reattachInfo);</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogTrace(<span class="stringliteral">&quot;Deleting ReattachInformation {id}...&quot;</span>, reattachInfo.Id);</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> }</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> await db.Save(cancellationToken);</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> });</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> </div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogDebug(<span class="stringliteral">&quot;Reattach information loaded: {0}&quot;</span>, info);</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> </div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keywordflow">return</span> info;</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> }</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> </div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aebef451cedbed6fe5a4367fe035470a7"> 176</a></span> <span class="keyword">public</span> Task <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aebef451cedbed6fe5a4367fe035470a7">Clear</a>(CancellationToken cancellationToken) =&gt; <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a2227915dc11711ab8eac49598f9bda08">databaseContextFactory</a></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> .<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42">UseContext</a>(</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> db =&gt;</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> {</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogDebug(<span class="stringliteral">&quot;Clearing reattach information&quot;</span>);</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keywordflow">return</span> <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aa948dc00c200539206747c99b95986af">ClearImpl</a>(db, <span class="keyword">true</span>, cancellationToken);</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> });</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> </div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aa948dc00c200539206747c99b95986af"> 191</a></span> async Task <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aa948dc00c200539206747c99b95986af">ClearImpl</a>(<a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html">IDatabaseContext</a> databaseContext, <span class="keywordtype">bool</span> instant, CancellationToken cancellationToken)</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> {</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> var baseQuery = databaseContext</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> .<a class="code hl_property" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html#aa06e331aeed4c0680e33e0aa2bcf81cf">ReattachInformations</a></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> .AsQueryable()</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> .Where(x =&gt; x.CompileJob.Job.Instance.Id == <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a3942d5832fa872589b17d1ea8b6d7150">metadata</a>.Id);</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> </div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="keywordflow">if</span> (instant)</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> await baseQuery</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> .DeleteAsync(cancellationToken)</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> ;</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> {</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> var results = await baseQuery.ToListAsync(cancellationToken);</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keywordflow">foreach</span> (var result <span class="keywordflow">in</span> results)</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> databaseContext.<a class="code hl_property" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html#aa06e331aeed4c0680e33e0aa2bcf81cf">ReattachInformations</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_collection.html#ad270ec18822a7a90d8fca9a75c23851a">Remove</a>(result);</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> }</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> }</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> }</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span>}</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keywordflow">if</span> (!topicTimeout.HasValue)</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> {</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogDebug(<span class="stringliteral">&quot;Reattach information not found!&quot;</span>);</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordflow">return</span> <span class="keyword">null</span>;</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> }</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> var dmb = await <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a732863bb9fd35fece0bb2c926b55f8e9">dmbFactory</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory.html#a8dd876c40ac37b38be7bbe71dbe0363f">FromCompileJob</a>(result.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information.html#a02ee6eb05943c4bbfed4aca64692fa80">CompileJob</a>, cancellationToken);</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <span class="keywordflow">if</span> (dmb == <span class="keyword">null</span>)</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> {</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogError(<span class="stringliteral">&quot;Unable to reattach! Could not load .dmb!&quot;</span>);</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> await KillProcess(result);</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> </div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> await <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a2227915dc11711ab8eac49598f9bda08">databaseContextFactory</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42">UseContext</a>(async db =&gt;</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> {</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogTrace(<span class="stringliteral">&quot;Deleting ReattachInformation {id}...&quot;</span>, result.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information.html#a5c7ca615cd5ead17d8f7cb5fddc4bc2d">Id</a>);</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> await db</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> .ReattachInformations</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> .AsQueryable()</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> .Where(x =&gt; x.Id == result.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information.html#a5c7ca615cd5ead17d8f7cb5fddc4bc2d">Id</a>)</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> .DeleteAsync(cancellationToken);</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> });</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <span class="keywordflow">return</span> <span class="keyword">null</span>;</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> }</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> </div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> var info = <span class="keyword">new</span> <a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_reattach_information.html">ReattachInformation</a>(</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> result,</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> dmb,</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> topicTimeout.Value);</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogDebug(<span class="stringliteral">&quot;Reattach information loaded: {info}&quot;</span>, info);</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> </div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <span class="keywordflow">return</span> info;</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> }</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> </div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aebef451cedbed6fe5a4367fe035470a7"> 205</a></span> <span class="keyword">public</span> Task <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aebef451cedbed6fe5a4367fe035470a7">Clear</a>(CancellationToken cancellationToken) =&gt; <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a2227915dc11711ab8eac49598f9bda08">databaseContextFactory</a></div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> .<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42">UseContext</a>(</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> db =&gt;</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> {</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogDebug(<span class="stringliteral">&quot;Clearing reattach information&quot;</span>);</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <span class="keywordflow">return</span> <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aa948dc00c200539206747c99b95986af">ClearImpl</a>(db, <span class="keyword">true</span>, cancellationToken);</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> });</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> </div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aa948dc00c200539206747c99b95986af"> 220</a></span> async Task <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aa948dc00c200539206747c99b95986af">ClearImpl</a>(<a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html">IDatabaseContext</a> databaseContext, <span class="keywordtype">bool</span> instant, CancellationToken cancellationToken)</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> {</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> var baseQuery = databaseContext</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> .<a class="code hl_property" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html#aa06e331aeed4c0680e33e0aa2bcf81cf">ReattachInformations</a></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> .AsQueryable()</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> .Where(x =&gt; x.CompileJob.Job.Instance.Id == <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a3942d5832fa872589b17d1ea8b6d7150">metadata</a>.Id);</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> </div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="keywordflow">if</span> (instant)</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> await baseQuery</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> .DeleteAsync(cancellationToken)</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> ;</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> {</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> var results = await baseQuery.ToListAsync(cancellationToken);</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">foreach</span> (var result <span class="keywordflow">in</span> results)</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> databaseContext.<a class="code hl_property" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html#aa06e331aeed4c0680e33e0aa2bcf81cf">ReattachInformations</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_collection.html#ad270ec18822a7a90d8fca9a75c23851a">Remove</a>(result);</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> }</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> }</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> }</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span>}</div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_api_1_1_models_1_1_instance_html"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_instance.html">Tgstation.Server.Api.Models.Instance</a></div><div class="ttdoc">Metadata about a server instance.</div><div class="ttdef"><b>Definition:</b> <a href="_tgstation_8_server_8_api_2_models_2_instance_8cs_source.html#l00008">Instance.cs:9</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_interop_1_1_d_m_api_parameters_html_af84241c8eda4d8f7deddb9c5b7eb79a5"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_interop_1_1_d_m_api_parameters.html#af84241c8eda4d8f7deddb9c5b7eb79a5">Tgstation.Server.Host.Components.Interop.DMApiParameters.AccessIdentifier</a></div><div class="ttdeci">string AccessIdentifier</div><div class="ttdoc">Used to identify and authenticate the DreamDaemon instance.</div><div class="ttdef"><b>Definition:</b> <a href="_d_m_api_parameters_8cs_source.html#l00014">DMApiParameters.cs:14</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_reattach_information_html"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_reattach_information.html">Tgstation.Server.Host.Components.Session.ReattachInformation</a></div><div class="ttdoc">Parameters necessary for duplicating a ISessionController session.</div><div class="ttdef"><b>Definition:</b> <a href="_components_2_session_2_reattach_information_8cs_source.html#l00013">ReattachInformation.cs:14</a></div></div>
@@ -265,11 +294,12 @@ $(function() {
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_html_a3942d5832fa872589b17d1ea8b6d7150"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a3942d5832fa872589b17d1ea8b6d7150">Tgstation.Server.Host.Components.Session.SessionPersistor.metadata</a></div><div class="ttdeci">readonly Api.Models.Instance metadata</div><div class="ttdoc">The Api.Models.Instance for the SessionPersistor.</div><div class="ttdef"><b>Definition:</b> <a href="_session_persistor_8cs_source.html#l00043">SessionPersistor.cs:43</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_html_a4fb87f9615a098b3b6a6e2ae3dfb5558"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a4fb87f9615a098b3b6a6e2ae3dfb5558">Tgstation.Server.Host.Components.Session.SessionPersistor.Save</a></div><div class="ttdeci">Task Save(ReattachInformation reattachInformation, CancellationToken cancellationToken)</div><div class="ttdoc">Save some reattachInformation . A Task representing the running operation.</div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_html_a732863bb9fd35fece0bb2c926b55f8e9"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a732863bb9fd35fece0bb2c926b55f8e9">Tgstation.Server.Host.Components.Session.SessionPersistor.dmbFactory</a></div><div class="ttdeci">readonly IDmbFactory dmbFactory</div><div class="ttdoc">The IDmbFactory for the SessionPersistor.</div><div class="ttdef"><b>Definition:</b> <a href="_session_persistor_8cs_source.html#l00028">SessionPersistor.cs:28</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_html_aa948dc00c200539206747c99b95986af"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aa948dc00c200539206747c99b95986af">Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl</a></div><div class="ttdeci">async Task ClearImpl(IDatabaseContext databaseContext, bool instant, CancellationToken cancellationToken)</div><div class="ttdoc">Clear any stored ReattachInformation.</div><div class="ttdef"><b>Definition:</b> <a href="_session_persistor_8cs_source.html#l00191">SessionPersistor.cs:191</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_html_aa948dc00c200539206747c99b95986af"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aa948dc00c200539206747c99b95986af">Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl</a></div><div class="ttdeci">async Task ClearImpl(IDatabaseContext databaseContext, bool instant, CancellationToken cancellationToken)</div><div class="ttdoc">Clear any stored ReattachInformation.</div><div class="ttdef"><b>Definition:</b> <a href="_session_persistor_8cs_source.html#l00220">SessionPersistor.cs:220</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_html_abe5082b7b4dc502b717e946a90349bb6"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#abe5082b7b4dc502b717e946a90349bb6">Tgstation.Server.Host.Components.Session.SessionPersistor.SessionPersistor</a></div><div class="ttdeci">SessionPersistor(IDatabaseContextFactory databaseContextFactory, IDmbFactory dmbFactory, IProcessExecutor processExecutor, ILogger&lt; SessionPersistor &gt; logger, Api.Models.Instance metadata)</div><div class="ttdoc">Initializes a new instance of the SessionPersistor class.</div><div class="ttdef"><b>Definition:</b> <a href="_session_persistor_8cs_source.html#l00053">SessionPersistor.cs:53</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_html_aebef451cedbed6fe5a4367fe035470a7"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aebef451cedbed6fe5a4367fe035470a7">Tgstation.Server.Host.Components.Session.SessionPersistor.Clear</a></div><div class="ttdeci">Task Clear(CancellationToken cancellationToken)</div><div class="ttdoc">Clear any stored ReattachInformation. A Task representing the running operation.</div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information_html"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information.html">Tgstation.Server.Host.Models.ReattachInformation</a></div><div class="ttdoc">Database representation of Components.Session.ReattachInformation.</div><div class="ttdef"><b>Definition:</b> <a href="_models_2_reattach_information_8cs_source.html#l00008">ReattachInformation.cs:9</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information_html_a02ee6eb05943c4bbfed4aca64692fa80"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information.html#a02ee6eb05943c4bbfed4aca64692fa80">Tgstation.Server.Host.Models.ReattachInformation.CompileJob</a></div><div class="ttdeci">CompileJob CompileJob</div><div class="ttdoc">The Models.CompileJob for the Components.Session.ReattachInformation.Dmb.</div><div class="ttdef"><b>Definition:</b> <a href="_models_2_reattach_information_8cs_source.html#l00019">ReattachInformation.cs:19</a></div></div>
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information_html_a5c7ca615cd5ead17d8f7cb5fddc4bc2d"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information.html#a5c7ca615cd5ead17d8f7cb5fddc4bc2d">Tgstation.Server.Host.Models.ReattachInformation.Id</a></div><div class="ttdeci">long Id</div><div class="ttdoc">The row Id.</div><div class="ttdef"><b>Definition:</b> <a href="_models_2_reattach_information_8cs_source.html#l00013">ReattachInformation.cs:13</a></div></div>
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory_html"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory.html">Tgstation.Server.Host.Components.Deployment.IDmbFactory</a></div><div class="ttdoc">Factory for IDmbProviders.</div><div class="ttdef"><b>Definition:</b> <a href="_i_dmb_factory_8cs_source.html#l00014">IDmbFactory.cs:15</a></div></div>
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory_html_a8dd876c40ac37b38be7bbe71dbe0363f"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory.html#a8dd876c40ac37b38be7bbe71dbe0363f">Tgstation.Server.Host.Components.Deployment.IDmbFactory.FromCompileJob</a></div><div class="ttdeci">Task&lt; IDmbProvider &gt; FromCompileJob(CompileJob compileJob, CancellationToken cancellationToken)</div><div class="ttdoc">Gets a IDmbProvider for a given CompileJob.</div></div>
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_i_session_persistor_html"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_i_session_persistor.html">Tgstation.Server.Host.Components.Session.ISessionPersistor</a></div><div class="ttdoc">Handles saving and loading ReattachInformation.</div><div class="ttdef"><b>Definition:</b> <a href="_i_session_persistor_8cs_source.html#l00009">ISessionPersistor.cs:10</a></div></div>
@@ -279,6 +309,7 @@ $(function() {
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_html"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html">Tgstation.Server.Host.Database.IDatabaseContext</a></div><div class="ttdoc">Represents the database.</div><div class="ttdef"><b>Definition:</b> <a href="_i_database_context_8cs_source.html#l00016">IDatabaseContext.cs:17</a></div></div>
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_html_aa06e331aeed4c0680e33e0aa2bcf81cf"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html#aa06e331aeed4c0680e33e0aa2bcf81cf">Tgstation.Server.Host.Database.IDatabaseContext.ReattachInformations</a></div><div class="ttdeci">IDatabaseCollection&lt; ReattachInformation &gt; ReattachInformations</div><div class="ttdoc">The DbSet&lt;TEntity&gt; for ReattachInformations.</div><div class="ttdef"><b>Definition:</b> <a href="_i_database_context_8cs_source.html#l00076">IDatabaseContext.cs:76</a></div></div>
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_html"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor.html">Tgstation.Server.Host.System.IProcessExecutor</a></div><div class="ttdoc">For launching IProcess'.</div><div class="ttdef"><b>Definition:</b> <a href="_i_process_executor_8cs_source.html#l00006">IProcessExecutor.cs:7</a></div></div>
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_html_a5618ee521ada90bb15bf3315440898f3"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor.html#a5618ee521ada90bb15bf3315440898f3">Tgstation.Server.Host.System.IProcessExecutor.GetProcess</a></div><div class="ttdeci">IProcess GetProcess(int id)</div><div class="ttdoc">Get a IProcess by id .</div></div>
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_html"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment.html">Tgstation.Server.Host.Components.Deployment</a></div><div class="ttdef"><b>Definition:</b> <a href="_dmb_factory_8cs_source.html#l00017">DmbFactory.cs:18</a></div></div>
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_html"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_session.html">Tgstation.Server.Host.Components.Session</a></div><div class="ttdef"><b>Definition:</b> <a href="_api_validation_status_8cs_source.html#l00001">ApiValidationStatus.cs:2</a></div></div>
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_html_a3a9adb69be732dbd67aef59559f830c2"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_session.html#a3a9adb69be732dbd67aef59559f830c2">Tgstation.Server.Host.Components.Session.RebootState</a></div><div class="ttdeci">RebootState</div><div class="ttdoc">Represents the action to take when /world/Reboot() is called.</div><div class="ttdef"><b>Definition:</b> <a href="_reboot_state_8cs_source.html#l00006">RebootState.cs:7</a></div></div>
@@ -289,7 +289,7 @@ Private Attributes</h2></td></tr>
<p>Implements <a class="el" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_i_session_persistor.html#a3d95026a414e6323100ca9f0ae2e8804">Tgstation.Server.Host.Components.Session.ISessionPersistor</a>.</p>
<p class="reference">References <a class="el" href="_session_persistor_8cs_source.html#l00191">Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl()</a>, and <a class="el" href="_session_persistor_8cs_source.html#l00038">Tgstation.Server.Host.Components.Session.SessionPersistor.logger</a>.</p>
<p class="reference">References <a class="el" href="_session_persistor_8cs_source.html#l00220">Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl()</a>, and <a class="el" href="_session_persistor_8cs_source.html#l00038">Tgstation.Server.Host.Components.Session.SessionPersistor.logger</a>.</p>
<p class="reference">Referenced by <a class="el" href="_watchdog_base_8cs_source.html#l00631">Tgstation.Server.Host.Components.Watchdog.WatchdogBase.DisposeAndNullControllers()</a>.</p>
<div class="dynheader">
@@ -375,24 +375,24 @@ Here is the caller graph for this function:</div>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A Task representing the running operation.</dd></dl>
<p class="definition">Definition at line <a class="el" href="_session_persistor_8cs_source.html#l00191">191</a> of file <a class="el" href="_session_persistor_8cs_source.html">SessionPersistor.cs</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 192</span> {</div>
<div class="line"><span class="lineno"> 193</span> var baseQuery = databaseContext</div>
<div class="line"><span class="lineno"> 194</span> .<a class="code hl_property" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html#aa06e331aeed4c0680e33e0aa2bcf81cf">ReattachInformations</a></div>
<div class="line"><span class="lineno"> 195</span> .AsQueryable()</div>
<div class="line"><span class="lineno"> 196</span> .Where(x =&gt; x.CompileJob.Job.Instance.Id == <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a3942d5832fa872589b17d1ea8b6d7150">metadata</a>.Id);</div>
<div class="line"><span class="lineno"> 197</span> </div>
<div class="line"><span class="lineno"> 198</span> <span class="keywordflow">if</span> (instant)</div>
<div class="line"><span class="lineno"> 199</span> await baseQuery</div>
<div class="line"><span class="lineno"> 200</span> .DeleteAsync(cancellationToken)</div>
<div class="line"><span class="lineno"> 201</span> ;</div>
<div class="line"><span class="lineno"> 202</span> <span class="keywordflow">else</span></div>
<div class="line"><span class="lineno"> 203</span> {</div>
<div class="line"><span class="lineno"> 204</span> var results = await baseQuery.ToListAsync(cancellationToken);</div>
<div class="line"><span class="lineno"> 205</span> <span class="keywordflow">foreach</span> (var result <span class="keywordflow">in</span> results)</div>
<div class="line"><span class="lineno"> 206</span> databaseContext.<a class="code hl_property" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html#aa06e331aeed4c0680e33e0aa2bcf81cf">ReattachInformations</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_collection.html#ad270ec18822a7a90d8fca9a75c23851a">Remove</a>(result);</div>
<div class="line"><span class="lineno"> 207</span> }</div>
<div class="line"><span class="lineno"> 208</span> }</div>
<p class="definition">Definition at line <a class="el" href="_session_persistor_8cs_source.html#l00220">220</a> of file <a class="el" href="_session_persistor_8cs_source.html">SessionPersistor.cs</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 221</span> {</div>
<div class="line"><span class="lineno"> 222</span> var baseQuery = databaseContext</div>
<div class="line"><span class="lineno"> 223</span> .<a class="code hl_property" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html#aa06e331aeed4c0680e33e0aa2bcf81cf">ReattachInformations</a></div>
<div class="line"><span class="lineno"> 224</span> .AsQueryable()</div>
<div class="line"><span class="lineno"> 225</span> .Where(x =&gt; x.CompileJob.Job.Instance.Id == <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a3942d5832fa872589b17d1ea8b6d7150">metadata</a>.Id);</div>
<div class="line"><span class="lineno"> 226</span> </div>
<div class="line"><span class="lineno"> 227</span> <span class="keywordflow">if</span> (instant)</div>
<div class="line"><span class="lineno"> 228</span> await baseQuery</div>
<div class="line"><span class="lineno"> 229</span> .DeleteAsync(cancellationToken)</div>
<div class="line"><span class="lineno"> 230</span> ;</div>
<div class="line"><span class="lineno"> 231</span> <span class="keywordflow">else</span></div>
<div class="line"><span class="lineno"> 232</span> {</div>
<div class="line"><span class="lineno"> 233</span> var results = await baseQuery.ToListAsync(cancellationToken);</div>
<div class="line"><span class="lineno"> 234</span> <span class="keywordflow">foreach</span> (var result <span class="keywordflow">in</span> results)</div>
<div class="line"><span class="lineno"> 235</span> databaseContext.<a class="code hl_property" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html#aa06e331aeed4c0680e33e0aa2bcf81cf">ReattachInformations</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_collection.html#ad270ec18822a7a90d8fca9a75c23851a">Remove</a>(result);</div>
<div class="line"><span class="lineno"> 236</span> }</div>
<div class="line"><span class="lineno"> 237</span> }</div>
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_collection_html_ad270ec18822a7a90d8fca9a75c23851a"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_collection.html#ad270ec18822a7a90d8fca9a75c23851a">Tgstation.Server.Host.Database.IDatabaseCollection.Remove</a></div><div class="ttdeci">void Remove(TModel model)</div><div class="ttdoc">Remove a given model from the the working set.</div></div>
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_html_aa06e331aeed4c0680e33e0aa2bcf81cf"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context.html#aa06e331aeed4c0680e33e0aa2bcf81cf">Tgstation.Server.Host.Database.IDatabaseContext.ReattachInformations</a></div><div class="ttdeci">IDatabaseCollection&lt; ReattachInformation &gt; ReattachInformations</div><div class="ttdoc">The DbSet&lt;TEntity&gt; for ReattachInformations.</div><div class="ttdef"><b>Definition:</b> <a href="_i_database_context_8cs_source.html#l00076">IDatabaseContext.cs:76</a></div></div>
</div><!-- fragment -->
@@ -463,87 +463,117 @@ Here is the caller graph for this function:</div>
<div class="fragment"><div class="line"><span class="lineno"> 94</span> {</div>
<div class="line"><span class="lineno"> 95</span> Models.ReattachInformation result = <span class="keyword">null</span>;</div>
<div class="line"><span class="lineno"> 96</span> TimeSpan? topicTimeout = <span class="keyword">null</span>;</div>
<div class="line"><span class="lineno"> 97</span> await <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a2227915dc11711ab8eac49598f9bda08">databaseContextFactory</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42">UseContext</a>(async (db) =&gt;</div>
<div class="line"><span class="lineno"> 98</span> {</div>
<div class="line"><span class="lineno"> 99</span> var dbReattachInfos = await db</div>
<div class="line"><span class="lineno"> 100</span> .ReattachInformations</div>
<div class="line"><span class="lineno"> 101</span> .AsQueryable()</div>
<div class="line"><span class="lineno"> 102</span> .Where(x =&gt; x.CompileJob.Job.Instance.Id == <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a3942d5832fa872589b17d1ea8b6d7150">metadata</a>.Id)</div>
<div class="line"><span class="lineno"> 103</span> .Include(x =&gt; x.CompileJob)</div>
<div class="line"><span class="lineno"> 104</span> .ToListAsync(cancellationToken);</div>
<div class="line"><span class="lineno"> 105</span> result = dbReattachInfos.FirstOrDefault();</div>
<div class="line"><span class="lineno"> 106</span> if (result == <span class="keywordflow">default</span>)</div>
<div class="line"><span class="lineno"> 107</span> <span class="keywordflow">return</span>;</div>
<div class="line"><span class="lineno"> 108</span> </div>
<div class="line"><span class="lineno"> 109</span> var timeoutMilliseconds = await db</div>
<div class="line"><span class="lineno"> 110</span> .Instances</div>
<div class="line"><span class="lineno"> 111</span> .AsQueryable()</div>
<div class="line"><span class="lineno"> 112</span> .Where(x =&gt; x.Id == <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a3942d5832fa872589b17d1ea8b6d7150">metadata</a>.Id)</div>
<div class="line"><span class="lineno"> 113</span> .Select(x =&gt; x.DreamDaemonSettings.TopicRequestTimeout)</div>
<div class="line"><span class="lineno"> 114</span> .FirstOrDefaultAsync(cancellationToken)</div>
<div class="line"><span class="lineno"> 115</span> ;</div>
<div class="line"><span class="lineno"> 116</span> </div>
<div class="line"><span class="lineno"> 117</span> if (timeoutMilliseconds == <span class="keywordflow">default</span>)</div>
<div class="line"><span class="lineno"> 118</span> {</div>
<div class="line"><span class="lineno"> 119</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogCritical(<span class="stringliteral">&quot;Missing TopicRequestTimeout!&quot;</span>);</div>
<div class="line"><span class="lineno"> 120</span> <span class="keywordflow">return</span>;</div>
<div class="line"><span class="lineno"> 97</span> </div>
<div class="line"><span class="lineno"> 98</span> async Task KillProcess(Models.ReattachInformation reattachInfo)</div>
<div class="line"><span class="lineno"> 99</span> {</div>
<div class="line"><span class="lineno"> 100</span> <span class="keywordflow">try</span></div>
<div class="line"><span class="lineno"> 101</span> {</div>
<div class="line"><span class="lineno"> 102</span> <span class="keyword">using </span>var process = <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a1e099a9da77ecb396147ac6c4e85f4f0">processExecutor</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor.html#a5618ee521ada90bb15bf3315440898f3">GetProcess</a>(reattachInfo.ProcessId);</div>
<div class="line"><span class="lineno"> 103</span> <span class="keywordflow">if</span> (process != <span class="keyword">null</span>)</div>
<div class="line"><span class="lineno"> 104</span> {</div>
<div class="line"><span class="lineno"> 105</span> <span class="keywordflow">if</span> (reattachInfo == result)</div>
<div class="line"><span class="lineno"> 106</span> {</div>
<div class="line"><span class="lineno"> 107</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogWarning(<span class="stringliteral">&quot;Killing PID {pid} associated with CompileJob-less reattach information...&quot;</span>, reattachInfo.ProcessId);</div>
<div class="line"><span class="lineno"> 108</span> }</div>
<div class="line"><span class="lineno"> 109</span> <span class="keywordflow">else</span></div>
<div class="line"><span class="lineno"> 110</span> {</div>
<div class="line"><span class="lineno"> 111</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogWarning(<span class="stringliteral">&quot;Killing PID {pid} associated with extra reattach information...&quot;</span>, reattachInfo.ProcessId);</div>
<div class="line"><span class="lineno"> 112</span> }</div>
<div class="line"><span class="lineno"> 113</span> </div>
<div class="line"><span class="lineno"> 114</span> process.Terminate();</div>
<div class="line"><span class="lineno"> 115</span> await process.Lifetime;</div>
<div class="line"><span class="lineno"> 116</span> }</div>
<div class="line"><span class="lineno"> 117</span> }</div>
<div class="line"><span class="lineno"> 118</span> <span class="keywordflow">catch</span> (Exception ex)</div>
<div class="line"><span class="lineno"> 119</span> {</div>
<div class="line"><span class="lineno"> 120</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogWarning(ex, <span class="stringliteral">&quot;Failed to kill process!&quot;</span>);</div>
<div class="line"><span class="lineno"> 121</span> }</div>
<div class="line"><span class="lineno"> 122</span> </div>
<div class="line"><span class="lineno"> 123</span> topicTimeout = TimeSpan.FromMilliseconds(timeoutMilliseconds.Value);</div>
<div class="line"><span class="lineno"> 124</span> </div>
<div class="line"><span class="lineno"> 125</span> <span class="keywordtype">bool</span> first = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 126</span> foreach (var reattachInfo in dbReattachInfos)</div>
<div class="line"><span class="lineno"> 127</span> {</div>
<div class="line"><span class="lineno"> 128</span> <span class="keywordflow">if</span> (first)</div>
<div class="line"><span class="lineno"> 129</span> {</div>
<div class="line"><span class="lineno"> 130</span> first = <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 131</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><span class="lineno"> 132</span> }</div>
<div class="line"><span class="lineno"> 133</span> </div>
<div class="line"><span class="lineno"> 134</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogWarning(<span class="stringliteral">&quot;Killing PID {0} associated with extra reattach information...&quot;</span>, reattachInfo.ProcessId);</div>
<div class="line"><span class="lineno"> 135</span> <span class="keywordflow">try</span></div>
<div class="line"><span class="lineno"> 136</span> {</div>
<div class="line"><span class="lineno"> 137</span> using var process = processExecutor.GetProcess(reattachInfo.ProcessId);</div>
<div class="line"><span class="lineno"> 138</span> process.Terminate();</div>
<div class="line"><span class="lineno"> 139</span> await process.Lifetime;</div>
<div class="line"><span class="lineno"> 140</span> }</div>
<div class="line"><span class="lineno"> 141</span> catch (Exception ex)</div>
<div class="line"><span class="lineno"> 142</span> {</div>
<div class="line"><span class="lineno"> 143</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogWarning(ex, <span class="stringliteral">&quot;Failed to kill process!&quot;</span>);</div>
<div class="line"><span class="lineno"> 144</span> }</div>
<div class="line"><span class="lineno"> 145</span> </div>
<div class="line"><span class="lineno"> 146</span> db.ReattachInformations.Remove(reattachInfo);</div>
<div class="line"><span class="lineno"> 147</span> }</div>
<div class="line"><span class="lineno"> 148</span> </div>
<div class="line"><span class="lineno"> 149</span> await db.Save(cancellationToken);</div>
<div class="line"><span class="lineno"> 150</span> });</div>
<div class="line"><span class="lineno"> 122</span> }</div>
<div class="line"><span class="lineno"> 123</span> </div>
<div class="line"><span class="lineno"> 124</span> await <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a2227915dc11711ab8eac49598f9bda08">databaseContextFactory</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42">UseContext</a>(async (db) =&gt;</div>
<div class="line"><span class="lineno"> 125</span> {</div>
<div class="line"><span class="lineno"> 126</span> var dbReattachInfos = await db</div>
<div class="line"><span class="lineno"> 127</span> .ReattachInformations</div>
<div class="line"><span class="lineno"> 128</span> .AsQueryable()</div>
<div class="line"><span class="lineno"> 129</span> .Where(x =&gt; x.CompileJob.Job.Instance.Id == <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a3942d5832fa872589b17d1ea8b6d7150">metadata</a>.Id)</div>
<div class="line"><span class="lineno"> 130</span> .Include(x =&gt; x.CompileJob)</div>
<div class="line"><span class="lineno"> 131</span> .ToListAsync(cancellationToken);</div>
<div class="line"><span class="lineno"> 132</span> result = dbReattachInfos.FirstOrDefault();</div>
<div class="line"><span class="lineno"> 133</span> if (result == <span class="keywordflow">default</span>)</div>
<div class="line"><span class="lineno"> 134</span> <span class="keywordflow">return</span>;</div>
<div class="line"><span class="lineno"> 135</span> </div>
<div class="line"><span class="lineno"> 136</span> var timeoutMilliseconds = await db</div>
<div class="line"><span class="lineno"> 137</span> .Instances</div>
<div class="line"><span class="lineno"> 138</span> .AsQueryable()</div>
<div class="line"><span class="lineno"> 139</span> .Where(x =&gt; x.Id == <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a3942d5832fa872589b17d1ea8b6d7150">metadata</a>.Id)</div>
<div class="line"><span class="lineno"> 140</span> .Select(x =&gt; x.DreamDaemonSettings.TopicRequestTimeout)</div>
<div class="line"><span class="lineno"> 141</span> .FirstOrDefaultAsync(cancellationToken)</div>
<div class="line"><span class="lineno"> 142</span> ;</div>
<div class="line"><span class="lineno"> 143</span> </div>
<div class="line"><span class="lineno"> 144</span> if (timeoutMilliseconds == <span class="keywordflow">default</span>)</div>
<div class="line"><span class="lineno"> 145</span> {</div>
<div class="line"><span class="lineno"> 146</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogCritical(<span class="stringliteral">&quot;Missing TopicRequestTimeout!&quot;</span>);</div>
<div class="line"><span class="lineno"> 147</span> <span class="keywordflow">return</span>;</div>
<div class="line"><span class="lineno"> 148</span> }</div>
<div class="line"><span class="lineno"> 149</span> </div>
<div class="line"><span class="lineno"> 150</span> topicTimeout = TimeSpan.FromMilliseconds(timeoutMilliseconds.Value);</div>
<div class="line"><span class="lineno"> 151</span> </div>
<div class="line"><span class="lineno"> 152</span> <span class="keywordflow">if</span> (!topicTimeout.HasValue)</div>
<div class="line"><span class="lineno"> 153</span> {</div>
<div class="line"><span class="lineno"> 154</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogDebug(<span class="stringliteral">&quot;Reattach information not found!&quot;</span>);</div>
<div class="line"><span class="lineno"> 155</span> <span class="keywordflow">return</span> <span class="keyword">null</span>;</div>
<div class="line"><span class="lineno"> 156</span> }</div>
<div class="line"><span class="lineno"> 157</span> </div>
<div class="line"><span class="lineno"> 158</span> var dmb = await <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a732863bb9fd35fece0bb2c926b55f8e9">dmbFactory</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory.html#a8dd876c40ac37b38be7bbe71dbe0363f">FromCompileJob</a>(result.CompileJob, cancellationToken);</div>
<div class="line"><span class="lineno"> 159</span> <span class="keywordflow">if</span> (dmb == <span class="keyword">null</span>)</div>
<div class="line"><span class="lineno"> 160</span> {</div>
<div class="line"><span class="lineno"> 161</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogError(<span class="stringliteral">&quot;Unable to reattach! Could not load .dmb!&quot;</span>);</div>
<div class="line"><span class="lineno"> 162</span> <span class="keywordflow">return</span> <span class="keyword">null</span>;</div>
<div class="line"><span class="lineno"> 163</span> }</div>
<div class="line"><span class="lineno"> 164</span> </div>
<div class="line"><span class="lineno"> 165</span> var info = <span class="keyword">new</span> ReattachInformation(</div>
<div class="line"><span class="lineno"> 166</span> result,</div>
<div class="line"><span class="lineno"> 167</span> dmb,</div>
<div class="line"><span class="lineno"> 168</span> topicTimeout.Value);</div>
<div class="line"><span class="lineno"> 152</span> <span class="keywordtype">bool</span> first = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 153</span> foreach (var reattachInfo in dbReattachInfos)</div>
<div class="line"><span class="lineno"> 154</span> {</div>
<div class="line"><span class="lineno"> 155</span> <span class="keywordflow">if</span> (first)</div>
<div class="line"><span class="lineno"> 156</span> {</div>
<div class="line"><span class="lineno"> 157</span> first = <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 158</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><span class="lineno"> 159</span> }</div>
<div class="line"><span class="lineno"> 160</span> </div>
<div class="line"><span class="lineno"> 161</span> await KillProcess(reattachInfo);</div>
<div class="line"><span class="lineno"> 162</span> </div>
<div class="line"><span class="lineno"> 163</span> db.ReattachInformations.Remove(reattachInfo);</div>
<div class="line"><span class="lineno"> 164</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogTrace(<span class="stringliteral">&quot;Deleting ReattachInformation {id}...&quot;</span>, reattachInfo.Id);</div>
<div class="line"><span class="lineno"> 165</span> }</div>
<div class="line"><span class="lineno"> 166</span> </div>
<div class="line"><span class="lineno"> 167</span> await db.Save(cancellationToken);</div>
<div class="line"><span class="lineno"> 168</span> });</div>
<div class="line"><span class="lineno"> 169</span> </div>
<div class="line"><span class="lineno"> 170</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogDebug(<span class="stringliteral">&quot;Reattach information loaded: {0}&quot;</span>, info);</div>
<div class="line"><span class="lineno"> 171</span> </div>
<div class="line"><span class="lineno"> 172</span> <span class="keywordflow">return</span> info;</div>
<div class="line"><span class="lineno"> 173</span> }</div>
<div class="line"><span class="lineno"> 170</span> <span class="keywordflow">if</span> (!topicTimeout.HasValue)</div>
<div class="line"><span class="lineno"> 171</span> {</div>
<div class="line"><span class="lineno"> 172</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogDebug(<span class="stringliteral">&quot;Reattach information not found!&quot;</span>);</div>
<div class="line"><span class="lineno"> 173</span> <span class="keywordflow">return</span> <span class="keyword">null</span>;</div>
<div class="line"><span class="lineno"> 174</span> }</div>
<div class="line"><span class="lineno"> 175</span> </div>
<div class="line"><span class="lineno"> 176</span> var dmb = await <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a732863bb9fd35fece0bb2c926b55f8e9">dmbFactory</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory.html#a8dd876c40ac37b38be7bbe71dbe0363f">FromCompileJob</a>(result.CompileJob, cancellationToken);</div>
<div class="line"><span class="lineno"> 177</span> <span class="keywordflow">if</span> (dmb == <span class="keyword">null</span>)</div>
<div class="line"><span class="lineno"> 178</span> {</div>
<div class="line"><span class="lineno"> 179</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogError(<span class="stringliteral">&quot;Unable to reattach! Could not load .dmb!&quot;</span>);</div>
<div class="line"><span class="lineno"> 180</span> await KillProcess(result);</div>
<div class="line"><span class="lineno"> 181</span> </div>
<div class="line"><span class="lineno"> 182</span> await <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a2227915dc11711ab8eac49598f9bda08">databaseContextFactory</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42">UseContext</a>(async db =&gt;</div>
<div class="line"><span class="lineno"> 183</span> {</div>
<div class="line"><span class="lineno"> 184</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogTrace(<span class="stringliteral">&quot;Deleting ReattachInformation {id}...&quot;</span>, result.Id);</div>
<div class="line"><span class="lineno"> 185</span> await db</div>
<div class="line"><span class="lineno"> 186</span> .ReattachInformations</div>
<div class="line"><span class="lineno"> 187</span> .AsQueryable()</div>
<div class="line"><span class="lineno"> 188</span> .Where(x =&gt; x.Id == result.Id)</div>
<div class="line"><span class="lineno"> 189</span> .DeleteAsync(cancellationToken);</div>
<div class="line"><span class="lineno"> 190</span> });</div>
<div class="line"><span class="lineno"> 191</span> <span class="keywordflow">return</span> <span class="keyword">null</span>;</div>
<div class="line"><span class="lineno"> 192</span> }</div>
<div class="line"><span class="lineno"> 193</span> </div>
<div class="line"><span class="lineno"> 194</span> var info = <span class="keyword">new</span> ReattachInformation(</div>
<div class="line"><span class="lineno"> 195</span> result,</div>
<div class="line"><span class="lineno"> 196</span> dmb,</div>
<div class="line"><span class="lineno"> 197</span> topicTimeout.Value);</div>
<div class="line"><span class="lineno"> 198</span> </div>
<div class="line"><span class="lineno"> 199</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a0ef7e017c943539a83aca36c6a1bba4f">logger</a>.LogDebug(<span class="stringliteral">&quot;Reattach information loaded: {info}&quot;</span>, info);</div>
<div class="line"><span class="lineno"> 200</span> </div>
<div class="line"><span class="lineno"> 201</span> <span class="keywordflow">return</span> info;</div>
<div class="line"><span class="lineno"> 202</span> }</div>
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory_html_a8dd876c40ac37b38be7bbe71dbe0363f"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory.html#a8dd876c40ac37b38be7bbe71dbe0363f">Tgstation.Server.Host.Components.Deployment.IDmbFactory.FromCompileJob</a></div><div class="ttdeci">Task&lt; IDmbProvider &gt; FromCompileJob(CompileJob compileJob, CancellationToken cancellationToken)</div><div class="ttdoc">Gets a IDmbProvider for a given CompileJob.</div></div>
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory_html_ad22fce8fc51129e9da203dcef2f7ab42"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42">Tgstation.Server.Host.Database.IDatabaseContextFactory.UseContext</a></div><div class="ttdeci">Task UseContext(Func&lt; IDatabaseContext, Task &gt; operation)</div><div class="ttdoc">Run an operation in the scope of an IDatabaseContext.</div></div>
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_html_a5618ee521ada90bb15bf3315440898f3"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor.html#a5618ee521ada90bb15bf3315440898f3">Tgstation.Server.Host.System.IProcessExecutor.GetProcess</a></div><div class="ttdeci">IProcess GetProcess(int id)</div><div class="ttdoc">Get a IProcess by id .</div></div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="_models_2_reattach_information_8cs_source.html#l00019">Tgstation.Server.Host.Models.ReattachInformation.CompileJob</a>, <a class="el" href="_session_persistor_8cs_source.html#l00023">Tgstation.Server.Host.Components.Session.SessionPersistor.databaseContextFactory</a>, <a class="el" href="_session_persistor_8cs_source.html#l00028">Tgstation.Server.Host.Components.Session.SessionPersistor.dmbFactory</a>, <a class="el" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory.html#a8dd876c40ac37b38be7bbe71dbe0363f">Tgstation.Server.Host.Components.Deployment.IDmbFactory.FromCompileJob()</a>, <a class="el" href="_session_persistor_8cs_source.html#l00038">Tgstation.Server.Host.Components.Session.SessionPersistor.logger</a>, <a class="el" href="_session_persistor_8cs_source.html#l00043">Tgstation.Server.Host.Components.Session.SessionPersistor.metadata</a>, and <a class="el" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42">Tgstation.Server.Host.Database.IDatabaseContextFactory.UseContext()</a>.</p>
<p class="reference">References <a class="el" href="_models_2_reattach_information_8cs_source.html#l00019">Tgstation.Server.Host.Models.ReattachInformation.CompileJob</a>, <a class="el" href="_session_persistor_8cs_source.html#l00023">Tgstation.Server.Host.Components.Session.SessionPersistor.databaseContextFactory</a>, <a class="el" href="_session_persistor_8cs_source.html#l00028">Tgstation.Server.Host.Components.Session.SessionPersistor.dmbFactory</a>, <a class="el" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory.html#a8dd876c40ac37b38be7bbe71dbe0363f">Tgstation.Server.Host.Components.Deployment.IDmbFactory.FromCompileJob()</a>, <a class="el" href="interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor.html#a5618ee521ada90bb15bf3315440898f3">Tgstation.Server.Host.System.IProcessExecutor.GetProcess()</a>, <a class="el" href="_models_2_reattach_information_8cs_source.html#l00013">Tgstation.Server.Host.Models.ReattachInformation.Id</a>, <a class="el" href="_session_persistor_8cs_source.html#l00038">Tgstation.Server.Host.Components.Session.SessionPersistor.logger</a>, <a class="el" href="_session_persistor_8cs_source.html#l00043">Tgstation.Server.Host.Components.Session.SessionPersistor.metadata</a>, <a class="el" href="_session_persistor_8cs_source.html#l00033">Tgstation.Server.Host.Components.Session.SessionPersistor.processExecutor</a>, and <a class="el" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42">Tgstation.Server.Host.Database.IDatabaseContextFactory.UseContext()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_watchdog_base_8cs_source.html#l00342">Tgstation.Server.Host.Components.Watchdog.WatchdogBase.StartAsync()</a>.</p>
<div class="dynheader">
@@ -551,9 +581,10 @@ Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.png" border="0" usemap="#aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph" alt=""/></div>
<map name="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph">
<area shape="rect" title="Load a saved ReattachInformation. A Task&lt;TResult&gt; resulting in the stored ReattachInformation if any." alt="" coords="5,37,232,77"/>
<area shape="rect" title="Load a saved ReattachInformation. A Task&lt;TResult&gt; resulting in the stored ReattachInformation if any." alt="" coords="5,69,232,109"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory.html#a8dd876c40ac37b38be7bbe71dbe0363f" title="Gets a IDmbProvider for a given CompileJob." alt="" coords="280,5,548,45"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42" title="Run an operation &#160;in the scope of an IDatabaseContext." alt="" coords="295,69,533,109"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor.html#a5618ee521ada90bb15bf3315440898f3" title="Get a IProcess by id ." alt="" coords="315,69,513,109"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42" title="Run an operation &#160;in the scope of an IDatabaseContext." alt="" coords="295,133,533,173"/>
</map>
</div>
<div class="dynheader">
@@ -606,7 +637,7 @@ Here is the caller graph for this function:</div>
<p>Implements <a class="el" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_i_session_persistor.html#ad37308dbcca09a8621c7b1f7c443d6c3">Tgstation.Server.Host.Components.Session.ISessionPersistor</a>.</p>
<p class="reference">References <a class="el" href="_d_m_api_parameters_8cs_source.html#l00014">Tgstation.Server.Host.Components.Interop.DMApiParameters.AccessIdentifier</a>, <a class="el" href="_session_persistor_8cs_source.html#l00191">Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl()</a>, and <a class="el" href="_session_persistor_8cs_source.html#l00038">Tgstation.Server.Host.Components.Session.SessionPersistor.logger</a>.</p>
<p class="reference">References <a class="el" href="_d_m_api_parameters_8cs_source.html#l00014">Tgstation.Server.Host.Components.Interop.DMApiParameters.AccessIdentifier</a>, <a class="el" href="_session_persistor_8cs_source.html#l00220">Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl()</a>, and <a class="el" href="_session_persistor_8cs_source.html#l00038">Tgstation.Server.Host.Components.Session.SessionPersistor.logger</a>.</p>
<p class="reference">Referenced by <a class="el" href="_basic_watchdog_8cs_source.html#l00202">Tgstation.Server.Host.Components.Watchdog.BasicWatchdog.InitController()</a>.</p>
<div class="dynheader">
@@ -740,7 +771,7 @@ Here is the caller graph for this function:</div>
<p class="definition">Definition at line <a class="el" href="_session_persistor_8cs_source.html#l00043">43</a> of file <a class="el" href="_session_persistor_8cs_source.html">SessionPersistor.cs</a>.</p>
<p class="reference">Referenced by <a class="el" href="_session_persistor_8cs_source.html#l00191">Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl()</a>, <a class="el" href="_session_persistor_8cs_source.html#l00093">Tgstation.Server.Host.Components.Session.SessionPersistor.Load()</a>, and <a class="el" href="_session_persistor_8cs_source.html#l00053">Tgstation.Server.Host.Components.Session.SessionPersistor.SessionPersistor()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_session_persistor_8cs_source.html#l00220">Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl()</a>, <a class="el" href="_session_persistor_8cs_source.html#l00093">Tgstation.Server.Host.Components.Session.SessionPersistor.Load()</a>, and <a class="el" href="_session_persistor_8cs_source.html#l00053">Tgstation.Server.Host.Components.Session.SessionPersistor.SessionPersistor()</a>.</p>
</div>
</div>
@@ -768,7 +799,7 @@ Here is the caller graph for this function:</div>
<p class="definition">Definition at line <a class="el" href="_session_persistor_8cs_source.html#l00033">33</a> of file <a class="el" href="_session_persistor_8cs_source.html">SessionPersistor.cs</a>.</p>
<p class="reference">Referenced by <a class="el" href="_session_persistor_8cs_source.html#l00053">Tgstation.Server.Host.Components.Session.SessionPersistor.SessionPersistor()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_session_persistor_8cs_source.html#l00093">Tgstation.Server.Host.Components.Session.SessionPersistor.Load()</a>, and <a class="el" href="_session_persistor_8cs_source.html#l00053">Tgstation.Server.Host.Components.Session.SessionPersistor.SessionPersistor()</a>.</p>
</div>
</div>
@@ -1,5 +1,6 @@
<map id="Tgstation.Server.Host.Components.Session.SessionPersistor.Load" name="Tgstation.Server.Host.Components.Session.SessionPersistor.Load">
<area shape="rect" id="node1" title="Load a saved ReattachInformation. A Task&lt;TResult&gt; resulting in the stored ReattachInformation if any." alt="" coords="5,37,232,77"/>
<area shape="rect" id="node1" title="Load a saved ReattachInformation. A Task&lt;TResult&gt; resulting in the stored ReattachInformation if any." alt="" coords="5,69,232,109"/>
<area shape="rect" id="node2" href="$interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory.html#a8dd876c40ac37b38be7bbe71dbe0363f" title="Gets a IDmbProvider for a given CompileJob." alt="" coords="280,5,548,45"/>
<area shape="rect" id="node3" href="$interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42" title="Run an operation &#160;in the scope of an IDatabaseContext." alt="" coords="295,69,533,109"/>
<area shape="rect" id="node3" href="$interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor.html#a5618ee521ada90bb15bf3315440898f3" title="Get a IProcess by id ." alt="" coords="315,69,513,109"/>
<area shape="rect" id="node4" href="$interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42" title="Run an operation &#160;in the scope of an IDatabaseContext." alt="" coords="295,133,533,173"/>
</map>
@@ -1 +1 @@
d4f8af4d5efe452fc54088d7a93ebac1
4a2d82eb817c5f18fe3a302ca2488d01
Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 22 KiB

@@ -2948,32 +2948,33 @@ Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.png" border="0" usemap="#aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph" alt=""/></div>
<map name="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph">
<area shape="rect" title=" " alt="" coords="5,520,244,560"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#af5d1f2571cdce3431ab477a9c9c3e6f4" title="Launches the watchdog." alt="" coords="292,458,555,498"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_core_1_1_semaphore_slim_context.html#a777a45bdcc1be5005b5a3ef72618a04e" title="Asyncronously locks a semaphore ." alt="" coords="1704,90,1895,130"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a1e73c7faa5f961369020355979f55ada" title="Load a saved ReattachInformation. A Task&lt;TResult&gt; resulting in the stored ReattachInformation if any." alt="" coords="310,580,537,620"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_jobs_1_1_i_job_manager.html#a21be789f798adf9985f2432d3499b4cd" title="Registers a given Job and begins running it." alt="" coords="321,644,525,684"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a3067474bf7404758391b6412e2f6454a" title="Handle a given eventType &#160;without re&#45;throwing errors." alt="" coords="603,544,921,584"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#aea6ea203494afd514530ef26724194fa" title="Starts all ISessionControllers." alt="" coords="639,429,885,469"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#adfec26f530228b80d384b86ee979ef2f" title="The main loop of the watchdog. Ayschronously waits for events to occur and then responds to them." alt="" coords="627,292,897,332"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_chat_1_1_i_chat_manager.html#a1f6855c98ad2fd9d071eb31236630258" title="Queue a chat message &#160;to configured watchdog channels." alt="" coords="1323,309,1608,349"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_events_1_1_i_event_consumer.html#ac217567aa6bd7e43c8cfd976eee05aac" title="Handle a given eventType ." alt="" coords="1003,544,1241,584"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a875fe1589eb86e57a50a0e793b0d74f5" title="Wrapper for DisposeAndNullControllersImpl under a locked context." alt="" coords="1332,214,1599,268"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a634f53946305b875c65c04dfd1719830" title="Get the active ISessionController." alt="" coords="1656,490,1943,530"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a97b5cac3c59bff5f5dab4bd5e4620042" title="Handles a watchdog heartbeat." alt="" coords="986,378,1258,418"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a0ddddb5064444b1786a360d85c3c3873" title="Handles the actions to take when the monitor has to &quot;wake up&quot;." alt="" coords="969,264,1275,304"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a24fd29d12e91f659010d483228be1225" title="Attempt to restart the monitor from scratch." alt="" coords="993,98,1251,138"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aebef451cedbed6fe5a4367fe035470a7" title="Clear any stored ReattachInformation. A Task representing the running operation." alt="" coords="1686,154,1913,194"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2f8ea066a8ae2408f1c86f828d7974f8" title="Call IDisposable.Dispose and null the fields for all ISessionControllers." alt="" coords="1666,219,1933,274"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aa948dc00c200539206747c99b95986af" title="Clear any stored ReattachInformation." alt="" coords="1991,154,2220,194"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_collection.html#ad270ec18822a7a90d8fca9a75c23851a" title="Remove a given model &#160;from the the working set." alt="" coords="2268,154,2477,194"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#ad8489bee0d96bcaf87eba19adee17149" title="Attempt to create a process dump for DreamDaemon. A Task representing the running operation." alt="" coords="1342,373,1589,413"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_i_o_manager.html#a286f4eb5c679683b7e519847a6c3574e" title="Combines an array of strings into a path." alt="" coords="1715,362,1883,402"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_i_o_manager.html#a69aa1b9dbeb6af3744e568095c4376e7" title="Create a directory at path ." alt="" coords="1708,426,1891,466"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_i_o_manager.html#a18a442b5dff16f5e7a730ec354e81d78" title="Retrieve the full path of the current working directory." alt="" coords="1715,298,1883,338"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_core_1_1_async_delayer.html#a28ea9fb35caed002bf15a67b03d5e0c7" title="Create a Task that completes after a given timeSpan . A Task representing the running operation." alt="" coords="1375,48,1556,88"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory.html#a8dd876c40ac37b38be7bbe71dbe0363f" title="Gets a IDmbProvider for a given CompileJob." alt="" coords="628,608,896,648"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42" title="Run an operation &#160;in the scope of an IDatabaseContext." alt="" coords="643,672,881,712"/>
<area shape="rect" title=" " alt="" coords="5,612,244,652"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#af5d1f2571cdce3431ab477a9c9c3e6f4" title="Launches the watchdog." alt="" coords="292,263,555,303"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_core_1_1_semaphore_slim_context.html#a777a45bdcc1be5005b5a3ef72618a04e" title="Asyncronously locks a semaphore ." alt="" coords="1704,520,1895,560"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a1e73c7faa5f961369020355979f55ada" title="Load a saved ReattachInformation. A Task&lt;TResult&gt; resulting in the stored ReattachInformation if any." alt="" coords="310,640,537,680"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_jobs_1_1_i_job_manager.html#a21be789f798adf9985f2432d3499b4cd" title="Registers a given Job and begins running it." alt="" coords="321,704,525,744"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a3067474bf7404758391b6412e2f6454a" title="Handle a given eventType &#160;without re&#45;throwing errors." alt="" coords="603,5,921,45"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#aea6ea203494afd514530ef26724194fa" title="Starts all ISessionControllers." alt="" coords="639,231,885,271"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#adfec26f530228b80d384b86ee979ef2f" title="The main loop of the watchdog. Ayschronously waits for events to occur and then responds to them." alt="" coords="627,295,897,335"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_chat_1_1_i_chat_manager.html#a1f6855c98ad2fd9d071eb31236630258" title="Queue a chat message &#160;to configured watchdog channels." alt="" coords="1323,165,1608,205"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_events_1_1_i_event_consumer.html#ac217567aa6bd7e43c8cfd976eee05aac" title="Handle a given eventType ." alt="" coords="1003,5,1241,45"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a875fe1589eb86e57a50a0e793b0d74f5" title="Wrapper for DisposeAndNullControllersImpl under a locked context." alt="" coords="1332,345,1599,399"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a634f53946305b875c65c04dfd1719830" title="Get the active ISessionController." alt="" coords="1656,115,1943,155"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a97b5cac3c59bff5f5dab4bd5e4620042" title="Handles a watchdog heartbeat." alt="" coords="986,231,1258,271"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a0ddddb5064444b1786a360d85c3c3873" title="Handles the actions to take when the monitor has to &quot;wake up&quot;." alt="" coords="969,295,1275,335"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a24fd29d12e91f659010d483228be1225" title="Attempt to restart the monitor from scratch." alt="" coords="993,475,1251,515"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aebef451cedbed6fe5a4367fe035470a7" title="Clear any stored ReattachInformation. A Task representing the running operation." alt="" coords="1686,451,1913,491"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2f8ea066a8ae2408f1c86f828d7974f8" title="Call IDisposable.Dispose and null the fields for all ISessionControllers." alt="" coords="1666,371,1933,426"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aa948dc00c200539206747c99b95986af" title="Clear any stored ReattachInformation." alt="" coords="1991,451,2220,491"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_collection.html#ad270ec18822a7a90d8fca9a75c23851a" title="Remove a given model &#160;from the the working set." alt="" coords="2268,451,2477,491"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#ad8489bee0d96bcaf87eba19adee17149" title="Attempt to create a process dump for DreamDaemon. A Task representing the running operation." alt="" coords="1342,280,1589,320"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_i_o_manager.html#a286f4eb5c679683b7e519847a6c3574e" title="Combines an array of strings into a path." alt="" coords="1715,243,1883,283"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_i_o_manager.html#a69aa1b9dbeb6af3744e568095c4376e7" title="Create a directory at path ." alt="" coords="1708,307,1891,347"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_i_o_manager.html#a18a442b5dff16f5e7a730ec354e81d78" title="Retrieve the full path of the current working directory." alt="" coords="1715,179,1883,219"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_core_1_1_async_delayer.html#a28ea9fb35caed002bf15a67b03d5e0c7" title="Create a Task that completes after a given timeSpan . A Task representing the running operation." alt="" coords="1375,475,1556,515"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory.html#a8dd876c40ac37b38be7bbe71dbe0363f" title="Gets a IDmbProvider for a given CompileJob." alt="" coords="628,640,896,680"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor.html#a5618ee521ada90bb15bf3315440898f3" title="Get a IProcess by id ." alt="" coords="663,704,861,744"/>
<area shape="rect" href="interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42" title="Run an operation &#160;in the scope of an IDatabaseContext." alt="" coords="643,768,881,808"/>
</map>
</div>
@@ -1,28 +1,29 @@
<map id="Tgstation.Server.Host.Components.Watchdog.WatchdogBase.StartAsync" name="Tgstation.Server.Host.Components.Watchdog.WatchdogBase.StartAsync">
<area shape="rect" id="node1" title=" " alt="" coords="5,520,244,560"/>
<area shape="rect" id="node2" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#af5d1f2571cdce3431ab477a9c9c3e6f4" title="Launches the watchdog." alt="" coords="292,458,555,498"/>
<area shape="rect" id="node12" href="$class_tgstation_1_1_server_1_1_host_1_1_core_1_1_semaphore_slim_context.html#a777a45bdcc1be5005b5a3ef72618a04e" title="Asyncronously locks a semaphore ." alt="" coords="1704,90,1895,130"/>
<area shape="rect" id="node23" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a1e73c7faa5f961369020355979f55ada" title="Load a saved ReattachInformation. A Task&lt;TResult&gt; resulting in the stored ReattachInformation if any." alt="" coords="310,580,537,620"/>
<area shape="rect" id="node26" href="$interface_tgstation_1_1_server_1_1_host_1_1_jobs_1_1_i_job_manager.html#a21be789f798adf9985f2432d3499b4cd" title="Registers a given Job and begins running it." alt="" coords="321,644,525,684"/>
<area shape="rect" id="node3" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a3067474bf7404758391b6412e2f6454a" title="Handle a given eventType &#160;without re&#45;throwing errors." alt="" coords="603,544,921,584"/>
<area shape="rect" id="node5" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#aea6ea203494afd514530ef26724194fa" title="Starts all ISessionControllers." alt="" coords="639,429,885,469"/>
<area shape="rect" id="node6" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#adfec26f530228b80d384b86ee979ef2f" title="The main loop of the watchdog. Ayschronously waits for events to occur and then responds to them." alt="" coords="627,292,897,332"/>
<area shape="rect" id="node19" href="$interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_chat_1_1_i_chat_manager.html#a1f6855c98ad2fd9d071eb31236630258" title="Queue a chat message &#160;to configured watchdog channels." alt="" coords="1323,309,1608,349"/>
<area shape="rect" id="node4" href="$interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_events_1_1_i_event_consumer.html#ac217567aa6bd7e43c8cfd976eee05aac" title="Handle a given eventType ." alt="" coords="1003,544,1241,584"/>
<area shape="rect" id="node7" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a875fe1589eb86e57a50a0e793b0d74f5" title="Wrapper for DisposeAndNullControllersImpl under a locked context." alt="" coords="1332,214,1599,268"/>
<area shape="rect" id="node13" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a634f53946305b875c65c04dfd1719830" title="Get the active ISessionController." alt="" coords="1656,490,1943,530"/>
<area shape="rect" id="node14" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a97b5cac3c59bff5f5dab4bd5e4620042" title="Handles a watchdog heartbeat." alt="" coords="986,378,1258,418"/>
<area shape="rect" id="node20" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a0ddddb5064444b1786a360d85c3c3873" title="Handles the actions to take when the monitor has to &quot;wake up&quot;." alt="" coords="969,264,1275,304"/>
<area shape="rect" id="node21" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a24fd29d12e91f659010d483228be1225" title="Attempt to restart the monitor from scratch." alt="" coords="993,98,1251,138"/>
<area shape="rect" id="node8" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aebef451cedbed6fe5a4367fe035470a7" title="Clear any stored ReattachInformation. A Task representing the running operation." alt="" coords="1686,154,1913,194"/>
<area shape="rect" id="node11" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2f8ea066a8ae2408f1c86f828d7974f8" title="Call IDisposable.Dispose and null the fields for all ISessionControllers." alt="" coords="1666,219,1933,274"/>
<area shape="rect" id="node9" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aa948dc00c200539206747c99b95986af" title="Clear any stored ReattachInformation." alt="" coords="1991,154,2220,194"/>
<area shape="rect" id="node10" href="$interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_collection.html#ad270ec18822a7a90d8fca9a75c23851a" title="Remove a given model &#160;from the the working set." alt="" coords="2268,154,2477,194"/>
<area shape="rect" id="node15" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#ad8489bee0d96bcaf87eba19adee17149" title="Attempt to create a process dump for DreamDaemon. A Task representing the running operation." alt="" coords="1342,373,1589,413"/>
<area shape="rect" id="node16" href="$interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_i_o_manager.html#a286f4eb5c679683b7e519847a6c3574e" title="Combines an array of strings into a path." alt="" coords="1715,362,1883,402"/>
<area shape="rect" id="node17" href="$interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_i_o_manager.html#a69aa1b9dbeb6af3744e568095c4376e7" title="Create a directory at path ." alt="" coords="1708,426,1891,466"/>
<area shape="rect" id="node18" href="$interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_i_o_manager.html#a18a442b5dff16f5e7a730ec354e81d78" title="Retrieve the full path of the current working directory." alt="" coords="1715,298,1883,338"/>
<area shape="rect" id="node22" href="$class_tgstation_1_1_server_1_1_host_1_1_core_1_1_async_delayer.html#a28ea9fb35caed002bf15a67b03d5e0c7" title="Create a Task that completes after a given timeSpan . A Task representing the running operation." alt="" coords="1375,48,1556,88"/>
<area shape="rect" id="node24" href="$interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory.html#a8dd876c40ac37b38be7bbe71dbe0363f" title="Gets a IDmbProvider for a given CompileJob." alt="" coords="628,608,896,648"/>
<area shape="rect" id="node25" href="$interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42" title="Run an operation &#160;in the scope of an IDatabaseContext." alt="" coords="643,672,881,712"/>
<area shape="rect" id="node1" title=" " alt="" coords="5,612,244,652"/>
<area shape="rect" id="node2" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#af5d1f2571cdce3431ab477a9c9c3e6f4" title="Launches the watchdog." alt="" coords="292,263,555,303"/>
<area shape="rect" id="node12" href="$class_tgstation_1_1_server_1_1_host_1_1_core_1_1_semaphore_slim_context.html#a777a45bdcc1be5005b5a3ef72618a04e" title="Asyncronously locks a semaphore ." alt="" coords="1704,520,1895,560"/>
<area shape="rect" id="node23" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a1e73c7faa5f961369020355979f55ada" title="Load a saved ReattachInformation. A Task&lt;TResult&gt; resulting in the stored ReattachInformation if any." alt="" coords="310,640,537,680"/>
<area shape="rect" id="node27" href="$interface_tgstation_1_1_server_1_1_host_1_1_jobs_1_1_i_job_manager.html#a21be789f798adf9985f2432d3499b4cd" title="Registers a given Job and begins running it." alt="" coords="321,704,525,744"/>
<area shape="rect" id="node3" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a3067474bf7404758391b6412e2f6454a" title="Handle a given eventType &#160;without re&#45;throwing errors." alt="" coords="603,5,921,45"/>
<area shape="rect" id="node5" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#aea6ea203494afd514530ef26724194fa" title="Starts all ISessionControllers." alt="" coords="639,231,885,271"/>
<area shape="rect" id="node6" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#adfec26f530228b80d384b86ee979ef2f" title="The main loop of the watchdog. Ayschronously waits for events to occur and then responds to them." alt="" coords="627,295,897,335"/>
<area shape="rect" id="node19" href="$interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_chat_1_1_i_chat_manager.html#a1f6855c98ad2fd9d071eb31236630258" title="Queue a chat message &#160;to configured watchdog channels." alt="" coords="1323,165,1608,205"/>
<area shape="rect" id="node4" href="$interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_events_1_1_i_event_consumer.html#ac217567aa6bd7e43c8cfd976eee05aac" title="Handle a given eventType ." alt="" coords="1003,5,1241,45"/>
<area shape="rect" id="node7" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a875fe1589eb86e57a50a0e793b0d74f5" title="Wrapper for DisposeAndNullControllersImpl under a locked context." alt="" coords="1332,345,1599,399"/>
<area shape="rect" id="node13" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a634f53946305b875c65c04dfd1719830" title="Get the active ISessionController." alt="" coords="1656,115,1943,155"/>
<area shape="rect" id="node14" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a97b5cac3c59bff5f5dab4bd5e4620042" title="Handles a watchdog heartbeat." alt="" coords="986,231,1258,271"/>
<area shape="rect" id="node20" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a0ddddb5064444b1786a360d85c3c3873" title="Handles the actions to take when the monitor has to &quot;wake up&quot;." alt="" coords="969,295,1275,335"/>
<area shape="rect" id="node21" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a24fd29d12e91f659010d483228be1225" title="Attempt to restart the monitor from scratch." alt="" coords="993,475,1251,515"/>
<area shape="rect" id="node8" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aebef451cedbed6fe5a4367fe035470a7" title="Clear any stored ReattachInformation. A Task representing the running operation." alt="" coords="1686,451,1913,491"/>
<area shape="rect" id="node11" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2f8ea066a8ae2408f1c86f828d7974f8" title="Call IDisposable.Dispose and null the fields for all ISessionControllers." alt="" coords="1666,371,1933,426"/>
<area shape="rect" id="node9" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#aa948dc00c200539206747c99b95986af" title="Clear any stored ReattachInformation." alt="" coords="1991,451,2220,491"/>
<area shape="rect" id="node10" href="$interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_collection.html#ad270ec18822a7a90d8fca9a75c23851a" title="Remove a given model &#160;from the the working set." alt="" coords="2268,451,2477,491"/>
<area shape="rect" id="node15" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#ad8489bee0d96bcaf87eba19adee17149" title="Attempt to create a process dump for DreamDaemon. A Task representing the running operation." alt="" coords="1342,280,1589,320"/>
<area shape="rect" id="node16" href="$interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_i_o_manager.html#a286f4eb5c679683b7e519847a6c3574e" title="Combines an array of strings into a path." alt="" coords="1715,243,1883,283"/>
<area shape="rect" id="node17" href="$interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_i_o_manager.html#a69aa1b9dbeb6af3744e568095c4376e7" title="Create a directory at path ." alt="" coords="1708,307,1891,347"/>
<area shape="rect" id="node18" href="$interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_i_o_manager.html#a18a442b5dff16f5e7a730ec354e81d78" title="Retrieve the full path of the current working directory." alt="" coords="1715,179,1883,219"/>
<area shape="rect" id="node22" href="$class_tgstation_1_1_server_1_1_host_1_1_core_1_1_async_delayer.html#a28ea9fb35caed002bf15a67b03d5e0c7" title="Create a Task that completes after a given timeSpan . A Task representing the running operation." alt="" coords="1375,475,1556,515"/>
<area shape="rect" id="node24" href="$interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory.html#a8dd876c40ac37b38be7bbe71dbe0363f" title="Gets a IDmbProvider for a given CompileJob." alt="" coords="628,640,896,680"/>
<area shape="rect" id="node25" href="$interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor.html#a5618ee521ada90bb15bf3315440898f3" title="Get a IProcess by id ." alt="" coords="663,704,861,744"/>
<area shape="rect" id="node26" href="$interface_tgstation_1_1_server_1_1_host_1_1_database_1_1_i_database_context_factory.html#ad22fce8fc51129e9da203dcef2f7ab42" title="Run an operation &#160;in the scope of an IDatabaseContext." alt="" coords="643,768,881,808"/>
</map>
@@ -1 +1 @@
d3a336e057e75a0c5a07bd58f63be4ae
4d9e7f5b431d22edfe94b258dc49a024
Binary file not shown.

Before

Width:  |  Height:  |  Size: 239 KiB

After

Width:  |  Height:  |  Size: 237 KiB

@@ -236,6 +236,8 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_models_2_reattach_information_8cs_source.html#l00013">13</a> of file <a class="el" href="_models_2_reattach_information_8cs_source.html">ReattachInformation.cs</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 13</span>{ <span class="keyword">get</span>; <span class="keyword">set</span>; }</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="_session_persistor_8cs_source.html#l00093">Tgstation.Server.Host.Components.Session.SessionPersistor.Load()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
@@ -647,7 +647,7 @@ Here is the call graph for this function:</div>
<p class="definition">Definition at line <a class="el" href="_process_executor_8cs_source.html#l00251">251</a> of file <a class="el" href="_process_executor_8cs_source.html">ProcessExecutor.cs</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 252</span> {</div>
<div class="line"><span class="lineno"> 253</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_system_1_1_process_executor.html#abbe8126c6fb5bff2bab522eef5f9d5c5">logger</a>.LogTrace(<span class="stringliteral">&quot;GetProcessByName: {0}...&quot;</span>, name ?? <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentNullException(nameof(name)));</div>
<div class="line"><span class="lineno"> 253</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_system_1_1_process_executor.html#abbe8126c6fb5bff2bab522eef5f9d5c5">logger</a>.LogTrace(<span class="stringliteral">&quot;GetProcessByName: {processName}...&quot;</span>, name ?? <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentNullException(nameof(name)));</div>
<div class="line"><span class="lineno"> 254</span> var procs = global::System.Diagnostics.Process.GetProcessesByName(name);</div>
<div class="line"><span class="lineno"> 255</span> global::System.Diagnostics.Process handle = <span class="keyword">null</span>;</div>
<div class="line"><span class="lineno"> 256</span> <span class="keywordflow">foreach</span> (var proc <span class="keywordflow">in</span> procs)</div>
@@ -655,7 +655,7 @@ Here is the call graph for this function:</div>
<div class="line"><span class="lineno"> 258</span> handle = proc;</div>
<div class="line"><span class="lineno"> 259</span> <span class="keywordflow">else</span></div>
<div class="line"><span class="lineno"> 260</span> {</div>
<div class="line"><span class="lineno"> 261</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_system_1_1_process_executor.html#abbe8126c6fb5bff2bab522eef5f9d5c5">logger</a>.LogTrace(<span class="stringliteral">&quot;Disposing extra found PID: {0}...&quot;</span>, proc.Id);</div>
<div class="line"><span class="lineno"> 261</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_system_1_1_process_executor.html#abbe8126c6fb5bff2bab522eef5f9d5c5">logger</a>.LogTrace(<span class="stringliteral">&quot;Disposing extra found PID: {pid}...&quot;</span>, proc.Id);</div>
<div class="line"><span class="lineno"> 262</span> proc.Dispose();</div>
<div class="line"><span class="lineno"> 263</span> }</div>
<div class="line"><span class="lineno"> 264</span> </div>
@@ -286,7 +286,7 @@ Here is the caller graph for this function:</div>
<p>Implemented in <a class="el" href="class_tgstation_1_1_server_1_1_host_1_1_database_1_1_database_collection.html#a8244ef4b74e973c7acc1a39a2bd7a4ca">Tgstation.Server.Host.Database.DatabaseCollection&lt; TModel &gt;</a>.</p>
<p class="reference">Referenced by <a class="el" href="_session_persistor_8cs_source.html#l00191">Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_session_persistor_8cs_source.html#l00220">Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl()</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
@@ -721,7 +721,7 @@ Here is the caller graph for this function:</div>
<p class="definition">Definition at line <a class="el" href="_i_database_context_8cs_source.html#l00076">76</a> of file <a class="el" href="_i_database_context_8cs_source.html">IDatabaseContext.cs</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 76</span>{ <span class="keyword">get</span>; }</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="_session_persistor_8cs_source.html#l00191">Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_session_persistor_8cs_source.html#l00220">Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl()</a>.</p>
</div>
</div>
@@ -176,15 +176,17 @@ Here is the caller graph for this function:</div>
<p>Implemented in <a class="el" href="class_tgstation_1_1_server_1_1_host_1_1_system_1_1_process_executor.html#afc62b43888624c6f6098bbddabc08b33">Tgstation.Server.Host.System.ProcessExecutor</a>.</p>
<p class="reference">Referenced by <a class="el" href="_session_controller_factory_8cs_source.html#l00442">Tgstation.Server.Host.Components.Session.SessionControllerFactory.Reattach()</a>.</p>
<p class="reference">Referenced by <a class="el" href="_session_persistor_8cs_source.html#l00093">Tgstation.Server.Host.Components.Session.SessionPersistor.Load()</a>, and <a class="el" href="_session_controller_factory_8cs_source.html#l00442">Tgstation.Server.Host.Components.Session.SessionControllerFactory.Reattach()</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="interface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_a5618ee521ada90bb15bf3315440898f3_icgraph.png" border="0" usemap="#ainterface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_a5618ee521ada90bb15bf3315440898f3_icgraph" alt=""/></div>
<map name="ainterface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_a5618ee521ada90bb15bf3315440898f3_icgraph" id="ainterface_tgstation_1_1_server_1_1_host_1_1_system_1_1_i_process_executor_a5618ee521ada90bb15bf3315440898f3_icgraph">
<area shape="rect" title="Get a IProcess by id ." alt="" coords="624,5,823,45"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_controller_factory.html#ac4d9f68fc72e3eed915634537de8647a" title="Create a ISessionController from an existing DreamDaemon instance. A Task&lt;TResult&gt; resulting in a new..." alt="" coords="304,5,576,45"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_basic_watchdog.html#a0abae67fe2b0edafd6b6ef7b9173862c" title="Starts all ISessionControllers. A Task representing the running operation." alt="" coords="5,5,256,45"/>
<area shape="rect" title="Get a IProcess by id ." alt="" coords="624,37,823,77"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a1e73c7faa5f961369020355979f55ada" title="Load a saved ReattachInformation. A Task&lt;TResult&gt; resulting in the stored ReattachInformation if any." alt="" coords="327,5,553,45"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_controller_factory.html#ac4d9f68fc72e3eed915634537de8647a" title="Create a ISessionController from an existing DreamDaemon instance. A Task&lt;TResult&gt; resulting in a new..." alt="" coords="304,69,576,109"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#ae30d4b582b04eb7c3ef3c5d848429bbd" title=" " alt="" coords="11,5,250,45"/>
<area shape="rect" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_basic_watchdog.html#a0abae67fe2b0edafd6b6ef7b9173862c" title="Starts all ISessionControllers. A Task representing the running operation." alt="" coords="5,69,256,109"/>
</map>
</div>
@@ -1,5 +1,7 @@
<map id="Tgstation.Server.Host.System.IProcessExecutor.GetProcess" name="Tgstation.Server.Host.System.IProcessExecutor.GetProcess">
<area shape="rect" id="node1" title="Get a IProcess by id ." alt="" coords="624,5,823,45"/>
<area shape="rect" id="node2" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_controller_factory.html#ac4d9f68fc72e3eed915634537de8647a" title="Create a ISessionController from an existing DreamDaemon instance. A Task&lt;TResult&gt; resulting in a new..." alt="" coords="304,5,576,45"/>
<area shape="rect" id="node3" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_basic_watchdog.html#a0abae67fe2b0edafd6b6ef7b9173862c" title="Starts all ISessionControllers. A Task representing the running operation." alt="" coords="5,5,256,45"/>
<area shape="rect" id="node1" title="Get a IProcess by id ." alt="" coords="624,37,823,77"/>
<area shape="rect" id="node2" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a1e73c7faa5f961369020355979f55ada" title="Load a saved ReattachInformation. A Task&lt;TResult&gt; resulting in the stored ReattachInformation if any." alt="" coords="327,5,553,45"/>
<area shape="rect" id="node4" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_controller_factory.html#ac4d9f68fc72e3eed915634537de8647a" title="Create a ISessionController from an existing DreamDaemon instance. A Task&lt;TResult&gt; resulting in a new..." alt="" coords="304,69,576,109"/>
<area shape="rect" id="node3" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#ae30d4b582b04eb7c3ef3c5d848429bbd" title=" " alt="" coords="11,5,250,45"/>
<area shape="rect" id="node5" href="$class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_basic_watchdog.html#a0abae67fe2b0edafd6b6ef7b9173862c" title="Starts all ISessionControllers. A Task representing the running operation." alt="" coords="5,69,256,109"/>
</map>
@@ -1 +1 @@
71fec8c288fa936c40c86a4c4ae3acf6
6c35c7e78a9998fb1ed349ae57d6315d
Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 27 KiB