diff --git a/_process_executor_8cs_source.html b/_process_executor_8cs_source.html index 7f3f60e92c..319fcf0d32 100644 --- a/_process_executor_8cs_source.html +++ b/_process_executor_8cs_source.html @@ -298,7 +298,7 @@ $(function() {
249
251 public IProcess GetProcessByName(string name)
252 {
-
253 logger.LogTrace("GetProcessByName: {0}...", name ?? throw new ArgumentNullException(nameof(name)));
+
253 logger.LogTrace("GetProcessByName: {processName}...", name ?? throw new ArgumentNullException(nameof(name)));
254 var procs = global::System.Diagnostics.Process.GetProcessesByName(name);
255 global::System.Diagnostics.Process handle = null;
256 foreach (var proc in procs)
@@ -306,7 +306,7 @@ $(function() {
258 handle = proc;
259 else
260 {
-
261 logger.LogTrace("Disposing extra found PID: {0}...", proc.Id);
+
261 logger.LogTrace("Disposing extra found PID: {pid}...", proc.Id);
262 proc.Dispose();
263 }
264
diff --git a/_session_persistor_8cs_source.html b/_session_persistor_8cs_source.html index b2592af253..f980d21398 100644 --- a/_session_persistor_8cs_source.html +++ b/_session_persistor_8cs_source.html @@ -125,7 +125,7 @@ $(function() {
70 if (reattachInformation == null)
71 throw new ArgumentNullException(nameof(reattachInformation));
72
-
73 logger.LogDebug("Saving reattach information: {0}...", reattachInformation);
+
73 logger.LogDebug("Saving reattach information: {info}...", reattachInformation);
74
75 await ClearImpl(db, false, cancellationToken);
76
@@ -148,112 +148,141 @@ $(function() {
94 {
95 Models.ReattachInformation result = null;
96 TimeSpan? topicTimeout = null;
-
97 await databaseContextFactory.UseContext(async (db) =>
-
98 {
-
99 var dbReattachInfos = await db
-
100 .ReattachInformations
-
101 .AsQueryable()
-
102 .Where(x => x.CompileJob.Job.Instance.Id == metadata.Id)
-
103 .Include(x => x.CompileJob)
-
104 .ToListAsync(cancellationToken);
-
105 result = dbReattachInfos.FirstOrDefault();
-
106 if (result == default)
-
107 return;
-
108
-
109 var timeoutMilliseconds = await db
-
110 .Instances
-
111 .AsQueryable()
-
112 .Where(x => x.Id == metadata.Id)
-
113 .Select(x => x.DreamDaemonSettings.TopicRequestTimeout)
-
114 .FirstOrDefaultAsync(cancellationToken)
-
115 ;
-
116
-
117 if (timeoutMilliseconds == default)
-
118 {
-
119 logger.LogCritical("Missing TopicRequestTimeout!");
-
120 return;
+
97
+
98 async Task KillProcess(Models.ReattachInformation reattachInfo)
+
99 {
+
100 try
+
101 {
+
102 using var process = processExecutor.GetProcess(reattachInfo.ProcessId);
+
103 if (process != null)
+
104 {
+
105 if (reattachInfo == result)
+
106 {
+
107 logger.LogWarning("Killing PID {pid} associated with CompileJob-less reattach information...", reattachInfo.ProcessId);
+
108 }
+
109 else
+
110 {
+
111 logger.LogWarning("Killing PID {pid} associated with extra reattach information...", reattachInfo.ProcessId);
+
112 }
+
113
+
114 process.Terminate();
+
115 await process.Lifetime;
+
116 }
+
117 }
+
118 catch (Exception ex)
+
119 {
+
120 logger.LogWarning(ex, "Failed to kill process!");
121 }
-
122
-
123 topicTimeout = TimeSpan.FromMilliseconds(timeoutMilliseconds.Value);
-
124
-
125 bool first = true;
-
126 foreach (var reattachInfo in dbReattachInfos)
-
127 {
-
128 if (first)
-
129 {
-
130 first = false;
-
131 continue;
-
132 }
-
133
-
134 logger.LogWarning("Killing PID {0} associated with extra reattach information...", reattachInfo.ProcessId);
-
135 try
-
136 {
-
137 using var process = processExecutor.GetProcess(reattachInfo.ProcessId);
-
138 process.Terminate();
-
139 await process.Lifetime;
-
140 }
-
141 catch (Exception ex)
-
142 {
-
143 logger.LogWarning(ex, "Failed to kill process!");
-
144 }
-
145
-
146 db.ReattachInformations.Remove(reattachInfo);
-
147 }
-
148
-
149 await db.Save(cancellationToken);
-
150 });
+
122 }
+
123
+
124 await databaseContextFactory.UseContext(async (db) =>
+
125 {
+
126 var dbReattachInfos = await db
+
127 .ReattachInformations
+
128 .AsQueryable()
+
129 .Where(x => x.CompileJob.Job.Instance.Id == metadata.Id)
+
130 .Include(x => x.CompileJob)
+
131 .ToListAsync(cancellationToken);
+
132 result = dbReattachInfos.FirstOrDefault();
+
133 if (result == default)
+
134 return;
+
135
+
136 var timeoutMilliseconds = await db
+
137 .Instances
+
138 .AsQueryable()
+
139 .Where(x => x.Id == metadata.Id)
+
140 .Select(x => x.DreamDaemonSettings.TopicRequestTimeout)
+
141 .FirstOrDefaultAsync(cancellationToken)
+
142 ;
+
143
+
144 if (timeoutMilliseconds == default)
+
145 {
+
146 logger.LogCritical("Missing TopicRequestTimeout!");
+
147 return;
+
148 }
+
149
+
150 topicTimeout = TimeSpan.FromMilliseconds(timeoutMilliseconds.Value);
151
-
152 if (!topicTimeout.HasValue)
-
153 {
-
154 logger.LogDebug("Reattach information not found!");
-
155 return null;
-
156 }
-
157
-
158 var dmb = await dmbFactory.FromCompileJob(result.CompileJob, cancellationToken);
-
159 if (dmb == null)
-
160 {
-
161 logger.LogError("Unable to reattach! Could not load .dmb!");
-
162 return null;
-
163 }
-
164
-
165 var info = new ReattachInformation(
-
166 result,
-
167 dmb,
-
168 topicTimeout.Value);
+
152 bool first = true;
+
153 foreach (var reattachInfo in dbReattachInfos)
+
154 {
+
155 if (first)
+
156 {
+
157 first = false;
+
158 continue;
+
159 }
+
160
+
161 await KillProcess(reattachInfo);
+
162
+
163 db.ReattachInformations.Remove(reattachInfo);
+
164 logger.LogTrace("Deleting ReattachInformation {id}...", reattachInfo.Id);
+
165 }
+
166
+
167 await db.Save(cancellationToken);
+
168 });
169
-
170 logger.LogDebug("Reattach information loaded: {0}", info);
-
171
-
172 return info;
-
173 }
-
174
-
176 public Task Clear(CancellationToken cancellationToken) => databaseContextFactory
-
177 .UseContext(
-
178 db =>
-
179 {
-
180 logger.LogDebug("Clearing reattach information");
-
181 return ClearImpl(db, true, cancellationToken);
-
182 });
-
183
-
191 async Task ClearImpl(IDatabaseContext databaseContext, bool instant, CancellationToken cancellationToken)
-
192 {
-
193 var baseQuery = databaseContext
-
194 .ReattachInformations
-
195 .AsQueryable()
-
196 .Where(x => x.CompileJob.Job.Instance.Id == metadata.Id);
-
197
-
198 if (instant)
-
199 await baseQuery
-
200 .DeleteAsync(cancellationToken)
-
201 ;
-
202 else
-
203 {
-
204 var results = await baseQuery.ToListAsync(cancellationToken);
-
205 foreach (var result in results)
-
206 databaseContext.ReattachInformations.Remove(result);
-
207 }
-
208 }
-
209 }
-
210}
+
170 if (!topicTimeout.HasValue)
+
171 {
+
172 logger.LogDebug("Reattach information not found!");
+
173 return null;
+
174 }
+
175
+
176 var dmb = await dmbFactory.FromCompileJob(result.CompileJob, cancellationToken);
+
177 if (dmb == null)
+
178 {
+
179 logger.LogError("Unable to reattach! Could not load .dmb!");
+
180 await KillProcess(result);
+
181
+
182 await databaseContextFactory.UseContext(async db =>
+
183 {
+
184 logger.LogTrace("Deleting ReattachInformation {id}...", result.Id);
+
185 await db
+
186 .ReattachInformations
+
187 .AsQueryable()
+
188 .Where(x => x.Id == result.Id)
+
189 .DeleteAsync(cancellationToken);
+
190 });
+
191 return null;
+
192 }
+
193
+
194 var info = new ReattachInformation(
+
195 result,
+
196 dmb,
+
197 topicTimeout.Value);
+
198
+
199 logger.LogDebug("Reattach information loaded: {info}", info);
+
200
+
201 return info;
+
202 }
+
203
+
205 public Task Clear(CancellationToken cancellationToken) => databaseContextFactory
+
206 .UseContext(
+
207 db =>
+
208 {
+
209 logger.LogDebug("Clearing reattach information");
+
210 return ClearImpl(db, true, cancellationToken);
+
211 });
+
212
+
220 async Task ClearImpl(IDatabaseContext databaseContext, bool instant, CancellationToken cancellationToken)
+
221 {
+
222 var baseQuery = databaseContext
+
223 .ReattachInformations
+
224 .AsQueryable()
+
225 .Where(x => x.CompileJob.Job.Instance.Id == metadata.Id);
+
226
+
227 if (instant)
+
228 await baseQuery
+
229 .DeleteAsync(cancellationToken)
+
230 ;
+
231 else
+
232 {
+
233 var results = await baseQuery.ToListAsync(cancellationToken);
+
234 foreach (var result in results)
+
235 databaseContext.ReattachInformations.Remove(result);
+
236 }
+
237 }
+
238 }
+
239}
Tgstation.Server.Api.Models.Instance
Metadata about a server instance.
Definition: Instance.cs:9
Tgstation.Server.Host.Components.Interop.DMApiParameters.AccessIdentifier
string AccessIdentifier
Used to identify and authenticate the DreamDaemon instance.
Definition: DMApiParameters.cs:14
Tgstation.Server.Host.Components.Session.ReattachInformation
Parameters necessary for duplicating a ISessionController session.
Definition: ReattachInformation.cs:14
@@ -265,11 +294,12 @@ $(function() {
Tgstation.Server.Host.Components.Session.SessionPersistor.metadata
readonly Api.Models.Instance metadata
The Api.Models.Instance for the SessionPersistor.
Definition: SessionPersistor.cs:43
Tgstation.Server.Host.Components.Session.SessionPersistor.Save
Task Save(ReattachInformation reattachInformation, CancellationToken cancellationToken)
Save some reattachInformation . A Task representing the running operation.
Tgstation.Server.Host.Components.Session.SessionPersistor.dmbFactory
readonly IDmbFactory dmbFactory
The IDmbFactory for the SessionPersistor.
Definition: SessionPersistor.cs:28
-
Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl
async Task ClearImpl(IDatabaseContext databaseContext, bool instant, CancellationToken cancellationToken)
Clear any stored ReattachInformation.
Definition: SessionPersistor.cs:191
+
Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl
async Task ClearImpl(IDatabaseContext databaseContext, bool instant, CancellationToken cancellationToken)
Clear any stored ReattachInformation.
Definition: SessionPersistor.cs:220
Tgstation.Server.Host.Components.Session.SessionPersistor.SessionPersistor
SessionPersistor(IDatabaseContextFactory databaseContextFactory, IDmbFactory dmbFactory, IProcessExecutor processExecutor, ILogger< SessionPersistor > logger, Api.Models.Instance metadata)
Initializes a new instance of the SessionPersistor class.
Definition: SessionPersistor.cs:53
Tgstation.Server.Host.Components.Session.SessionPersistor.Clear
Task Clear(CancellationToken cancellationToken)
Clear any stored ReattachInformation. A Task representing the running operation.
Tgstation.Server.Host.Models.ReattachInformation
Database representation of Components.Session.ReattachInformation.
Definition: ReattachInformation.cs:9
Tgstation.Server.Host.Models.ReattachInformation.CompileJob
CompileJob CompileJob
The Models.CompileJob for the Components.Session.ReattachInformation.Dmb.
Definition: ReattachInformation.cs:19
+
Tgstation.Server.Host.Models.ReattachInformation.Id
long Id
The row Id.
Definition: ReattachInformation.cs:13
Tgstation.Server.Host.Components.Deployment.IDmbFactory
Factory for IDmbProviders.
Definition: IDmbFactory.cs:15
Tgstation.Server.Host.Components.Deployment.IDmbFactory.FromCompileJob
Task< IDmbProvider > FromCompileJob(CompileJob compileJob, CancellationToken cancellationToken)
Gets a IDmbProvider for a given CompileJob.
Tgstation.Server.Host.Components.Session.ISessionPersistor
Handles saving and loading ReattachInformation.
Definition: ISessionPersistor.cs:10
@@ -279,6 +309,7 @@ $(function() {
Tgstation.Server.Host.Database.IDatabaseContext
Represents the database.
Definition: IDatabaseContext.cs:17
Tgstation.Server.Host.Database.IDatabaseContext.ReattachInformations
IDatabaseCollection< ReattachInformation > ReattachInformations
The DbSet<TEntity> for ReattachInformations.
Definition: IDatabaseContext.cs:76
Tgstation.Server.Host.System.IProcessExecutor
For launching IProcess'.
Definition: IProcessExecutor.cs:7
+
Tgstation.Server.Host.System.IProcessExecutor.GetProcess
IProcess GetProcess(int id)
Get a IProcess by id .
Tgstation.Server.Host.Components.Deployment
Definition: DmbFactory.cs:18
Tgstation.Server.Host.Components.Session
Definition: ApiValidationStatus.cs:2
Tgstation.Server.Host.Components.Session.RebootState
RebootState
Represents the action to take when /world/Reboot() is called.
Definition: RebootState.cs:7
diff --git a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html index 7ea1a885c1..606f6ce885 100644 --- a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html +++ b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor.html @@ -289,7 +289,7 @@ Private Attributes

Implements Tgstation.Server.Host.Components.Session.ISessionPersistor.

-

References Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl(), and Tgstation.Server.Host.Components.Session.SessionPersistor.logger.

+

References Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl(), and Tgstation.Server.Host.Components.Session.SessionPersistor.logger.

Referenced by Tgstation.Server.Host.Components.Watchdog.WatchdogBase.DisposeAndNullControllers().

@@ -375,24 +375,24 @@ Here is the caller graph for this function:
Returns
A Task representing the running operation.
-

Definition at line 191 of file SessionPersistor.cs.

-
192 {
-
193 var baseQuery = databaseContext
-
194 .ReattachInformations
-
195 .AsQueryable()
-
196 .Where(x => x.CompileJob.Job.Instance.Id == metadata.Id);
-
197
-
198 if (instant)
-
199 await baseQuery
-
200 .DeleteAsync(cancellationToken)
-
201 ;
-
202 else
-
203 {
-
204 var results = await baseQuery.ToListAsync(cancellationToken);
-
205 foreach (var result in results)
-
206 databaseContext.ReattachInformations.Remove(result);
-
207 }
-
208 }
+

Definition at line 220 of file SessionPersistor.cs.

+
221 {
+
222 var baseQuery = databaseContext
+ +
224 .AsQueryable()
+
225 .Where(x => x.CompileJob.Job.Instance.Id == metadata.Id);
+
226
+
227 if (instant)
+
228 await baseQuery
+
229 .DeleteAsync(cancellationToken)
+
230 ;
+
231 else
+
232 {
+
233 var results = await baseQuery.ToListAsync(cancellationToken);
+
234 foreach (var result in results)
+
235 databaseContext.ReattachInformations.Remove(result);
+
236 }
+
237 }
void Remove(TModel model)
Remove a given model from the the working set.
IDatabaseCollection< ReattachInformation > ReattachInformations
The DbSet<TEntity> for ReattachInformations.
@@ -463,87 +463,117 @@ Here is the caller graph for this function:
94 {
95 Models.ReattachInformation result = null;
96 TimeSpan? topicTimeout = null;
-
97 await databaseContextFactory.UseContext(async (db) =>
-
98 {
-
99 var dbReattachInfos = await db
-
100 .ReattachInformations
-
101 .AsQueryable()
-
102 .Where(x => x.CompileJob.Job.Instance.Id == metadata.Id)
-
103 .Include(x => x.CompileJob)
-
104 .ToListAsync(cancellationToken);
-
105 result = dbReattachInfos.FirstOrDefault();
-
106 if (result == default)
-
107 return;
-
108
-
109 var timeoutMilliseconds = await db
-
110 .Instances
-
111 .AsQueryable()
-
112 .Where(x => x.Id == metadata.Id)
-
113 .Select(x => x.DreamDaemonSettings.TopicRequestTimeout)
-
114 .FirstOrDefaultAsync(cancellationToken)
-
115 ;
-
116
-
117 if (timeoutMilliseconds == default)
-
118 {
-
119 logger.LogCritical("Missing TopicRequestTimeout!");
-
120 return;
+
97
+
98 async Task KillProcess(Models.ReattachInformation reattachInfo)
+
99 {
+
100 try
+
101 {
+
102 using var process = processExecutor.GetProcess(reattachInfo.ProcessId);
+
103 if (process != null)
+
104 {
+
105 if (reattachInfo == result)
+
106 {
+
107 logger.LogWarning("Killing PID {pid} associated with CompileJob-less reattach information...", reattachInfo.ProcessId);
+
108 }
+
109 else
+
110 {
+
111 logger.LogWarning("Killing PID {pid} associated with extra reattach information...", reattachInfo.ProcessId);
+
112 }
+
113
+
114 process.Terminate();
+
115 await process.Lifetime;
+
116 }
+
117 }
+
118 catch (Exception ex)
+
119 {
+
120 logger.LogWarning(ex, "Failed to kill process!");
121 }
-
122
-
123 topicTimeout = TimeSpan.FromMilliseconds(timeoutMilliseconds.Value);
-
124
-
125 bool first = true;
-
126 foreach (var reattachInfo in dbReattachInfos)
-
127 {
-
128 if (first)
-
129 {
-
130 first = false;
-
131 continue;
-
132 }
-
133
-
134 logger.LogWarning("Killing PID {0} associated with extra reattach information...", reattachInfo.ProcessId);
-
135 try
-
136 {
-
137 using var process = processExecutor.GetProcess(reattachInfo.ProcessId);
-
138 process.Terminate();
-
139 await process.Lifetime;
-
140 }
-
141 catch (Exception ex)
-
142 {
-
143 logger.LogWarning(ex, "Failed to kill process!");
-
144 }
-
145
-
146 db.ReattachInformations.Remove(reattachInfo);
-
147 }
-
148
-
149 await db.Save(cancellationToken);
-
150 });
+
122 }
+
123
+
124 await databaseContextFactory.UseContext(async (db) =>
+
125 {
+
126 var dbReattachInfos = await db
+
127 .ReattachInformations
+
128 .AsQueryable()
+
129 .Where(x => x.CompileJob.Job.Instance.Id == metadata.Id)
+
130 .Include(x => x.CompileJob)
+
131 .ToListAsync(cancellationToken);
+
132 result = dbReattachInfos.FirstOrDefault();
+
133 if (result == default)
+
134 return;
+
135
+
136 var timeoutMilliseconds = await db
+
137 .Instances
+
138 .AsQueryable()
+
139 .Where(x => x.Id == metadata.Id)
+
140 .Select(x => x.DreamDaemonSettings.TopicRequestTimeout)
+
141 .FirstOrDefaultAsync(cancellationToken)
+
142 ;
+
143
+
144 if (timeoutMilliseconds == default)
+
145 {
+
146 logger.LogCritical("Missing TopicRequestTimeout!");
+
147 return;
+
148 }
+
149
+
150 topicTimeout = TimeSpan.FromMilliseconds(timeoutMilliseconds.Value);
151
-
152 if (!topicTimeout.HasValue)
-
153 {
-
154 logger.LogDebug("Reattach information not found!");
-
155 return null;
-
156 }
-
157
-
158 var dmb = await dmbFactory.FromCompileJob(result.CompileJob, cancellationToken);
-
159 if (dmb == null)
-
160 {
-
161 logger.LogError("Unable to reattach! Could not load .dmb!");
-
162 return null;
-
163 }
-
164
-
165 var info = new ReattachInformation(
-
166 result,
-
167 dmb,
-
168 topicTimeout.Value);
+
152 bool first = true;
+
153 foreach (var reattachInfo in dbReattachInfos)
+
154 {
+
155 if (first)
+
156 {
+
157 first = false;
+
158 continue;
+
159 }
+
160
+
161 await KillProcess(reattachInfo);
+
162
+
163 db.ReattachInformations.Remove(reattachInfo);
+
164 logger.LogTrace("Deleting ReattachInformation {id}...", reattachInfo.Id);
+
165 }
+
166
+
167 await db.Save(cancellationToken);
+
168 });
169
-
170 logger.LogDebug("Reattach information loaded: {0}", info);
-
171
-
172 return info;
-
173 }
+
170 if (!topicTimeout.HasValue)
+
171 {
+
172 logger.LogDebug("Reattach information not found!");
+
173 return null;
+
174 }
+
175
+
176 var dmb = await dmbFactory.FromCompileJob(result.CompileJob, cancellationToken);
+
177 if (dmb == null)
+
178 {
+
179 logger.LogError("Unable to reattach! Could not load .dmb!");
+
180 await KillProcess(result);
+
181
+
182 await databaseContextFactory.UseContext(async db =>
+
183 {
+
184 logger.LogTrace("Deleting ReattachInformation {id}...", result.Id);
+
185 await db
+
186 .ReattachInformations
+
187 .AsQueryable()
+
188 .Where(x => x.Id == result.Id)
+
189 .DeleteAsync(cancellationToken);
+
190 });
+
191 return null;
+
192 }
+
193
+
194 var info = new ReattachInformation(
+
195 result,
+
196 dmb,
+
197 topicTimeout.Value);
+
198
+
199 logger.LogDebug("Reattach information loaded: {info}", info);
+
200
+
201 return info;
+
202 }
Task< IDmbProvider > FromCompileJob(CompileJob compileJob, CancellationToken cancellationToken)
Gets a IDmbProvider for a given CompileJob.
Task UseContext(Func< IDatabaseContext, Task > operation)
Run an operation in the scope of an IDatabaseContext.
+
IProcess GetProcess(int id)
Get a IProcess by id .
-

References Tgstation.Server.Host.Models.ReattachInformation.CompileJob, Tgstation.Server.Host.Components.Session.SessionPersistor.databaseContextFactory, Tgstation.Server.Host.Components.Session.SessionPersistor.dmbFactory, Tgstation.Server.Host.Components.Deployment.IDmbFactory.FromCompileJob(), Tgstation.Server.Host.Components.Session.SessionPersistor.logger, Tgstation.Server.Host.Components.Session.SessionPersistor.metadata, and Tgstation.Server.Host.Database.IDatabaseContextFactory.UseContext().

+

References Tgstation.Server.Host.Models.ReattachInformation.CompileJob, Tgstation.Server.Host.Components.Session.SessionPersistor.databaseContextFactory, Tgstation.Server.Host.Components.Session.SessionPersistor.dmbFactory, Tgstation.Server.Host.Components.Deployment.IDmbFactory.FromCompileJob(), Tgstation.Server.Host.System.IProcessExecutor.GetProcess(), Tgstation.Server.Host.Models.ReattachInformation.Id, Tgstation.Server.Host.Components.Session.SessionPersistor.logger, Tgstation.Server.Host.Components.Session.SessionPersistor.metadata, Tgstation.Server.Host.Components.Session.SessionPersistor.processExecutor, and Tgstation.Server.Host.Database.IDatabaseContextFactory.UseContext().

Referenced by Tgstation.Server.Host.Components.Watchdog.WatchdogBase.StartAsync().

@@ -551,9 +581,10 @@ Here is the call graph for this function:
- + - + +
@@ -606,7 +637,7 @@ Here is the caller graph for this function:

Implements Tgstation.Server.Host.Components.Session.ISessionPersistor.

-

References Tgstation.Server.Host.Components.Interop.DMApiParameters.AccessIdentifier, Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl(), and Tgstation.Server.Host.Components.Session.SessionPersistor.logger.

+

References Tgstation.Server.Host.Components.Interop.DMApiParameters.AccessIdentifier, Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl(), and Tgstation.Server.Host.Components.Session.SessionPersistor.logger.

Referenced by Tgstation.Server.Host.Components.Watchdog.BasicWatchdog.InitController().

@@ -740,7 +771,7 @@ Here is the caller graph for this function:

Definition at line 43 of file SessionPersistor.cs.

-

Referenced by Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl(), Tgstation.Server.Host.Components.Session.SessionPersistor.Load(), and Tgstation.Server.Host.Components.Session.SessionPersistor.SessionPersistor().

+

Referenced by Tgstation.Server.Host.Components.Session.SessionPersistor.ClearImpl(), Tgstation.Server.Host.Components.Session.SessionPersistor.Load(), and Tgstation.Server.Host.Components.Session.SessionPersistor.SessionPersistor().

@@ -768,7 +799,7 @@ Here is the caller graph for this function:

Definition at line 33 of file SessionPersistor.cs.

-

Referenced by Tgstation.Server.Host.Components.Session.SessionPersistor.SessionPersistor().

+

Referenced by Tgstation.Server.Host.Components.Session.SessionPersistor.Load(), and Tgstation.Server.Host.Components.Session.SessionPersistor.SessionPersistor().

diff --git a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.map b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.map index 50bc1d70e2..311944cff5 100644 --- a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.map +++ b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.map @@ -1,5 +1,6 @@ - + - + + diff --git a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.md5 b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.md5 index f2e173ff50..39e5d9411a 100644 --- a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.md5 +++ b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.md5 @@ -1 +1 @@ -d4f8af4d5efe452fc54088d7a93ebac1 \ No newline at end of file +4a2d82eb817c5f18fe3a302ca2488d01 \ No newline at end of file diff --git a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.png b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.png index 25b948d85f..f7eb0452f5 100644 Binary files a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.png and b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_session_1_1_session_persistor_a1e73c7faa5f961369020355979f55ada_cgraph.png differ diff --git a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html index 9e42b53012..d3e716e29c 100644 --- a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html +++ b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base.html @@ -2948,32 +2948,33 @@ Here is the call graph for this function:
- - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.map b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.map index 8a1d294d42..ed0ae8af27 100644 --- a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.map +++ b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.map @@ -1,28 +1,29 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.md5 b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.md5 index 81079e901b..57069f4156 100644 --- a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.md5 +++ b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.md5 @@ -1 +1 @@ -d3a336e057e75a0c5a07bd58f63be4ae \ No newline at end of file +4d9e7f5b431d22edfe94b258dc49a024 \ No newline at end of file diff --git a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.png b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.png index 1dd32e7854..8da3921adb 100644 Binary files a/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.png and b/class_tgstation_1_1_server_1_1_host_1_1_components_1_1_watchdog_1_1_watchdog_base_ae30d4b582b04eb7c3ef3c5d848429bbd_cgraph.png differ diff --git a/class_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information.html b/class_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information.html index 3223fee4c8..8ede891c66 100644 --- a/class_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information.html +++ b/class_tgstation_1_1_server_1_1_host_1_1_models_1_1_reattach_information.html @@ -236,6 +236,8 @@ Additional Inherited Members

Definition at line 13 of file ReattachInformation.cs.

13{ get; set; }
+

Referenced by Tgstation.Server.Host.Components.Session.SessionPersistor.Load().

+
The documentation for this class was generated from the following file: