Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ OnStop()

void System.Diagnostics.Tracing.ActivityTracker.OnStop ( string providerName,
string activityName,
int task,
ref Guid activityId,
bool useTplSource = true )
inline

Definition at line 263 of file ActivityTracker.cs.

264 {
265 if (m_current == null)
266 {
267 return;
268 }
269 string text = NormalizeActivityName(providerName, activityName, task);
270 TplEventSource tplEventSource = (useTplSource ? TplEventSource.Log : null);
271 bool flag = tplEventSource?.Debug ?? false;
272 if (flag)
273 {
274 tplEventSource.DebugFacilityMessage("OnStopEnter", text);
275 tplEventSource.DebugFacilityMessage("OnStopEnterActivityState", ActivityInfo.LiveActivities(m_current.Value));
276 }
277 ActivityInfo activityInfo;
278 ActivityInfo activityInfo2;
279 do
280 {
281 ActivityInfo value = m_current.Value;
282 activityInfo = null;
283 activityInfo2 = FindActiveActivity(text, value);
284 if (activityInfo2 == null)
285 {
286 activityId = Guid.Empty;
287 if (flag)
288 {
289 tplEventSource.DebugFacilityMessage("OnStopRET", "Fail");
290 }
291 return;
292 }
293 activityId = activityInfo2.ActivityId;
294 ActivityInfo activityInfo3 = value;
295 while (activityInfo3 != activityInfo2 && activityInfo3 != null)
296 {
297 if (activityInfo3.m_stopped != 0)
298 {
299 activityInfo3 = activityInfo3.m_creator;
300 continue;
301 }
302 if (activityInfo3.CanBeOrphan())
303 {
304 if (activityInfo == null)
305 {
306 activityInfo = activityInfo3;
307 }
308 }
309 else
310 {
311 activityInfo3.m_stopped = 1;
312 }
313 activityInfo3 = activityInfo3.m_creator;
314 }
315 }
316 while (Interlocked.CompareExchange(ref activityInfo2.m_stopped, 1, 0) != 0);
317 if (activityInfo == null)
318 {
319 activityInfo = activityInfo2.m_creator;
320 }
321 m_current.Value = activityInfo;
322 if (flag)
323 {
324 tplEventSource.DebugFacilityMessage("OnStopRetActivityState", ActivityInfo.LiveActivities(activityInfo));
325 tplEventSource.DebugFacilityMessage("OnStopRet", activityId.ToString());
326 }
327 }
static ActivityInfo FindActiveActivity(string name, ActivityInfo startLocation)
static string NormalizeActivityName(string providerName, string activityName, int task)
static int CompareExchange(ref int location1, int value, int comparand)
void DebugFacilityMessage(string Facility, string Message)

References System.Diagnostics.Tracing.ActivityTracker.ActivityInfo.ActivityId, System.Diagnostics.Tracing.ActivityTracker.ActivityInfo.CanBeOrphan(), System.Threading.Interlocked.CompareExchange(), System.Threading.Tasks.TplEventSource.Debug, System.Threading.Tasks.TplEventSource.DebugFacilityMessage(), System.Guid.Empty, System.Diagnostics.Tracing.ActivityTracker.FindActiveActivity(), System.Diagnostics.Tracing.ActivityTracker.ActivityInfo.LiveActivities(), System.Diagnostics.Tracing.ActivityTracker.ActivityInfo.m_creator, System.Diagnostics.Tracing.ActivityTracker.m_current, System.Diagnostics.Tracing.ActivityTracker.ActivityInfo.m_stopped, System.Diagnostics.Tracing.ActivityTracker.NormalizeActivityName(), System.task, System.text, and System.value.

Referenced by System.Diagnostics.Tracing.ActivityTracker.OnStart(), System.Diagnostics.Tracing.EventSource.WriteEventVarargs(), System.Diagnostics.Tracing.EventSource.WriteEventWithRelatedActivityIdCore(), and System.Diagnostics.Tracing.EventSource.WriteImpl().