//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//------------------------------------------------------------------------------
/*
* ProcessInfo class
*/
namespace System.Web {
using System.Threading;
using System.Security.Permissions;
///
/// Provides enumerated values representing status of a process.
///
public enum ProcessStatus {
///
/// Specifies that the process is running.
///
Alive = 1,
///
/// Specifies that the process has begun shutting down.
///
ShuttingDown = 2,
///
/// Specifies the the process has been shut down.
///
ShutDown = 3,
///
/// Specifies that the process has been terminated.
///
Terminated = 4
}
///
/// Provides enumerated values representing the reason a process has shut
/// down.
///
public enum ProcessShutdownReason {
///
/// Specifies that the process has not been shut down.
///
None = 0, // alive
///
/// Specifies that the process has been shut down unexpectedly.
///
Unexpected = 1,
///
/// Specifies that the process request exceeded the limit on number of
/// processes.
///
RequestsLimit = 2,
///
/// Specifies that the process request exceeded the limit on number of
/// processes in que.
///
RequestQueueLimit = 3,
///
/// Specifies that the process timed out.
///
Timeout = 4,
///
/// Specifies that the process exceeded the limit on process idle time.
///
IdleTimeout = 5,
///
/// Specifies that the process exceeded the limit of memory available per process.
///
MemoryLimitExceeded = 6,
PingFailed = 7,
DeadlockSuspected = 8
}
///
/// Provides information on processes.
///
public class ProcessInfo {
///
/// Indicates the time a process was started.
///
public DateTime StartTime { get { return _StartTime;}}
///
/// Indicates the length of time the process has been running.
///
public TimeSpan Age { get { return _Age;}}
///
/// Indicates the process id of the process.
///
public int ProcessID { get { return _ProcessID;}}
public int RequestCount { get { return _RequestCount;}}
///
/// Indicates the current status of the process.
///
public ProcessStatus Status { get { return _Status;}}
///
/// Indicates the reason the process shut down.
///
public ProcessShutdownReason ShutdownReason { get { return _ShutdownReason;}}
///
/// Indicates the maximum amount of memory the process has used.
///
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;
///
/// Sets internal information indicating the status of the process.
///
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;
}
///
/// Initializes a new instance of the class and sets internal information
/// indicating the status of the process.
///
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() {
}
}
}