mirror of
https://github.com/tgstation/tgstation-server.git
synced 2026-08-24 21:46:52 +01:00
572 lines
133 KiB
HTML
572 lines
133 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
|
<meta name="generator" content="Doxygen 1.9.8"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>tgstation-server: src/Tgstation.Server.Host/Components/Watchdog/AdvancedWatchdog.cs Source File</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr id="projectrow">
|
|
<td id="projectalign">
|
|
<div id="projectname">tgstation-server<span id="projectnumber"> 6.19.3</span>
|
|
</div>
|
|
<div id="projectbrief">The /tg/station 13 server suite</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.9.8 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function() {
|
|
initMenu('',true,false,'search.php','Search');
|
|
$(document).ready(function() { init_search(); });
|
|
});
|
|
/* @license-end */
|
|
</script>
|
|
<div id="main-nav"></div>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(document).ready(function() { init_codefold(0); });
|
|
/* @license-end */
|
|
</script>
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<div id="MSearchResults">
|
|
<div class="SRPage">
|
|
<div id="SRIndex">
|
|
<div id="SRResults"></div>
|
|
<div class="SRStatus" id="Loading">Loading...</div>
|
|
<div class="SRStatus" id="Searching">Searching...</div>
|
|
<div class="SRStatus" id="NoMatches">No Matches</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="nav-path" class="navpath">
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_34761767c1c3cd212f9d2f80ea0828a8.html">Tgstation.Server.Host</a></li><li class="navelem"><a class="el" href="dir_7a3fd032a1362a6005a1fc9227a8dd86.html">Components</a></li><li class="navelem"><a class="el" href="dir_02f69155ced6ccca99a24744a5273903.html">Watchdog</a></li> </ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div class="header">
|
|
<div class="headertitle"><div class="title">AdvancedWatchdog.cs</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<a href="_advanced_watchdog_8cs.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="keyword">using </span>System;</div>
|
|
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="keyword">using </span>System.Collections.Generic;</div>
|
|
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="keyword">using </span>System.Diagnostics;</div>
|
|
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="keyword">using </span>System.Threading;</div>
|
|
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="keyword">using </span>System.Threading.Tasks;</div>
|
|
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
|
|
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="keyword">using </span>Microsoft.Extensions.Logging;</div>
|
|
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
|
|
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="keyword">using </span>Prometheus;</div>
|
|
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> </div>
|
|
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="keyword">using </span><a class="code hl_namespace" href="namespace_tgstation_1_1_server_1_1_api_1_1_models.html">Tgstation.Server.Api.Models</a>;</div>
|
|
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="keyword">using </span><a class="code hl_namespace" href="namespace_tgstation_1_1_server_1_1_api_1_1_models_1_1_internal.html">Tgstation.Server.Api.Models.Internal</a>;</div>
|
|
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="keyword">using </span><a class="code hl_namespace" href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_chat.html">Tgstation.Server.Host.Components.Chat</a>;</div>
|
|
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="keyword">using </span><a class="code hl_namespace" 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="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="keyword">using </span><a class="code hl_namespace" href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_remote.html">Tgstation.Server.Host.Components.Deployment.Remote</a>;</div>
|
|
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="keyword">using </span><a class="code hl_namespace" href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_events.html">Tgstation.Server.Host.Components.Events</a>;</div>
|
|
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="keyword">using </span><a class="code hl_namespace" 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="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="keyword">using </span><a class="code hl_namespace" href="namespace_tgstation_1_1_server_1_1_host_1_1_core.html">Tgstation.Server.Host.Core</a>;</div>
|
|
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="keyword">using </span><a class="code hl_namespace" href="namespace_tgstation_1_1_server_1_1_host_1_1_i_o.html">Tgstation.Server.Host.IO</a>;</div>
|
|
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="keyword">using </span><a class="code hl_namespace" href="namespace_tgstation_1_1_server_1_1_host_1_1_jobs.html">Tgstation.Server.Host.Jobs</a>;</div>
|
|
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="keyword">using </span><a class="code hl_namespace" href="namespace_tgstation_1_1_server_1_1_host_1_1_utils.html">Tgstation.Server.Host.Utils</a>;</div>
|
|
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
|
|
<div class="foldopen" id="foldopen00023" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"><a class="line" href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog.html"> 23</a></span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog.html">Tgstation.Server.Host.Components.Watchdog</a></div>
|
|
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span>{</div>
|
|
<div class="foldopen" id="foldopen00028" data-start="{" data-end="};">
|
|
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html"> 28</a></span> <span class="keyword">abstract</span> <span class="keyword">class </span><a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html">AdvancedWatchdog</a> : <a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_basic_watchdog.html">BasicWatchdog</a></div>
|
|
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> {</div>
|
|
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a2cec430edc7f34e510f8b741d7ffba2f"> 33</a></span> <span class="keyword">protected</span> <a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html">SwappableDmbProvider</a>? <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a2cec430edc7f34e510f8b741d7ffba2f">ActiveSwappable</a> { <span class="keyword">get</span>; <span class="keyword">private</span> <span class="keyword">set</span>; }</div>
|
|
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
|
|
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#aadaea6d8f22e45c5c9dd9299657a2d5f"> 38</a></span> <span class="keyword">protected</span> <a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_filesystem_link_factory.html">IFilesystemLinkFactory</a> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#aadaea6d8f22e45c5c9dd9299657a2d5f">LinkFactory</a> { <span class="keyword">get</span>; }</div>
|
|
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
|
|
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0484c9175cd700015e03340d48b20982"> 43</a></span> readonly List<Task> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0484c9175cd700015e03340d48b20982">deploymentCleanupTasks</a>;</div>
|
|
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
|
|
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746"> 48</a></span> <a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html">SwappableDmbProvider</a>? <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746">pendingSwappable</a>;</div>
|
|
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
|
|
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#ac164bca1223c8bfced2f1774464b8648"> 53</a></span> <span class="keyword">volatile</span> TaskCompletionSource? <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#ac164bca1223c8bfced2f1774464b8648">deploymentCleanupGate</a>;</div>
|
|
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
|
|
<div class="foldopen" id="foldopen00075" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#aed0b060732502326a34a514347e1b9ba"> 75</a></span> <span class="keyword">public</span> <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#aed0b060732502326a34a514347e1b9ba">AdvancedWatchdog</a>(</div>
|
|
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_chat_1_1_i_chat_manager.html">IChatManager</a> chat,</div>
|
|
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_i_session_controller_factory.html">ISessionControllerFactory</a> sessionControllerFactory,</div>
|
|
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_factory.html">IDmbFactory</a> dmbFactory,</div>
|
|
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_i_session_persistor.html">ISessionPersistor</a> sessionPersistor,</div>
|
|
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_jobs_1_1_i_job_manager.html">IJobManager</a> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a1688863ddcd7d0bbfa3ec13b7b015319">jobManager</a>,</div>
|
|
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_core_1_1_i_server_control.html">IServerControl</a> serverControl,</div>
|
|
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_utils_1_1_i_async_delayer.html">IAsyncDelayer</a> asyncDelayer,</div>
|
|
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_i_o_manager.html">IIOManager</a> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a8becb1115fe1c09c84534c798466e03f">diagnosticsIOManager</a>,</div>
|
|
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_events_1_1_i_event_consumer.html">IEventConsumer</a> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a5768c37124d54e80c66dc63d28d0dea4">eventConsumer</a>,</div>
|
|
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_remote_1_1_i_remote_deployment_manager_factory.html">IRemoteDeploymentManagerFactory</a> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a72637a3ebe8925b7c3753416370ad83c">remoteDeploymentManagerFactory</a>,</div>
|
|
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> IMetricFactory metricFactory,</div>
|
|
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_i_o_manager.html">IIOManager</a> gameIOManager,</div>
|
|
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_filesystem_link_factory.html">IFilesystemLinkFactory</a> linkFactory,</div>
|
|
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> ILogger<AdvancedWatchdog> logger,</div>
|
|
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <a class="code hl_class" href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_internal_1_1_dream_daemon_launch_parameters.html">DreamDaemonLaunchParameters</a> initialLaunchParameters,</div>
|
|
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> Api.Models.Instance instance,</div>
|
|
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a410f168d84f80c138450fb42f222ba01">autoStart</a>)</div>
|
|
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> : base(</div>
|
|
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> chat,</div>
|
|
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> sessionControllerFactory,</div>
|
|
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> dmbFactory,</div>
|
|
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> sessionPersistor,</div>
|
|
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a1688863ddcd7d0bbfa3ec13b7b015319">jobManager</a>,</div>
|
|
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> serverControl,</div>
|
|
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> asyncDelayer,</div>
|
|
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a8becb1115fe1c09c84534c798466e03f">diagnosticsIOManager</a>,</div>
|
|
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a5768c37124d54e80c66dc63d28d0dea4">eventConsumer</a>,</div>
|
|
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a72637a3ebe8925b7c3753416370ad83c">remoteDeploymentManagerFactory</a>,</div>
|
|
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> metricFactory,</div>
|
|
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> gameIOManager,</div>
|
|
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> logger,</div>
|
|
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> initialLaunchParameters,</div>
|
|
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> instance,</div>
|
|
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a410f168d84f80c138450fb42f222ba01">autoStart</a>)</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> <span class="keywordflow">try</span></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> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#aadaea6d8f22e45c5c9dd9299657a2d5f">LinkFactory</a> = linkFactory ?? <span class="keywordflow">throw</span> <span class="keyword">new</span> ArgumentNullException(nameof(linkFactory));</div>
|
|
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> </div>
|
|
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0484c9175cd700015e03340d48b20982">deploymentCleanupTasks</a> = <span class="keyword">new</span> List<Task>();</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> <span class="keywordflow">catch</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> <span class="comment">// Async dispose is for if we have controllers running, not the case here</span></div>
|
|
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> var disposeTask = <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a6f69db8c3ceae298404f5d8d5a7312b3">DisposeAsync</a>();</div>
|
|
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> Debug.Assert(disposeTask.IsCompleted, <span class="stringliteral">"This should always be true during construction!"</span>);</div>
|
|
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> disposeTask.GetAwaiter().GetResult();</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> <span class="keywordflow">throw</span>;</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> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> </div>
|
|
<div class="foldopen" id="foldopen00129" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a64c8e372170f1f0b200cfc14e6ef55af"> 129</a></span> <span class="keyword">protected</span> <span class="keyword">sealed</span> <span class="keyword">override</span> async ValueTask <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a64c8e372170f1f0b200cfc14e6ef55af">DisposeAndNullControllersImpl</a>()</div>
|
|
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> {</div>
|
|
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> await base.DisposeAndNullControllersImpl();</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> <span class="comment">// If we reach this point, we can guarantee PrepServerForLaunch will be called before starting again.</span></div>
|
|
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a2cec430edc7f34e510f8b741d7ffba2f">ActiveSwappable</a> = <span class="keyword">null</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> <span class="keywordflow">if</span> (<a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746">pendingSwappable</a> != <span class="keyword">null</span>)</div>
|
|
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> {</div>
|
|
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> await <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746">pendingSwappable</a>.<a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html#afd7fb5a2e71e584df10c62620fb5e174">DisposeAsync</a>();</div>
|
|
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746">pendingSwappable</a> = <span class="keyword">null</span>;</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> </div>
|
|
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> await <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a59895d5671d2f658a9ac0f9dbda73dca">DrainDeploymentCleanupTasks</a>(<span class="keyword">true</span>);</div>
|
|
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> </div>
|
|
<div class="foldopen" id="foldopen00146" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a35cea102f4540006ad8988efd9e8e911"> 146</a></span> <span class="keyword">protected</span> <span class="keyword">sealed</span> <span class="keyword">override</span> async ValueTask<MonitorAction> <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a35cea102f4540006ad8988efd9e8e911">HandleNormalReboot</a>(CancellationToken cancellationToken)</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> <span class="keywordflow">if</span> (<a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746">pendingSwappable</a> != <span class="keyword">null</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> var needToSwap = !<a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746">pendingSwappable</a>.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html#aa556acd2f54e38ce22f5e623a12222c7">Swapped</a>;</div>
|
|
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> var controller = <a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_server.html">Server</a>!;</div>
|
|
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keywordflow">if</span> (needToSwap)</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> <span class="comment">// IMPORTANT: THE SESSIONCONTROLLER SHOULD STILL BE PROCESSING THE BRIDGE REQUEST SO WE KNOW DD IS SLEEPING</span></div>
|
|
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="comment">// OTHERWISE, IT COULD RETURN TO /world/Reboot() TOO EARLY AND LOAD THE WRONG .DMB</span></div>
|
|
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordflow">if</span> (!controller.ProcessingRebootBridgeRequest)</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> <span class="comment">// integration test logging will catch this</span></div>
|
|
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogError(</div>
|
|
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <span class="stringliteral">"The reboot bridge request completed before the watchdog could suspend the server! This can lead to buggy DreamDaemon behaviour and should be reported! To ensure stability, we will need to hard reboot the server"</span>);</div>
|
|
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <span class="keywordflow">return</span> <a class="code hl_enumeration" href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog.html#a97c1a4a168451bd7e3be23c467aa2812">MonitorAction</a>.<a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_server.html#a81fce87c4c8f1fa13d7dffba500f6657">Restart</a>;</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> </div>
|
|
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="comment">// DCT: Not necessary</span></div>
|
|
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746">pendingSwappable</a>.<a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html#a81dcefb142f64864408ddcf0e1c18a3b">FinishActivationPreparation</a>(CancellationToken.None).IsCompleted)</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> <span class="comment">// rare pokemon</span></div>
|
|
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogInformation(<span class="stringliteral">"Deployed .dme is not ready to swap, delaying until next reboot!"</span>);</div>
|
|
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#aec24ff5e3b22b40e62f4a2443eb8cec9">Chat</a>.<a class="code hl_function" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_chat_1_1_i_chat_manager.html#a103e061814fc6760410734c7a83f9a83">QueueWatchdogMessage</a>(<span class="stringliteral">"The pending deployment was not ready to be activated this reboot. It will be applied at the next one."</span>);</div>
|
|
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keywordflow">return</span> <a class="code hl_enumeration" href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog.html#a97c1a4a168451bd7e3be23c467aa2812">MonitorAction</a>.Continue;</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> }</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> var updateTask = <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a9efa04dfe5428a8ce1271600e2388a4e">BeforeApplyDmb</a>(<a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746">pendingSwappable</a>.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html#a7b81a4a7c82ee7315a525f1cd7b31bc9">CompileJob</a>, cancellationToken);</div>
|
|
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <span class="keywordflow">if</span> (needToSwap)</div>
|
|
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> await <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#ad7b9818a9a73bbf86d9353c30e23197f">PerformDmbSwap</a>(<a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746">pendingSwappable</a>, cancellationToken);</div>
|
|
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> </div>
|
|
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> var currentCompileJobId = controller.ReattachInformation.Dmb.CompileJob.Id;</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> await <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a59895d5671d2f658a9ac0f9dbda73dca">DrainDeploymentCleanupTasks</a>(<span class="keyword">false</span>);</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> <a class="code hl_class" href="class_i_async_disposable.html">IAsyncDisposable</a> lingeringDeployment;</div>
|
|
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> var localDeploymentCleanupGate = <span class="keyword">new</span> TaskCompletionSource();</div>
|
|
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> async Task CleanupLingeringDeployment()</div>
|
|
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> {</div>
|
|
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> var lingeringDeploymentExpirySeconds = <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a9affc2eeae2903d1bdb0fa81a6550fc4">ActiveLaunchParameters</a>.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_internal_1_1_dream_daemon_launch_parameters.html#aa3ac63088b89bf67dd5fdbe67970b03d">StartupTimeout</a>!.Value;</div>
|
|
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogDebug(</div>
|
|
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="stringliteral">"Holding old deployment {compileJobId} for up to {expiry} seconds..."</span>,</div>
|
|
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> currentCompileJobId,</div>
|
|
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> lingeringDeploymentExpirySeconds);</div>
|
|
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> </div>
|
|
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="comment">// DCT: A cancel firing here can result in us leaving a dmbprovider undisposed, localDeploymentCleanupGate will always fire in that case</span></div>
|
|
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> var timeout = <a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_utils_1_1_async_delayer.html">AsyncDelayer</a>.<a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_utils_1_1_async_delayer.html#a5255a8616967ddacc72efca3bc7b0dcd">Delay</a>(TimeSpan.FromSeconds(lingeringDeploymentExpirySeconds), CancellationToken.None).AsTask();</div>
|
|
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
|
|
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> var completedTask = await Task.WhenAny(</div>
|
|
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> localDeploymentCleanupGate.Task,</div>
|
|
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> timeout);</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> var timedOut = completedTask == timeout;</div>
|
|
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.Log(</div>
|
|
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> timedOut</div>
|
|
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> ? LogLevel.Warning</div>
|
|
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> : LogLevel.Trace,</div>
|
|
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> <span class="stringliteral">"Releasing old deployment {compileJobId}{afterTimeout}"</span>,</div>
|
|
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> currentCompileJobId,</div>
|
|
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> timedOut</div>
|
|
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> ? <span class="stringliteral">" due to timeout!"</span></div>
|
|
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> : <span class="stringliteral">"..."</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> await lingeringDeployment.DisposeAsync();</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="l00213" name="l00213"></a><span class="lineno"> 213</span> var oldDeploymentCleanupGate = Interlocked.Exchange(ref <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#ac164bca1223c8bfced2f1774464b8648">deploymentCleanupGate</a>, localDeploymentCleanupGate);</div>
|
|
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> oldDeploymentCleanupGate?.TrySetResult();</div>
|
|
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> </div>
|
|
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogTrace(<span class="stringliteral">"Replacing activeSwappable with pendingSwappable..."</span>);</div>
|
|
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> </div>
|
|
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> lock (<a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0484c9175cd700015e03340d48b20982">deploymentCleanupTasks</a>)</div>
|
|
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> {</div>
|
|
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> lingeringDeployment = controller.ReplaceDmbProvider(<a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746">pendingSwappable</a>);</div>
|
|
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0484c9175cd700015e03340d48b20982">deploymentCleanupTasks</a>.Add(</div>
|
|
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> CleanupLingeringDeployment());</div>
|
|
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> }</div>
|
|
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> </div>
|
|
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a2cec430edc7f34e510f8b741d7ffba2f">ActiveSwappable</a> = <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746">pendingSwappable</a>;</div>
|
|
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746">pendingSwappable</a> = <span class="keyword">null</span>;</div>
|
|
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> </div>
|
|
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> await <a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html">SessionPersistor</a>.<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#a5b474f446d9e672be12af82e7f7213bd">Update</a>(controller.ReattachInformation, cancellationToken);</div>
|
|
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> await updateTask;</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> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogTrace(<span class="stringliteral">"Nothing to do as pendingSwappable is null."</span>);</div>
|
|
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> </div>
|
|
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">return</span> await base.HandleNormalReboot(cancellationToken);</div>
|
|
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> </div>
|
|
<div class="foldopen" id="foldopen00238" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a748bef1e44dcaf8fee7f3bee9a52d25c"> 238</a></span> <span class="keyword">protected</span> <span class="keyword">sealed</span> <span class="keyword">override</span> async ValueTask <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a748bef1e44dcaf8fee7f3bee9a52d25c">HandleNewDmbAvailable</a>(CancellationToken cancellationToken)</div>
|
|
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> {</div>
|
|
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> <a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_provider.html">IDmbProvider</a> compileJobProvider = <a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_dmb_factory.html">DmbFactory</a>.<a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_dmb_factory.html#a3434b9eb750c21b1d4f4a86c6f6c076d">LockNextDmb</a>(<span class="stringliteral">"AdvancedWatchdog next compile job preload"</span>);</div>
|
|
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keywordtype">bool</span> canSeamlesslySwap = <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0e09a241beb5aa99fcff9987bd6b5799">CanUseSwappableDmbProvider</a>(compileJobProvider);</div>
|
|
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keywordflow">if</span> (canSeamlesslySwap)</div>
|
|
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <span class="keywordflow">if</span> (compileJobProvider.<a class="code hl_property" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_provider.html#aad154752808c57d3877f766894c24f4a">CompileJob</a>.EngineVersion != <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a30c1f65bce4d161d81063e4c426265f4">ActiveCompileJob</a>!.EngineVersion)</div>
|
|
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> {</div>
|
|
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="comment">// have to do a graceful restart</span></div>
|
|
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogDebug(</div>
|
|
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> <span class="stringliteral">"Not swapping to new compile job {compileJobId} as it uses a different engine version ({newEngineVersion}) than what is currently active {oldEngineVersion}."</span>,</div>
|
|
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> compileJobProvider.<a class="code hl_property" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_provider.html#aad154752808c57d3877f766894c24f4a">CompileJob</a>.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_entity_id.html#ae31e478e1d338b37a14565df6fd58570">Id</a>,</div>
|
|
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> compileJobProvider.<a class="code hl_property" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_provider.html#aad154752808c57d3877f766894c24f4a">CompileJob</a>.EngineVersion,</div>
|
|
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a30c1f65bce4d161d81063e4c426265f4">ActiveCompileJob</a>.EngineVersion);</div>
|
|
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> canSeamlesslySwap = <span class="keyword">false</span>;</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> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (compileJobProvider.<a class="code hl_property" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_provider.html#aad154752808c57d3877f766894c24f4a">CompileJob</a>.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_internal_1_1_compile_job.html#a62c90f6d2a9a109318bb3fba05afead0">DmeName</a> != <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a30c1f65bce4d161d81063e4c426265f4">ActiveCompileJob</a>.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_internal_1_1_compile_job.html#a62c90f6d2a9a109318bb3fba05afead0">DmeName</a>)</div>
|
|
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> {</div>
|
|
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogDebug(</div>
|
|
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <span class="stringliteral">"Not swapping to new compile job {compileJobId} as it uses a different .dmb name ({newDmbName}) than what is currently active {oldDmbName}."</span>,</div>
|
|
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> compileJobProvider.<a class="code hl_property" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_provider.html#aad154752808c57d3877f766894c24f4a">CompileJob</a>.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_entity_id.html#ae31e478e1d338b37a14565df6fd58570">Id</a>,</div>
|
|
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> compileJobProvider.<a class="code hl_property" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_provider.html#aad154752808c57d3877f766894c24f4a">CompileJob</a>.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_internal_1_1_compile_job.html#a62c90f6d2a9a109318bb3fba05afead0">DmeName</a>,</div>
|
|
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a30c1f65bce4d161d81063e4c426265f4">ActiveCompileJob</a>.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_internal_1_1_compile_job.html#a62c90f6d2a9a109318bb3fba05afead0">DmeName</a>);</div>
|
|
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> canSeamlesslySwap = <span class="keyword">false</span>;</div>
|
|
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> }</div>
|
|
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> </div>
|
|
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="keywordflow">if</span> (!canSeamlesslySwap)</div>
|
|
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> {</div>
|
|
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogDebug(<span class="stringliteral">"Queueing graceful restart instead..."</span>);</div>
|
|
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> await compileJobProvider.DisposeAsync();</div>
|
|
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> await base.HandleNewDmbAvailable(cancellationToken);</div>
|
|
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="keywordflow">return</span>;</div>
|
|
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> }</div>
|
|
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> </div>
|
|
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> <a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html">SwappableDmbProvider</a>? swappableProvider = <span class="keyword">null</span>;</div>
|
|
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keywordflow">try</span></div>
|
|
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> {</div>
|
|
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> swappableProvider = <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a6016884df4bb5dfa2b68761673935d7b">CreateSwappableDmbProvider</a>(compileJobProvider);</div>
|
|
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="keywordflow">if</span> (<a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a30c1f65bce4d161d81063e4c426265f4">ActiveCompileJob</a>!.DMApiVersion == <span class="keyword">null</span>)</div>
|
|
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> {</div>
|
|
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogWarning(<span class="stringliteral">"Active compile job has no DMAPI! Commencing immediate .dmb swap. Note this behavior is known to be buggy in some DM code contexts. See https://github.com/tgstation/tgstation-server/issues/1550"</span>);</div>
|
|
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> await <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#ad7b9818a9a73bbf86d9353c30e23197f">PerformDmbSwap</a>(swappableProvider, cancellationToken);</div>
|
|
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> }</div>
|
|
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> }</div>
|
|
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keywordflow">catch</span> (<a class="code hl_class" href="class_exception.html">Exception</a> ex)</div>
|
|
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> {</div>
|
|
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogError(ex, <span class="stringliteral">"Exception while swapping"</span>);</div>
|
|
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_provider.html">IDmbProvider</a> providerToDispose = swappableProvider ?? compileJobProvider;</div>
|
|
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> await providerToDispose.DisposeAsync();</div>
|
|
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <span class="keywordflow">throw</span>;</div>
|
|
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> }</div>
|
|
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> </div>
|
|
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> await (<a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746">pendingSwappable</a>?.<a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a6f69db8c3ceae298404f5d8d5a7312b3">DisposeAsync</a>() ?? ValueTask.CompletedTask);</div>
|
|
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746">pendingSwappable</a> = swappableProvider;</div>
|
|
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> </div>
|
|
<div class="foldopen" id="foldopen00294" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0d30150f31ceb9b4c0969877fde90044"> 294</a></span> <span class="keyword">protected</span> <span class="keyword">sealed</span> <span class="keyword">override</span> async ValueTask<IDmbProvider> <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0d30150f31ceb9b4c0969877fde90044">PrepServerForLaunch</a>(<a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_provider.html">IDmbProvider</a> dmbToUse, CancellationToken cancellationToken)</div>
|
|
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> {</div>
|
|
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <span class="keywordflow">if</span> (<a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a2cec430edc7f34e510f8b741d7ffba2f">ActiveSwappable</a> != <span class="keyword">null</span>)</div>
|
|
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> <span class="keywordflow">throw</span> <span class="keyword">new</span> InvalidOperationException(<span class="stringliteral">"Expected activeSwappable to be null!"</span>);</div>
|
|
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746">pendingSwappable</a> != <span class="keyword">null</span>)</div>
|
|
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <span class="keywordflow">throw</span> <span class="keyword">new</span> InvalidOperationException(<span class="stringliteral">"Expected pendingSwappable to be null!"</span>);</div>
|
|
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> </div>
|
|
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogTrace(<span class="stringliteral">"Prep for server launch"</span>);</div>
|
|
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0e09a241beb5aa99fcff9987bd6b5799">CanUseSwappableDmbProvider</a>(dmbToUse))</div>
|
|
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <span class="keywordflow">return</span> dmbToUse;</div>
|
|
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> </div>
|
|
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a2cec430edc7f34e510f8b741d7ffba2f">ActiveSwappable</a> = <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a6016884df4bb5dfa2b68761673935d7b">CreateSwappableDmbProvider</a>(dmbToUse);</div>
|
|
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> <span class="keywordflow">try</span></div>
|
|
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> {</div>
|
|
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> await <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a1845f3dca4597a726053daa649565c5f">InitialLink</a>(cancellationToken);</div>
|
|
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> }</div>
|
|
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> <span class="keywordflow">catch</span> (<a class="code hl_class" href="class_exception.html">Exception</a> ex)</div>
|
|
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> {</div>
|
|
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> <span class="comment">// We won't worry about disposing activeSwappable here as we can't dispose dmbToUse here.</span></div>
|
|
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogTrace(ex, <span class="stringliteral">"Initial link error, nulling ActiveSwappable"</span>);</div>
|
|
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a2cec430edc7f34e510f8b741d7ffba2f">ActiveSwappable</a> = <span class="keyword">null</span>;</div>
|
|
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> <span class="keywordflow">throw</span>;</div>
|
|
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> }</div>
|
|
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> </div>
|
|
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> <span class="keywordflow">return</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a2cec430edc7f34e510f8b741d7ffba2f">ActiveSwappable</a>;</div>
|
|
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> </div>
|
|
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#ad8cc0f4b221744608d73e107af0e72e5"> 326</a></span> <span class="keyword">protected</span> <span class="keyword">abstract</span> ValueTask <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#ad8cc0f4b221744608d73e107af0e72e5">ApplyInitialDmb</a>(CancellationToken cancellationToken);</div>
|
|
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> </div>
|
|
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a6016884df4bb5dfa2b68761673935d7b"> 333</a></span> <span class="keyword">protected</span> <span class="keyword">abstract</span> <a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html">SwappableDmbProvider</a> <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a6016884df4bb5dfa2b68761673935d7b">CreateSwappableDmbProvider</a>(<a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_provider.html">IDmbProvider</a> dmbProvider);</div>
|
|
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> </div>
|
|
<div class="foldopen" id="foldopen00336" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a60d804c11d6598add968037617a3e06f"> 336</a></span> <span class="keyword">protected</span> <span class="keyword">override</span> async ValueTask <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a60d804c11d6598add968037617a3e06f">SessionStartupPersist</a>(CancellationToken cancellationToken)</div>
|
|
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> {</div>
|
|
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> await <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#ad8cc0f4b221744608d73e107af0e72e5">ApplyInitialDmb</a>(cancellationToken);</div>
|
|
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> await base.SessionStartupPersist(cancellationToken);</div>
|
|
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> </div>
|
|
<div class="foldopen" id="foldopen00343" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#af92913ca3e4ef60daa783fc3bc1a0807"> 343</a></span> <span class="keyword">protected</span> <span class="keyword">override</span> async ValueTask<MonitorAction> <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#af92913ca3e4ef60daa783fc3bc1a0807">HandleMonitorWakeup</a>(<a class="code hl_enumeration" href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog.html#acb2ccc2dc05d01ec3a6448d3d57155c9">MonitorActivationReason</a> reason, CancellationToken cancellationToken)</div>
|
|
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> {</div>
|
|
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> var result = await base.HandleMonitorWakeup(reason, cancellationToken);</div>
|
|
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> <span class="keywordflow">if</span> (reason == <a class="code hl_enumeration" href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog.html#acb2ccc2dc05d01ec3a6448d3d57155c9">MonitorActivationReason</a>.ActiveServerStartup)</div>
|
|
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> await <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a59895d5671d2f658a9ac0f9dbda73dca">DrainDeploymentCleanupTasks</a>(<span class="keyword">false</span>);</div>
|
|
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> </div>
|
|
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> <span class="keywordflow">return</span> result;</div>
|
|
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> </div>
|
|
<div class="foldopen" id="foldopen00357" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0e09a241beb5aa99fcff9987bd6b5799"> 357</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0e09a241beb5aa99fcff9987bd6b5799">CanUseSwappableDmbProvider</a>(<a class="code hl_interface" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_provider.html">IDmbProvider</a> dmbProvider)</div>
|
|
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> {</div>
|
|
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> <span class="keywordflow">if</span> (dmbProvider.<a class="code hl_property" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_provider.html#a1b5874e4f5733aa7a04b397450f40792">EngineVersion</a>.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_engine_version.html#ae13db4c5dbd6b06c79d37ad9afd25af2">Engine</a> != <a class="code hl_enumeration" href="namespace_tgstation_1_1_server_1_1_api_1_1_models.html#ad8fb60934662752c4bbed899440208ea">EngineType</a>.Byond)</div>
|
|
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> {</div>
|
|
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogDebug(<span class="stringliteral">"Not using SwappableDmbProvider for engine type {engineType}"</span>, dmbProvider.<a class="code hl_property" href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_provider.html#a1b5874e4f5733aa7a04b397450f40792">EngineVersion</a>.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_engine_version.html#ae13db4c5dbd6b06c79d37ad9afd25af2">Engine</a>);</div>
|
|
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> }</div>
|
|
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> </div>
|
|
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> </div>
|
|
<div class="foldopen" id="foldopen00373" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a1845f3dca4597a726053daa649565c5f"> 373</a></span> async ValueTask <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a1845f3dca4597a726053daa649565c5f">InitialLink</a>(CancellationToken cancellationToken)</div>
|
|
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> {</div>
|
|
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> await <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a2cec430edc7f34e510f8b741d7ffba2f">ActiveSwappable</a>!.<a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html#a81dcefb142f64864408ddcf0e1c18a3b">FinishActivationPreparation</a>(cancellationToken);</div>
|
|
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogTrace(<span class="stringliteral">"Linking compile job..."</span>);</div>
|
|
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> await <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a2cec430edc7f34e510f8b741d7ffba2f">ActiveSwappable</a>.<a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html#ad6e832b7e37fcfb95f47294a9a084c2e">MakeActive</a>(cancellationToken);</div>
|
|
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> </div>
|
|
<div class="foldopen" id="foldopen00386" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#ad7b9818a9a73bbf86d9353c30e23197f"> 386</a></span> async ValueTask <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#ad7b9818a9a73bbf86d9353c30e23197f">PerformDmbSwap</a>(<a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html">SwappableDmbProvider</a> newProvider, CancellationToken cancellationToken)</div>
|
|
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> {</div>
|
|
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogDebug(<span class="stringliteral">"Swapping to compile job {id}..."</span>, newProvider.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html#a7b81a4a7c82ee7315a525f1cd7b31bc9">CompileJob</a>.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_entity_id.html#ae31e478e1d338b37a14565df6fd58570">Id</a>);</div>
|
|
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> </div>
|
|
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> await newProvider.<a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html#a81dcefb142f64864408ddcf0e1c18a3b">FinishActivationPreparation</a>(cancellationToken);</div>
|
|
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> </div>
|
|
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> var suspended = <span class="keyword">false</span>;</div>
|
|
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> var server = <a class="code hl_class" href="class_tgstation_1_1_server_1_1_host_1_1_server.html">Server</a>!;</div>
|
|
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> <span class="keywordflow">try</span></div>
|
|
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> {</div>
|
|
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> server.SuspendProcess();</div>
|
|
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> suspended = <span class="keyword">true</span>;</div>
|
|
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> }</div>
|
|
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> <span class="keywordflow">catch</span> (<a class="code hl_class" href="class_exception.html">Exception</a> ex)</div>
|
|
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> {</div>
|
|
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogWarning(ex, <span class="stringliteral">"Exception while suspending server!"</span>);</div>
|
|
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> }</div>
|
|
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> </div>
|
|
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> <span class="keywordflow">try</span></div>
|
|
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> {</div>
|
|
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogTrace(<span class="stringliteral">"Making new provider {id} active..."</span>, newProvider.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html#a7b81a4a7c82ee7315a525f1cd7b31bc9">CompileJob</a>.<a class="code hl_property" href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_entity_id.html#ae31e478e1d338b37a14565df6fd58570">Id</a>);</div>
|
|
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> await newProvider.<a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html#ad6e832b7e37fcfb95f47294a9a084c2e">MakeActive</a>(cancellationToken);</div>
|
|
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> }</div>
|
|
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> <span class="keywordflow">finally</span></div>
|
|
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> {</div>
|
|
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> <span class="comment">// Let this throw hard if it fails</span></div>
|
|
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> <span class="keywordflow">if</span> (suspended)</div>
|
|
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> server.ResumeProcess();</div>
|
|
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> }</div>
|
|
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> </div>
|
|
<div class="foldopen" id="foldopen00422" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"><a class="line" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a59895d5671d2f658a9ac0f9dbda73dca"> 422</a></span> Task <a class="code hl_function" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a59895d5671d2f658a9ac0f9dbda73dca">DrainDeploymentCleanupTasks</a>(<span class="keywordtype">bool</span> blocking)</div>
|
|
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> {</div>
|
|
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> <a class="code hl_property" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Logger</a>.LogTrace(<span class="stringliteral">"DrainDeploymentCleanupTasks..."</span>);</div>
|
|
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> var localDeploymentCleanupGate = Interlocked.Exchange(ref <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#ac164bca1223c8bfced2f1774464b8648">deploymentCleanupGate</a>, <span class="keyword">null</span>);</div>
|
|
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> localDeploymentCleanupGate?.TrySetResult();</div>
|
|
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> </div>
|
|
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> List<Task> localDeploymentCleanupTasks;</div>
|
|
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> lock (<a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0484c9175cd700015e03340d48b20982">deploymentCleanupTasks</a>)</div>
|
|
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> {</div>
|
|
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> var totalActiveTasks = <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0484c9175cd700015e03340d48b20982">deploymentCleanupTasks</a>.Count;</div>
|
|
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> localDeploymentCleanupTasks = <span class="keyword">new</span> List<Task>(totalActiveTasks);</div>
|
|
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> <span class="keywordflow">for</span> (var i = totalActiveTasks - 1; i >= 0; --i)</div>
|
|
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> {</div>
|
|
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> var currentTask = <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0484c9175cd700015e03340d48b20982">deploymentCleanupTasks</a>[i];</div>
|
|
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> <span class="keywordflow">if</span> (!blocking && !currentTask.IsCompleted)</div>
|
|
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> <span class="keywordflow">continue</span>;</div>
|
|
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> </div>
|
|
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> localDeploymentCleanupTasks.Add(currentTask);</div>
|
|
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <a class="code hl_variable" href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0484c9175cd700015e03340d48b20982">deploymentCleanupTasks</a>.RemoveAt(i);</div>
|
|
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> }</div>
|
|
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> }</div>
|
|
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> </div>
|
|
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> <span class="keywordflow">return</span> Task.WhenAll(localDeploymentCleanupTasks);</div>
|
|
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span>}</div>
|
|
</div>
|
|
<div class="ttc" id="aclass_exception_html"><div class="ttname"><a href="class_exception.html">Exception</a></div></div>
|
|
<div class="ttc" id="aclass_i_async_disposable_html"><div class="ttname"><a href="class_i_async_disposable.html">IAsyncDisposable</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_api_1_1_models_1_1_engine_version_html_ae13db4c5dbd6b06c79d37ad9afd25af2"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_engine_version.html#ae13db4c5dbd6b06c79d37ad9afd25af2">Tgstation.Server.Api.Models.EngineVersion.Engine</a></div><div class="ttdeci">EngineType? Engine</div><div class="ttdoc">The EngineType.</div><div class="ttdef"><b>Definition</b> <a href="_engine_version_8cs_source.html#l00024">EngineVersion.cs:24</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_api_1_1_models_1_1_entity_id_html_ae31e478e1d338b37a14565df6fd58570"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_entity_id.html#ae31e478e1d338b37a14565df6fd58570">Tgstation.Server.Api.Models.EntityId.Id</a></div><div class="ttdeci">virtual ? long Id</div><div class="ttdoc">The ID of the entity.</div><div class="ttdef"><b>Definition</b> <a href="_entity_id_8cs_source.html#l00014">EntityId.cs:14</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_api_1_1_models_1_1_internal_1_1_compile_job_html_a62c90f6d2a9a109318bb3fba05afead0"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_internal_1_1_compile_job.html#a62c90f6d2a9a109318bb3fba05afead0">Tgstation.Server.Api.Models.Internal.CompileJob.DmeName</a></div><div class="ttdeci">string? DmeName</div><div class="ttdoc">The .dme file used for compilation.</div><div class="ttdef"><b>Definition</b> <a href="_tgstation_8_server_8_api_2_models_2_internal_2_compile_job_8cs_source.html#l00017">CompileJob.cs:17</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_api_1_1_models_1_1_internal_1_1_dream_daemon_launch_parameters_html"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_internal_1_1_dream_daemon_launch_parameters.html">Tgstation.Server.Api.Models.Internal.DreamDaemonLaunchParameters</a></div><div class="ttdoc">Launch settings for DreamDaemon.</div><div class="ttdef"><b>Definition</b> <a href="_dream_daemon_launch_parameters_8cs_source.html#l00009">DreamDaemonLaunchParameters.cs:10</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_api_1_1_models_1_1_internal_1_1_dream_daemon_launch_parameters_html_aa3ac63088b89bf67dd5fdbe67970b03d"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_api_1_1_models_1_1_internal_1_1_dream_daemon_launch_parameters.html#aa3ac63088b89bf67dd5fdbe67970b03d">Tgstation.Server.Api.Models.Internal.DreamDaemonLaunchParameters.StartupTimeout</a></div><div class="ttdeci">uint? StartupTimeout</div><div class="ttdoc">The DreamDaemon startup timeout in seconds.</div><div class="ttdef"><b>Definition</b> <a href="_dream_daemon_launch_parameters_8cs_source.html#l00068">DreamDaemonLaunchParameters.cs:68</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_dmb_factory_html"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_dmb_factory.html">Tgstation.Server.Host.Components.Deployment.DmbFactory</a></div><div class="ttdoc">Standard IDmbFactory.</div><div class="ttdef"><b>Definition</b> <a href="_dmb_factory_8cs_source.html#l00027">DmbFactory.cs:28</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_dmb_factory_html_a3434b9eb750c21b1d4f4a86c6f6c076d"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_dmb_factory.html#a3434b9eb750c21b1d4f4a86c6f6c076d">Tgstation.Server.Host.Components.Deployment.DmbFactory.LockNextDmb</a></div><div class="ttdeci">IDmbProvider LockNextDmb(string reason, [CallerFilePath] string? callerFile=null, [CallerLineNumber] int callerLine=default)</div><div class="ttdoc">Gets the next IDmbProvider. DmbAvailable is a precondition.A new IDmbProvider.</div><div class="ttdef"><b>Definition</b> <a href="_dmb_factory_8cs_source.html#l00194">DmbFactory.cs:194</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider_html"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html">Tgstation.Server.Host.Components.Deployment.SwappableDmbProvider</a></div><div class="ttdoc">A IDmbProvider that uses filesystem links to change directory structure underneath the server process...</div><div class="ttdef"><b>Definition</b> <a href="_swappable_dmb_provider_8cs_source.html#l00013">SwappableDmbProvider.cs:14</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider_html_a7b81a4a7c82ee7315a525f1cd7b31bc9"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html#a7b81a4a7c82ee7315a525f1cd7b31bc9">Tgstation.Server.Host.Components.Deployment.SwappableDmbProvider.CompileJob</a></div><div class="ttdeci">Models.CompileJob CompileJob</div><div class="ttdoc">The CompileJob of the .dmb.</div><div class="ttdef"><b>Definition</b> <a href="_swappable_dmb_provider_8cs_source.html#l00027">SwappableDmbProvider.cs:27</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider_html_a81dcefb142f64864408ddcf0e1c18a3b"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html#a81dcefb142f64864408ddcf0e1c18a3b">Tgstation.Server.Host.Components.Deployment.SwappableDmbProvider.FinishActivationPreparation</a></div><div class="ttdeci">Task FinishActivationPreparation(CancellationToken cancellationToken)</div><div class="ttdoc">Should be awaited. before calling MakeActive(CancellationToken) to ensure the SwappableDmbProvider is...</div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider_html_aa556acd2f54e38ce22f5e623a12222c7"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html#aa556acd2f54e38ce22f5e623a12222c7">Tgstation.Server.Host.Components.Deployment.SwappableDmbProvider.Swapped</a></div><div class="ttdeci">bool Swapped</div><div class="ttdoc">If MakeActive(CancellationToken) has been run.</div><div class="ttdef"><b>Definition</b> <a href="_swappable_dmb_provider_8cs_source.html#l00035">SwappableDmbProvider.cs:35</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider_html_ad6e832b7e37fcfb95f47294a9a084c2e"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html#ad6e832b7e37fcfb95f47294a9a084c2e">Tgstation.Server.Host.Components.Deployment.SwappableDmbProvider.MakeActive</a></div><div class="ttdeci">ValueTask MakeActive(CancellationToken cancellationToken)</div><div class="ttdoc">Make the SwappableDmbProvider active by replacing the live link with our CompileJob.</div><div class="ttdef"><b>Definition</b> <a href="_swappable_dmb_provider_8cs_source.html#l00081">SwappableDmbProvider.cs:81</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider_html_afd7fb5a2e71e584df10c62620fb5e174"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_swappable_dmb_provider.html#afd7fb5a2e71e584df10c62620fb5e174">Tgstation.Server.Host.Components.Deployment.SwappableDmbProvider.DisposeAsync</a></div><div class="ttdeci">virtual ValueTask DisposeAsync()</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"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html">Tgstation.Server.Host.Components.Session.SessionPersistor</a></div><div class="ttdef"><b>Definition</b> <a href="_session_persistor_8cs_source.html#l00017">SessionPersistor.cs:18</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_a5b474f446d9e672be12af82e7f7213bd"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html#a5b474f446d9e672be12af82e7f7213bd">Tgstation.Server.Host.Components.Session.SessionPersistor.Update</a></div><div class="ttdeci">ValueTask Update(ReattachInformation reattachInformation, CancellationToken cancellationToken)</div><div class="ttdoc">Update some reattachInformation .A ValueTask representing the running operation.</div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog</a></div><div class="ttdoc">A IWatchdog that, instead of killing servers for updates, uses the wonders of filesystem links to swa...</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00028">AdvancedWatchdog.cs:29</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_a0484c9175cd700015e03340d48b20982"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0484c9175cd700015e03340d48b20982">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.deploymentCleanupTasks</a></div><div class="ttdeci">readonly List< Task > deploymentCleanupTasks</div><div class="ttdoc">List<T> of Tasks that are waiting to clean up old deployments.</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00043">AdvancedWatchdog.cs:43</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_a0d30150f31ceb9b4c0969877fde90044"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0d30150f31ceb9b4c0969877fde90044">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.PrepServerForLaunch</a></div><div class="ttdeci">override async ValueTask< IDmbProvider > PrepServerForLaunch(IDmbProvider dmbToUse, CancellationToken cancellationToken)</div><div class="ttdoc">Prepare the server to launch a new instance with the WatchdogBase.ActiveLaunchParameters and a given ...</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00294">AdvancedWatchdog.cs:294</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_a0e09a241beb5aa99fcff9987bd6b5799"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0e09a241beb5aa99fcff9987bd6b5799">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.CanUseSwappableDmbProvider</a></div><div class="ttdeci">bool CanUseSwappableDmbProvider(IDmbProvider dmbProvider)</div><div class="ttdoc">If the SwappableDmbProvider feature of the AdvancedWatchdog can be used with a given dmbProvider .</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00357">AdvancedWatchdog.cs:357</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_a0fc4476bb374c24de6c4c8be76ad9746"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a0fc4476bb374c24de6c4c8be76ad9746">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.pendingSwappable</a></div><div class="ttdeci">SwappableDmbProvider? pendingSwappable</div><div class="ttdoc">The active SwappableDmbProvider for WatchdogBase.ActiveLaunchParameters.</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00048">AdvancedWatchdog.cs:48</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_a1845f3dca4597a726053daa649565c5f"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a1845f3dca4597a726053daa649565c5f">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.InitialLink</a></div><div class="ttdeci">async ValueTask InitialLink(CancellationToken cancellationToken)</div><div class="ttdoc">Create the initial link to the live game directory using ActiveSwappable.</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00373">AdvancedWatchdog.cs:373</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_a2cec430edc7f34e510f8b741d7ffba2f"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a2cec430edc7f34e510f8b741d7ffba2f">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.ActiveSwappable</a></div><div class="ttdeci">SwappableDmbProvider? ActiveSwappable</div><div class="ttdoc">The SwappableDmbProvider for WatchdogBase.LastLaunchParameters.</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00033">AdvancedWatchdog.cs:33</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_a35cea102f4540006ad8988efd9e8e911"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a35cea102f4540006ad8988efd9e8e911">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.HandleNormalReboot</a></div><div class="ttdeci">override async ValueTask< MonitorAction > HandleNormalReboot(CancellationToken cancellationToken)</div><div class="ttdoc">Handler for MonitorActivationReason.ActiveServerRebooted when the RebootState is RebootState....</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00146">AdvancedWatchdog.cs:146</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_a59895d5671d2f658a9ac0f9dbda73dca"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a59895d5671d2f658a9ac0f9dbda73dca">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.DrainDeploymentCleanupTasks</a></div><div class="ttdeci">Task DrainDeploymentCleanupTasks(bool blocking)</div><div class="ttdoc">Asynchronously drain deploymentCleanupTasks.</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00422">AdvancedWatchdog.cs:422</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_a6016884df4bb5dfa2b68761673935d7b"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a6016884df4bb5dfa2b68761673935d7b">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.CreateSwappableDmbProvider</a></div><div class="ttdeci">SwappableDmbProvider CreateSwappableDmbProvider(IDmbProvider dmbProvider)</div><div class="ttdoc">Create a SwappableDmbProvider for a given dmbProvider .</div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_a60d804c11d6598add968037617a3e06f"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a60d804c11d6598add968037617a3e06f">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.SessionStartupPersist</a></div><div class="ttdeci">override async ValueTask SessionStartupPersist(CancellationToken cancellationToken)</div><div class="ttdoc">Called to save the current Server into the WatchdogBase.SessionPersistor when initially launched....</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00336">AdvancedWatchdog.cs:336</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_a64c8e372170f1f0b200cfc14e6ef55af"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a64c8e372170f1f0b200cfc14e6ef55af">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.DisposeAndNullControllersImpl</a></div><div class="ttdeci">override async ValueTask DisposeAndNullControllersImpl()</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00129">AdvancedWatchdog.cs:129</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_a748bef1e44dcaf8fee7f3bee9a52d25c"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#a748bef1e44dcaf8fee7f3bee9a52d25c">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.HandleNewDmbAvailable</a></div><div class="ttdeci">override async ValueTask HandleNewDmbAvailable(CancellationToken cancellationToken)</div><div class="ttdoc">Handler for MonitorActivationReason.NewDmbAvailable.A ValueTask representing the running operation.</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00238">AdvancedWatchdog.cs:238</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_aadaea6d8f22e45c5c9dd9299657a2d5f"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#aadaea6d8f22e45c5c9dd9299657a2d5f">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.LinkFactory</a></div><div class="ttdeci">IFilesystemLinkFactory LinkFactory</div><div class="ttdoc">The IFilesystemLinkFactory for the AdvancedWatchdog.</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00038">AdvancedWatchdog.cs:38</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_ac164bca1223c8bfced2f1774464b8648"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#ac164bca1223c8bfced2f1774464b8648">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.deploymentCleanupGate</a></div><div class="ttdeci">volatile? TaskCompletionSource deploymentCleanupGate</div><div class="ttdoc">The TaskCompletionSource representing the cleanup of an unused IDmbProvider.</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00053">AdvancedWatchdog.cs:53</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_ad7b9818a9a73bbf86d9353c30e23197f"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#ad7b9818a9a73bbf86d9353c30e23197f">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.PerformDmbSwap</a></div><div class="ttdeci">async ValueTask PerformDmbSwap(SwappableDmbProvider newProvider, CancellationToken cancellationToken)</div><div class="ttdoc">Suspends the BasicWatchdog.Server and calls SwappableDmbProvider.MakeActive(CancellationToken) on a n...</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00386">AdvancedWatchdog.cs:386</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_ad8cc0f4b221744608d73e107af0e72e5"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#ad8cc0f4b221744608d73e107af0e72e5">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.ApplyInitialDmb</a></div><div class="ttdeci">ValueTask ApplyInitialDmb(CancellationToken cancellationToken)</div><div class="ttdoc">Set the ReattachInformation.InitialDmb for the BasicWatchdog.Server.</div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_aed0b060732502326a34a514347e1b9ba"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#aed0b060732502326a34a514347e1b9ba">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.AdvancedWatchdog</a></div><div class="ttdeci">AdvancedWatchdog(IChatManager chat, ISessionControllerFactory sessionControllerFactory, IDmbFactory dmbFactory, ISessionPersistor sessionPersistor, IJobManager jobManager, IServerControl serverControl, IAsyncDelayer asyncDelayer, IIOManager diagnosticsIOManager, IEventConsumer eventConsumer, IRemoteDeploymentManagerFactory remoteDeploymentManagerFactory, IMetricFactory metricFactory, IIOManager gameIOManager, IFilesystemLinkFactory linkFactory, ILogger< AdvancedWatchdog > logger, DreamDaemonLaunchParameters initialLaunchParameters, Api.Models.Instance instance, bool autoStart)</div><div class="ttdoc">Initializes a new instance of the AdvancedWatchdog class.</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00075">AdvancedWatchdog.cs:75</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog_html_af92913ca3e4ef60daa783fc3bc1a0807"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_advanced_watchdog.html#af92913ca3e4ef60daa783fc3bc1a0807">Tgstation.Server.Host.Components.Watchdog.AdvancedWatchdog.HandleMonitorWakeup</a></div><div class="ttdeci">override async ValueTask< MonitorAction > HandleMonitorWakeup(MonitorActivationReason reason, CancellationToken cancellationToken)</div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00343">AdvancedWatchdog.cs:343</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_basic_watchdog_html"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_basic_watchdog.html">Tgstation.Server.Host.Components.Watchdog.BasicWatchdog</a></div><div class="ttdoc">A IWatchdog that manages one server.</div><div class="ttdef"><b>Definition</b> <a href="_basic_watchdog_8cs_source.html#l00027">BasicWatchdog.cs:28</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_html_a1688863ddcd7d0bbfa3ec13b7b015319"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a1688863ddcd7d0bbfa3ec13b7b015319">Tgstation.Server.Host.Components.Watchdog.WatchdogBase.jobManager</a></div><div class="ttdeci">readonly IJobManager jobManager</div><div class="ttdoc">The IJobManager for the WatchdogBase.</div><div class="ttdef"><b>Definition</b> <a href="_watchdog_base_8cs_source.html#l00154">WatchdogBase.cs:154</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_html_a2143ec7079d0ffd42c76f61cf7b71cf6"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a2143ec7079d0ffd42c76f61cf7b71cf6">Tgstation.Server.Host.Components.Watchdog.WatchdogBase.Logger</a></div><div class="ttdeci">ILogger< WatchdogBase > Logger</div><div class="ttdoc">The ILogger for the WatchdogBase.</div><div class="ttdef"><b>Definition</b> <a href="_watchdog_base_8cs_source.html#l00089">WatchdogBase.cs:89</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_html_a30c1f65bce4d161d81063e4c426265f4"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a30c1f65bce4d161d81063e4c426265f4">Tgstation.Server.Host.Components.Watchdog.WatchdogBase.ActiveCompileJob</a></div><div class="ttdeci">Models.? CompileJob ActiveCompileJob</div><div class="ttdoc">Retrieves the Models.CompileJob currently running on the server.</div><div class="ttdef"><b>Definition</b> <a href="_watchdog_base_8cs_source.html#l00076">WatchdogBase.cs:76</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_html_a410f168d84f80c138450fb42f222ba01"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a410f168d84f80c138450fb42f222ba01">Tgstation.Server.Host.Components.Watchdog.WatchdogBase.autoStart</a></div><div class="ttdeci">readonly bool autoStart</div><div class="ttdoc">If the WatchdogBase should LaunchNoLock(bool, bool, bool, ReattachInformation, CancellationToken) in ...</div><div class="ttdef"><b>Definition</b> <a href="_watchdog_base_8cs_source.html#l00174">WatchdogBase.cs:174</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_html_a5768c37124d54e80c66dc63d28d0dea4"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a5768c37124d54e80c66dc63d28d0dea4">Tgstation.Server.Host.Components.Watchdog.WatchdogBase.eventConsumer</a></div><div class="ttdeci">readonly IEventConsumer eventConsumer</div><div class="ttdoc">The IEventConsumer that is not the WatchdogBase.</div><div class="ttdef"><b>Definition</b> <a href="_watchdog_base_8cs_source.html#l00149">WatchdogBase.cs:149</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_html_a6f69db8c3ceae298404f5d8d5a7312b3"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a6f69db8c3ceae298404f5d8d5a7312b3">Tgstation.Server.Host.Components.Watchdog.WatchdogBase.DisposeAsync</a></div><div class="ttdeci">async ValueTask DisposeAsync()</div><div class="ttdef"><b>Definition</b> <a href="_watchdog_base_8cs_source.html#l00295">WatchdogBase.cs:295</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_html_a72637a3ebe8925b7c3753416370ad83c"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a72637a3ebe8925b7c3753416370ad83c">Tgstation.Server.Host.Components.Watchdog.WatchdogBase.remoteDeploymentManagerFactory</a></div><div class="ttdeci">readonly IRemoteDeploymentManagerFactory remoteDeploymentManagerFactory</div><div class="ttdoc">The IRemoteDeploymentManagerFactory for the WatchdogBase.</div><div class="ttdef"><b>Definition</b> <a href="_watchdog_base_8cs_source.html#l00169">WatchdogBase.cs:169</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_html_a8becb1115fe1c09c84534c798466e03f"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a8becb1115fe1c09c84534c798466e03f">Tgstation.Server.Host.Components.Watchdog.WatchdogBase.diagnosticsIOManager</a></div><div class="ttdeci">readonly IIOManager diagnosticsIOManager</div><div class="ttdoc">The IIOManager pointing to the Diagnostics directory.</div><div class="ttdef"><b>Definition</b> <a href="_watchdog_base_8cs_source.html#l00164">WatchdogBase.cs:164</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_html_a9affc2eeae2903d1bdb0fa81a6550fc4"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a9affc2eeae2903d1bdb0fa81a6550fc4">Tgstation.Server.Host.Components.Watchdog.WatchdogBase.ActiveLaunchParameters</a></div><div class="ttdeci">DreamDaemonLaunchParameters ActiveLaunchParameters</div><div class="ttdoc">The DreamDaemonLaunchParameters to be applied.</div><div class="ttdef"><b>Definition</b> <a href="_watchdog_base_8cs_source.html#l00070">WatchdogBase.cs:70</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_html_a9efa04dfe5428a8ce1271600e2388a4e"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#a9efa04dfe5428a8ce1271600e2388a4e">Tgstation.Server.Host.Components.Watchdog.WatchdogBase.BeforeApplyDmb</a></div><div class="ttdeci">async ValueTask BeforeApplyDmb(Models.CompileJob newCompileJob, CancellationToken cancellationToken)</div><div class="ttdoc">To be called before a given newCompileJob goes live.</div><div class="ttdef"><b>Definition</b> <a href="_watchdog_base_8cs_source.html#l00770">WatchdogBase.cs:770</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_html_aec24ff5e3b22b40e62f4a2443eb8cec9"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html#aec24ff5e3b22b40e62f4a2443eb8cec9">Tgstation.Server.Host.Components.Watchdog.WatchdogBase.Chat</a></div><div class="ttdeci">IChatManager Chat</div><div class="ttdoc">The IChatManager for the WatchdogBase.</div><div class="ttdef"><b>Definition</b> <a href="_watchdog_base_8cs_source.html#l00094">WatchdogBase.cs:94</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_server_html"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_server.html">Tgstation.Server.Host.Server</a></div><div class="ttdef"><b>Definition</b> <a href="_server_8cs_source.html#l00025">Server.cs:26</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_server_html_a81fce87c4c8f1fa13d7dffba500f6657"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_server.html#a81fce87c4c8f1fa13d7dffba500f6657">Tgstation.Server.Host.Server.Restart</a></div><div class="ttdeci">ValueTask Restart()</div><div class="ttdoc">Restarts the Host.A ValueTask representing the running operation.</div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_utils_1_1_async_delayer_html"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_utils_1_1_async_delayer.html">Tgstation.Server.Host.Utils.AsyncDelayer</a></div><div class="ttdef"><b>Definition</b> <a href="_async_delayer_8cs_source.html#l00011">AsyncDelayer.cs:12</a></div></div>
|
|
<div class="ttc" id="aclass_tgstation_1_1_server_1_1_host_1_1_utils_1_1_async_delayer_html_a5255a8616967ddacc72efca3bc7b0dcd"><div class="ttname"><a href="class_tgstation_1_1_server_1_1_host_1_1_utils_1_1_async_delayer.html#a5255a8616967ddacc72efca3bc7b0dcd">Tgstation.Server.Host.Utils.AsyncDelayer.Delay</a></div><div class="ttdeci">async ValueTask Delay(TimeSpan timeSpan, CancellationToken cancellationToken)</div><div class="ttdoc">Create a Task that completes after a given timeSpan .A ValueTask representing the running operation.</div><div class="ttdef"><b>Definition</b> <a href="_async_delayer_8cs_source.html#l00028">AsyncDelayer.cs:28</a></div></div>
|
|
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_components_1_1_chat_1_1_i_chat_manager_html"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_chat_1_1_i_chat_manager.html">Tgstation.Server.Host.Components.Chat.IChatManager</a></div><div class="ttdoc">For managing connected chat services.</div><div class="ttdef"><b>Definition</b> <a href="_i_chat_manager_8cs_source.html#l00014">IChatManager.cs:15</a></div></div>
|
|
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_components_1_1_chat_1_1_i_chat_manager_html_a103e061814fc6760410734c7a83f9a83"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_chat_1_1_i_chat_manager.html#a103e061814fc6760410734c7a83f9a83">Tgstation.Server.Host.Components.Chat.IChatManager.QueueWatchdogMessage</a></div><div class="ttdeci">void QueueWatchdogMessage(string message)</div><div class="ttdoc">Queue a chat message to configured watchdog channels.</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#l00013">IDmbFactory.cs:14</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_provider_html"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_provider.html">Tgstation.Server.Host.Components.Deployment.IDmbProvider</a></div><div class="ttdoc">Provides absolute paths to the latest compiled .dmbs.</div><div class="ttdef"><b>Definition</b> <a href="_i_dmb_provider_8cs_source.html#l00010">IDmbProvider.cs:11</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_provider_html_a1b5874e4f5733aa7a04b397450f40792"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_provider.html#a1b5874e4f5733aa7a04b397450f40792">Tgstation.Server.Host.Components.Deployment.IDmbProvider.EngineVersion</a></div><div class="ttdeci">EngineVersion EngineVersion</div><div class="ttdoc">The Api.Models.EngineVersion used to build the .dmb.</div><div class="ttdef"><b>Definition</b> <a href="_i_dmb_provider_8cs_source.html#l00030">IDmbProvider.cs:30</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_provider_html_aad154752808c57d3877f766894c24f4a"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_i_dmb_provider.html#aad154752808c57d3877f766894c24f4a">Tgstation.Server.Host.Components.Deployment.IDmbProvider.CompileJob</a></div><div class="ttdeci">Models.CompileJob CompileJob</div><div class="ttdoc">The CompileJob of the .dmb.</div><div class="ttdef"><b>Definition</b> <a href="_i_dmb_provider_8cs_source.html#l00025">IDmbProvider.cs:25</a></div></div>
|
|
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_remote_1_1_i_remote_deployment_manager_factory_html"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_remote_1_1_i_remote_deployment_manager_factory.html">Tgstation.Server.Host.Components.Deployment.Remote.IRemoteDeploymentManagerFactory</a></div><div class="ttdoc">Factory for creating IRemoteDeploymentManagers.</div><div class="ttdef"><b>Definition</b> <a href="_i_remote_deployment_manager_factory_8cs_source.html#l00010">IRemoteDeploymentManagerFactory.cs:11</a></div></div>
|
|
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_components_1_1_events_1_1_i_event_consumer_html"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_events_1_1_i_event_consumer.html">Tgstation.Server.Host.Components.Events.IEventConsumer</a></div><div class="ttdoc">Consumes EventTypes and takes the appropriate actions.</div><div class="ttdef"><b>Definition</b> <a href="_i_event_consumer_8cs_source.html#l00010">IEventConsumer.cs:11</a></div></div>
|
|
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_i_session_controller_factory_html"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_i_session_controller_factory.html">Tgstation.Server.Host.Components.Session.ISessionControllerFactory</a></div><div class="ttdoc">Factory for ISessionControllers.</div><div class="ttdef"><b>Definition</b> <a href="_i_session_controller_factory_8cs_source.html#l00013">ISessionControllerFactory.cs:14</a></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>
|
|
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_core_1_1_i_server_control_html"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_core_1_1_i_server_control.html">Tgstation.Server.Host.Core.IServerControl</a></div><div class="ttdoc">Represents a service that may take an updated Host assembly and run it, stopping the current assembly...</div><div class="ttdef"><b>Definition</b> <a href="_i_server_control_8cs_source.html#l00009">IServerControl.cs:10</a></div></div>
|
|
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_filesystem_link_factory_html"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_filesystem_link_factory.html">Tgstation.Server.Host.IO.IFilesystemLinkFactory</a></div><div class="ttdoc">For creating filesystem symbolic links.</div><div class="ttdef"><b>Definition</b> <a href="_i_filesystem_link_factory_8cs_source.html#l00009">IFilesystemLinkFactory.cs:10</a></div></div>
|
|
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_i_o_manager_html"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_i_o_1_1_i_i_o_manager.html">Tgstation.Server.Host.IO.IIOManager</a></div><div class="ttdoc">Interface for using filesystems.</div><div class="ttdef"><b>Definition</b> <a href="_i_i_o_manager_8cs_source.html#l00013">IIOManager.cs:14</a></div></div>
|
|
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_jobs_1_1_i_job_manager_html"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_jobs_1_1_i_job_manager.html">Tgstation.Server.Host.Jobs.IJobManager</a></div><div class="ttdoc">Manages the runtime of Jobs.</div><div class="ttdef"><b>Definition</b> <a href="_i_job_manager_8cs_source.html#l00012">IJobManager.cs:13</a></div></div>
|
|
<div class="ttc" id="ainterface_tgstation_1_1_server_1_1_host_1_1_utils_1_1_i_async_delayer_html"><div class="ttname"><a href="interface_tgstation_1_1_server_1_1_host_1_1_utils_1_1_i_async_delayer.html">Tgstation.Server.Host.Utils.IAsyncDelayer</a></div><div class="ttdoc">For waiting asynchronously.</div><div class="ttdef"><b>Definition</b> <a href="_i_async_delayer_8cs_source.html#l00010">IAsyncDelayer.cs:11</a></div></div>
|
|
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_api_1_1_models_1_1_internal_html"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_api_1_1_models_1_1_internal.html">Tgstation.Server.Api.Models.Internal</a></div><div class="ttdef"><b>Definition</b> <a href="_chat_bot_api_base_8cs_source.html#l00005">ChatBotApiBase.cs:6</a></div></div>
|
|
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_api_1_1_models_html"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_api_1_1_models.html">Tgstation.Server.Api.Models</a></div><div class="ttdef"><b>Definition</b> <a href="_tgstation_8_server_8_api_2_models_2_chat_channel_8cs_source.html#l00005">ChatChannel.cs:6</a></div></div>
|
|
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_api_1_1_models_html_ad8fb60934662752c4bbed899440208ea"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_api_1_1_models.html#ad8fb60934662752c4bbed899440208ea">Tgstation.Server.Api.Models.EngineType</a></div><div class="ttdeci">EngineType</div><div class="ttdoc">The type of engine the codebase is using.</div><div class="ttdef"><b>Definition</b> <a href="_engine_type_8cs_source.html#l00006">EngineType.cs:7</a></div></div>
|
|
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_chat_html"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_chat.html">Tgstation.Server.Host.Components.Chat</a></div><div class="ttdef"><b>Definition</b> <a href="_channel_mapping_8cs_source.html#l00003">ChannelMapping.cs:4</a></div></div>
|
|
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_remote_html"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_deployment_1_1_remote.html">Tgstation.Server.Host.Components.Deployment.Remote</a></div><div class="ttdef"><b>Definition</b> <a href="_base_remote_deployment_manager_8cs_source.html#l00014">BaseRemoteDeploymentManager.cs:15</a></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="_deployment_lock_manager_8cs_source.html#l00012">DeploymentLockManager.cs:13</a></div></div>
|
|
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_events_html"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_events.html">Tgstation.Server.Host.Components.Events</a></div><div class="ttdef"><b>Definition</b> <a href="_event_consumer_8cs_source.html#l00009">EventConsumer.cs:10</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_watchdog_html"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog.html">Tgstation.Server.Host.Components.Watchdog</a></div><div class="ttdef"><b>Definition</b> <a href="_advanced_watchdog_8cs_source.html#l00023">AdvancedWatchdog.cs:24</a></div></div>
|
|
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_html_a97c1a4a168451bd7e3be23c467aa2812"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog.html#a97c1a4a168451bd7e3be23c467aa2812">Tgstation.Server.Host.Components.Watchdog.MonitorAction</a></div><div class="ttdeci">MonitorAction</div><div class="ttdoc">The action for the monitor loop to take when control is returned to it.</div><div class="ttdef"><b>Definition</b> <a href="_monitor_action_8cs_source.html#l00006">MonitorAction.cs:7</a></div></div>
|
|
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_html_acb2ccc2dc05d01ec3a6448d3d57155c9"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog.html#acb2ccc2dc05d01ec3a6448d3d57155c9">Tgstation.Server.Host.Components.Watchdog.MonitorActivationReason</a></div><div class="ttdeci">MonitorActivationReason</div><div class="ttdoc">Reasons for the monitor to wake up.</div><div class="ttdef"><b>Definition</b> <a href="_monitor_activation_reason_8cs_source.html#l00006">MonitorActivationReason.cs:7</a></div></div>
|
|
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_host_1_1_core_html"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_host_1_1_core.html">Tgstation.Server.Host.Core</a></div><div class="ttdef"><b>Definition</b> <a href="_command_pipe_manager_8cs_source.html#l00016">CommandPipeManager.cs:17</a></div></div>
|
|
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_host_1_1_i_o_html"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_host_1_1_i_o.html">Tgstation.Server.Host.IO</a></div><div class="ttdef"><b>Definition</b> <a href="_buffered_file_stream_provider_8cs_source.html#l00008">BufferedFileStreamProvider.cs:9</a></div></div>
|
|
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_host_1_1_jobs_html"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_host_1_1_jobs.html">Tgstation.Server.Host.Jobs</a></div><div class="ttdef"><b>Definition</b> <a href="_i_job_manager_8cs_source.html#l00007">IJobManager.cs:8</a></div></div>
|
|
<div class="ttc" id="anamespace_tgstation_1_1_server_1_1_host_1_1_utils_html"><div class="ttname"><a href="namespace_tgstation_1_1_server_1_1_host_1_1_utils.html">Tgstation.Server.Host.Utils</a></div><div class="ttdef"><b>Definition</b> <a href="_graph_q_l_git_lab_client_8cs_source.html#l00006">GraphQLGitLabClient.cs:7</a></div></div>
|
|
</div><!-- fragment --></div><!-- contents -->
|
|
<!-- start footer part -->
|
|
<hr class="footer"/><address class="footer"><small>
|
|
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
|
|
</small></address>
|
|
</body>
|
|
</html>
|