public void SetAll(DateTime startTime, TimeSpan age, int processID, int requestCount, ProcessStatus status, ProcessShutdownReason shutdownReason, int peakMemoryUsed)
 {
     this._StartTime = startTime;
     this._Age = age;
     this._ProcessID = processID;
     this._RequestCount = requestCount;
     this._Status = status;
     this._ShutdownReason = shutdownReason;
     this._PeakMemoryUsed = peakMemoryUsed;
 }
Beispiel #2
0
 public ProcessInfo(DateTime startTime, TimeSpan age, int processID, int requestCount, ProcessStatus status, ProcessShutdownReason shutdownReason, int peakMemoryUsed)
 {
     this.age            = age;
     this.peakMemoryUsed = peakMemoryUsed;
     this.processID      = processID;
     this.requestCount   = requestCount;
     this.shutdownReason = shutdownReason;
     this.startTime      = startTime;
     this.status         = status;
 }
		public ProcessInfo (DateTime startTime, TimeSpan age, int processID, int requestCount, ProcessStatus status, ProcessShutdownReason shutdownReason, int peakMemoryUsed)
		{
			this.age = age;
			this.peakMemoryUsed = peakMemoryUsed;
			this.processID = processID;
			this.requestCount = requestCount;
			this.shutdownReason = shutdownReason;
			this.startTime = startTime;
			this.status = status;
		}
 public void SetAll(DateTime startTime, TimeSpan age, int processID, int requestCount, ProcessStatus status, ProcessShutdownReason shutdownReason, int peakMemoryUsed)
 {
     this._StartTime      = startTime;
     this._Age            = age;
     this._ProcessID      = processID;
     this._RequestCount   = requestCount;
     this._Status         = status;
     this._ShutdownReason = shutdownReason;
     this._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;
 }
