diff -r 000000000000 -r 818e61de6cd1 crashanalysercmd/Libraries/Engine/CrashDebuggerLib/Structures/MessageQueue/DMsgQueue.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/crashanalysercmd/Libraries/Engine/CrashDebuggerLib/Structures/MessageQueue/DMsgQueue.cs Thu Feb 11 15:50:58 2010 +0200 @@ -0,0 +1,155 @@ +/* +* Copyright (c) 2004-2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +using System; +using System.Collections.Generic; +using System.Text; +using CrashDebuggerLib.Structures.KernelObjects; +using CrashDebuggerLib.Structures.Common; +using CrashDebuggerLib.Structures.Process; + +namespace CrashDebuggerLib.Structures.MessageQueue +{ + public class DMsgQueue : DObject + { + #region Enumerations + [System.ComponentModel.TypeConverter( typeof( SymbianParserLib.TypeConverters.SymbianEnumConverter ) )] + public enum TQueueState + { + EUnknown = -1, + EEmpty, + EPartial, + EFull + } + #endregion + + #region Constructors + public DMsgQueue( CrashDebuggerInfo aCrashDebugger ) + : base( aCrashDebugger, TObjectType.EMsgQueue ) + { + iWaitSpaceInfo = new MsgQueueWaitInfo( MsgQueueWaitInfo.TType.EWaitTypeSpace, CrashDebugger ); + iWaitDataInfo = new MsgQueueWaitInfo( MsgQueueWaitInfo.TType.EWaitTypeData, CrashDebugger ); + } + #endregion + + #region API + public static TQueueState StateByString( string aState ) + { + TQueueState ret = TQueueState.EUnknown; + // + switch ( aState.ToUpper() ) + { + case "EMPTY": + ret = TQueueState.EEmpty; + break; + case "PARTIAL": + ret = TQueueState.EPartial; + break; + case "FULL": + ret = TQueueState.EFull; + break; + default: + break; + } + // + return ret; + } + #endregion + + #region Properties + public MsgQueuePoolInfo PoolInfo + { + get { return iPoolInfo; } + } + + public MsgQueueSlotInfo SlotInfo + { + get { return iSlotInfo; } + } + + public int MaxMessageLength + { + get { return iMaxMessageLength; } + set { iMaxMessageLength = value; } + } + + public TQueueState State + { + get { return iState; } + set { iState = value; } + } + + public string StateString + { + get + { + string ret = "Unknown"; + // + switch ( iState ) + { + default: + case TQueueState.EUnknown: + break; + case TQueueState.EEmpty: + ret = "Empty"; + break; + case TQueueState.EPartial: + ret = "Partial"; + break; + case TQueueState.EFull: + ret = "Full"; + break; + } + // + return ret; + } + } + + public MsgQueueWaitInfo WaitSpace + { + get { return iWaitSpaceInfo; } + } + + public MsgQueueWaitInfo WaitData + { + get { return iWaitDataInfo; } + } + #endregion + + #region Internal methods + #endregion + + #region Internal constants + #endregion + + #region From System.Object + public override string ToString() + { + return base.ToString(); + } + #endregion + + #region Data members + private readonly MsgQueueWaitInfo iWaitSpaceInfo; + private readonly MsgQueueWaitInfo iWaitDataInfo; + private MsgQueuePoolInfo iPoolInfo = new MsgQueuePoolInfo(); + private MsgQueueSlotInfo iSlotInfo = new MsgQueueSlotInfo(); + private int iMaxMessageLength = 0; + private TQueueState iState = TQueueState.EUnknown; + #endregion + } +}