forked from microsoft/referencesource
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProcessInfo.cs
175 lines (137 loc) · 5.74 KB
/
ProcessInfo.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
//------------------------------------------------------------------------------
// <copyright file="ProcessInfo.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
/*
* ProcessInfo class
*/
namespace System.Web {
using System.Threading;
using System.Security.Permissions;
/// <devdoc>
/// <para>Provides enumerated values representing status of a process.</para>
/// </devdoc>
public enum ProcessStatus {
/// <devdoc>
/// <para>Specifies that the process is running.</para>
/// </devdoc>
Alive = 1,
/// <devdoc>
/// <para>Specifies that the process has begun shutting down.</para>
/// </devdoc>
ShuttingDown = 2,
/// <devdoc>
/// <para>Specifies the the process has been shut down.</para>
/// </devdoc>
ShutDown = 3,
/// <devdoc>
/// <para>Specifies that the process has been terminated.</para>
/// </devdoc>
Terminated = 4
}
/// <devdoc>
/// <para>Provides enumerated values representing the reason a process has shut
/// down.</para>
/// </devdoc>
public enum ProcessShutdownReason {
/// <devdoc>
/// <para>Specifies that the process has not been shut down.</para>
/// </devdoc>
None = 0, // alive
/// <devdoc>
/// <para>Specifies that the process has been shut down unexpectedly.</para>
/// </devdoc>
Unexpected = 1,
/// <devdoc>
/// <para>Specifies that the process request exceeded the limit on number of
/// processes.</para>
/// </devdoc>
RequestsLimit = 2,
/// <devdoc>
/// <para>Specifies that the process request exceeded the limit on number of
/// processes in que.</para>
/// </devdoc>
RequestQueueLimit = 3,
/// <devdoc>
/// <para>Specifies that the process timed out.</para>
/// </devdoc>
Timeout = 4,
/// <devdoc>
/// <para>Specifies that the process exceeded the limit on process idle time.</para>
/// </devdoc>
IdleTimeout = 5,
/// <devdoc>
/// <para>Specifies that the process exceeded the limit of memory available per process.</para>
/// </devdoc>
MemoryLimitExceeded = 6,
PingFailed = 7,
DeadlockSuspected = 8
}
/// <devdoc>
/// <para>Provides information on processes.</para>
/// </devdoc>
public class ProcessInfo {
/// <devdoc>
/// <para>Indicates the time a process was started.</para>
/// </devdoc>
public DateTime StartTime { get { return _StartTime;}}
/// <devdoc>
/// <para>Indicates the length of time the process has been running.</para>
/// </devdoc>
public TimeSpan Age { get { return _Age;}}
/// <devdoc>
/// <para>Indicates the process id of the process.</para>
/// </devdoc>
public int ProcessID { get { return _ProcessID;}}
public int RequestCount { get { return _RequestCount;}}
/// <devdoc>
/// <para>Indicates the current status of the process.</para>
/// </devdoc>
public ProcessStatus Status { get { return _Status;}}
/// <devdoc>
/// <para>Indicates the reason the process shut down.</para>
/// </devdoc>
public ProcessShutdownReason ShutdownReason { get { return _ShutdownReason;}}
/// <devdoc>
/// <para>Indicates the maximum amount of memory the process has used.</para>
/// </devdoc>
public int PeakMemoryUsed { get { return _PeakMemoryUsed;}}
private DateTime _StartTime;
private TimeSpan _Age;
private int _ProcessID;
private int _RequestCount;
private ProcessStatus _Status;
private ProcessShutdownReason _ShutdownReason;
private int _PeakMemoryUsed;
/// <devdoc>
/// <para>Sets internal information indicating the status of the process.</para>
/// </devdoc>
public void SetAll (DateTime startTime, TimeSpan age, int processID, int requestCount, ProcessStatus status,
ProcessShutdownReason shutdownReason, int peakMemoryUsed) {
_StartTime = startTime;
_Age = age;
_ProcessID = processID;
_RequestCount = requestCount;
_Status = status;
_ShutdownReason = shutdownReason;
_PeakMemoryUsed = peakMemoryUsed;
}
/// <devdoc>
/// <para>Initializes a new instance of the <see langword='ProcessInfo'/> class and sets internal information
/// indicating the status of the process.</para>
/// </devdoc>
public ProcessInfo (DateTime startTime, TimeSpan age, int processID, int requestCount, ProcessStatus status,
ProcessShutdownReason shutdownReason, int peakMemoryUsed) {
_StartTime = startTime;
_Age = age;
_ProcessID = processID;
_RequestCount = requestCount;
_Status = status;
_ShutdownReason = shutdownReason;
_PeakMemoryUsed = peakMemoryUsed;
}
public ProcessInfo() {
}
}
}