Beispiel #6
0
        public static ProcessInfo GetCurrentProcessInfo()
        {
            DateTime              startTime      = DateTime.Now;
            TimeSpan              age            = TimeSpan.Zero;
            int                   processID      = 0;
            int                   requestCount   = 0;
            ProcessStatus         status         = ProcessStatus.Terminated;
            ProcessShutdownReason shutdownReason = ProcessShutdownReason.None;
            int                   peakMemoryUsed = 0;

            return(new ProcessInfo(startTime, age, processID, requestCount, status, shutdownReason, peakMemoryUsed));
        }
	// Methods
	public void SetAll(System.DateTime startTime, System.TimeSpan age, int processID, int requestCount, ProcessStatus status, ProcessShutdownReason shutdownReason, int peakMemoryUsed) {}
 // Constructors
 public ProcessInfo(System.DateTime startTime, System.TimeSpan age, int processID, int requestCount, ProcessStatus status, ProcessShutdownReason shutdownReason, int 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(DateTime startTime, TimeSpan age, int processID, int requestCount, ProcessStatus status, ProcessShutdownReason shutdownReason, int peakMemoryUsed)
 {
 }
        public static ProcessInfo[] GetHistory(int numRecords)
        {
            HttpContext current = HttpContext.Current;

            if (((current == null) || (current.WorkerRequest == null)) || !(current.WorkerRequest is ISAPIWorkerRequestOutOfProc))
            {
                throw new HttpException(System.Web.SR.GetString("Process_information_not_available"));
            }
            if (numRecords < 1)
            {
                return(null);
            }
            int[]  dwPIDArr         = new int[numRecords];
            int[]  dwReqExecuted    = new int[numRecords];
            int[]  dwReqExecuting   = new int[numRecords];
            int[]  dwReqPending     = new int[numRecords];
            int[]  dwReasonForDeath = new int[numRecords];
            long[] tmCreateTime     = new long[numRecords];
            long[] tmDeathTime      = new long[numRecords];
            int[]  dwPeakMemoryUsed = new int[numRecords];
            int    num = System.Web.UnsafeNativeMethods.PMGetHistoryTable(numRecords, dwPIDArr, dwReqExecuted, dwReqPending, dwReqExecuting, dwReasonForDeath, dwPeakMemoryUsed, tmCreateTime, tmDeathTime);

            if (num < 0)
            {
                throw new HttpException(System.Web.SR.GetString("Process_information_not_available"));
            }
            ProcessInfo[] infoArray = new ProcessInfo[num];
            for (int i = 0; i < num; i++)
            {
                DateTime              time  = DateTime.FromFileTime(tmCreateTime[i]);
                TimeSpan              age   = DateTime.Now.Subtract(time);
                ProcessStatus         alive = ProcessStatus.Alive;
                ProcessShutdownReason none  = ProcessShutdownReason.None;
                if (dwReasonForDeath[i] != 0)
                {
                    if (tmDeathTime[i] > 0L)
                    {
                        age = DateTime.FromFileTime(tmDeathTime[i]).Subtract(time);
                    }
                    if ((dwReasonForDeath[i] & 4) != 0)
                    {
                        alive = ProcessStatus.Terminated;
                    }
                    else if ((dwReasonForDeath[i] & 2) != 0)
                    {
                        alive = ProcessStatus.ShutDown;
                    }
                    else
                    {
                        alive = ProcessStatus.ShuttingDown;
                    }
                    if ((0x40 & dwReasonForDeath[i]) != 0)
                    {
                        none = ProcessShutdownReason.IdleTimeout;
                    }
                    else if ((0x80 & dwReasonForDeath[i]) != 0)
                    {
                        none = ProcessShutdownReason.RequestsLimit;
                    }
                    else if ((0x100 & dwReasonForDeath[i]) != 0)
                    {
                        none = ProcessShutdownReason.RequestQueueLimit;
                    }
                    else if ((0x20 & dwReasonForDeath[i]) != 0)
                    {
                        none = ProcessShutdownReason.Timeout;
                    }
                    else if ((0x200 & dwReasonForDeath[i]) != 0)
                    {
                        none = ProcessShutdownReason.MemoryLimitExceeded;
                    }
                    else if ((0x400 & dwReasonForDeath[i]) != 0)
                    {
                        none = ProcessShutdownReason.PingFailed;
                    }
                    else if ((0x800 & dwReasonForDeath[i]) != 0)
                    {
                        none = ProcessShutdownReason.DeadlockSuspected;
                    }
                    else
                    {
                        none = ProcessShutdownReason.Unexpected;
                    }
                }
                infoArray[i] = new ProcessInfo(time, age, dwPIDArr[i], dwReqExecuted[i], alive, none, dwPeakMemoryUsed[i]);
            }
            return(infoArray);
        }
Beispiel #12
0
        static public ProcessInfo[]  GetHistory(int numRecords)
        {
            HttpContext context = HttpContext.Current;

            if (context == null || context.WorkerRequest == null ||
                !(context.WorkerRequest is System.Web.Hosting.ISAPIWorkerRequestOutOfProc))
            {
                throw new HttpException(SR.GetString(SR.Process_information_not_available));
            }

            if (numRecords < 1)
            {
                return(null);
            }

            int []  dwPID  = new int [numRecords];
            int []  dwExed = new int [numRecords];
            int []  dwExei = new int [numRecords];
            int []  dwPend = new int [numRecords];
            int []  dwReas = new int [numRecords];
            long [] tmCrea = new long [numRecords];
            long [] tmDeat = new long [numRecords];
            int []  mem    = new int [numRecords];

            int iRows = UnsafeNativeMethods.PMGetHistoryTable(numRecords, dwPID, dwExed, dwPend, dwExei, dwReas, mem, tmCrea, tmDeat);

            if (iRows < 0)
            {
                throw new HttpException(SR.GetString(SR.Process_information_not_available));
            }

            ProcessInfo[] ret = new ProcessInfo[iRows];
            for (int iter = 0; iter < iRows; iter++)
            {
                DateTime startTime = DateTime.FromFileTime(tmCrea[iter]);
                TimeSpan age       = DateTime.Now.Subtract(startTime);

                ProcessStatus         status = ProcessStatus.Alive;
                ProcessShutdownReason rea    = ProcessShutdownReason.None;

                if (dwReas[iter] != 0)
                {
                    if (tmDeat[iter] > 0)
                    {
                        age = DateTime.FromFileTime(tmDeat[iter]).Subtract(startTime);
                    }

                    if ((dwReas[iter] & 0x0004) != 0)
                    {
                        status = ProcessStatus.Terminated;
                    }
                    else if ((dwReas[iter] & 0x0002) != 0)
                    {
                        status = ProcessStatus.ShutDown;
                    }
                    else
                    {
                        status = ProcessStatus.ShuttingDown;
                    }

                    if ((0x0040 & dwReas[iter]) != 0)
                    {
                        rea = ProcessShutdownReason.IdleTimeout;
                    }
                    else if ((0x0080 & dwReas[iter]) != 0)
                    {
                        rea = ProcessShutdownReason.RequestsLimit;
                    }
                    else if ((0x0100 & dwReas[iter]) != 0)
                    {
                        rea = ProcessShutdownReason.RequestQueueLimit;
                    }
                    else if ((0x0020 & dwReas[iter]) != 0)
                    {
                        rea = ProcessShutdownReason.Timeout;
                    }
                    else if ((0x0200 & dwReas[iter]) != 0)
                    {
                        rea = ProcessShutdownReason.MemoryLimitExceeded;
                    }
                    else if ((0x0400 & dwReas[iter]) != 0)
                    {
                        rea = ProcessShutdownReason.PingFailed;
                    }
                    else if ((0x0800 & dwReas[iter]) != 0)
                    {
                        rea = ProcessShutdownReason.DeadlockSuspected;
                    }
                    else
                    {
                        rea = ProcessShutdownReason.Unexpected;
                    }
                }

                ret[iter] = new ProcessInfo(startTime, age, dwPID[iter], dwExed[iter], status, rea, mem[iter]);
            }

            return(ret);
        }
 public void SetAll(DateTime startTime, TimeSpan age, int processID, int requestCount, ProcessStatus status, ProcessShutdownReason shutdownReason, int peakMemoryUsed)
 {
 }