perfsrv/memspy/Engine/Include/SysMemTracker/MemSpyEngineHelperSysMemTrackerEntries.h
author hgs
Mon, 06 Sep 2010 15:00:47 +0300
changeset 51 98307c651589
permissions -rw-r--r--
201035

/*
* Copyright (c) 2009 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:
*
*/

#ifndef MEMSPYENGINEHELPERSYSMEMTRACKERENTRIES_H
#define MEMSPYENGINEHELPERSYSMEMTRACKERENTRIES_H

// System includes
#include <e32base.h>
#include <badesca.h>

// Driver includes
#include <memspy/driver/memspydriverobjectsshared.h>

// User includes
#include <memspy/engine/memspyenginehelpersysmemtrackerenums.h>

// Classes referenced
class CMemSpyEngine;
class CMemSpyThread;
class CMemSpyProcess;
class CMemSpyEngineHelperSysMemTrackerImp;
class CMemSpyEngineHelperSysMemTrackerCycle;
class TMemSpyEngineHelperSysMemTrackerConfig;

// Literal constants
_LIT( KMemSpySWMTThreadNotFound, "Thread Not Found" );


NONSHARABLE_CLASS( CMemSpyEngineHelperSysMemTrackerEntry ) : public CBase
    {
protected:
    CMemSpyEngineHelperSysMemTrackerEntry( CMemSpyEngineHelperSysMemTrackerImp& aTracker, TMemSpyEngineSysMemTrackerType aType );

public: // API
    void HandleNewCycleL( CMemSpyEngineHelperSysMemTrackerCycle& aCycle );

public: // API - framework 
    virtual TUint64 Key() const;
    virtual void UpdateFromL( const CMemSpyEngineHelperSysMemTrackerEntry& aEntry );

protected: // API - framework, internal
    virtual TBool HasChangedL( const TMemSpyEngineHelperSysMemTrackerConfig& aConfig ) const;
    virtual void CreateChangeDescriptorL( CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
    virtual void UpdateCycleStatistics( CMemSpyEngineHelperSysMemTrackerCycle& aCycle );

public: // API - inline
    inline TMemSpyEngineSysMemTrackerType Type() const { return iType; }
    inline TUint8 Attributes() const { return iAttributes; }
    //
    inline TThreadId ThreadId() const { return iThreadId; }
    inline void SetThread( TThreadId aThreadId ) { iThreadId = aThreadId; }
    //
    inline TProcessId ProcessId() const { return iProcessId; }
    inline void SetProcess( TProcessId aProcessId ) { iProcessId = aProcessId; }
    //
    inline TUint32 Handle() const { return iHandle; }
    inline void SetHandle( TAny* aHandle ) { iHandle = (TUint32) aHandle; }
    inline void SetHandle( TUint32 aHandle ) { iHandle = aHandle; }
    //
    inline const TTime& LastUpdateTime() const { return iLastUpdateTime; }
    
public: // Attributes
    inline TBool IsNew() const { return iAttributes & EMemSpyEngineSysMemTrackerEntryAttributeIsNew; }
    inline void SetNew( TBool aNew );
    //
    inline TBool IsDead() const { return !IsAlive(); }
    inline void SetDead() { iAttributes &= ~EMemSpyEngineSysMemTrackerEntryAttributeIsAlive; }
    //
    inline TBool IsAlive() const { return iAttributes & EMemSpyEngineSysMemTrackerEntryAttributeIsAlive; }
    inline void SetAlive();

protected: // Internal methods
    CMemSpyEngine& Engine();
    void UpdateTime();

private: // Data members
    CMemSpyEngineHelperSysMemTrackerImp& iTracker;
    const TMemSpyEngineSysMemTrackerType iType;
    TUint32 iThreadId;
    TUint32 iProcessId;
    TUint8 iAttributes;
    TUint32 iHandle;
    TTime iLastUpdateTime;
    };





// Helper class used when searching for entries
NONSHARABLE_CLASS( CMemSpyEngineHelperSysMemTrackerEntryWithSuppliedKey ) : public CMemSpyEngineHelperSysMemTrackerEntry
    {
public:
    inline CMemSpyEngineHelperSysMemTrackerEntryWithSuppliedKey( CMemSpyEngineHelperSysMemTrackerImp& aTracker, const TUint64& aKey )
    : CMemSpyEngineHelperSysMemTrackerEntry( aTracker, EMemSpyEngineSysMemTrackerTypeCount ), iKey( aKey )
        { }

public: // From CMemSpyEngineHelperSysMemTrackerEntry
    TUint64 Key() const { return iKey; }

private: // Data members
    const TUint64 iKey;
    };





inline void CMemSpyEngineHelperSysMemTrackerEntry::SetNew( TBool aNew )
    {
    if  ( aNew )
        {
        iAttributes |= EMemSpyEngineSysMemTrackerEntryAttributeIsNew;
        }
    else
        {
        iAttributes &= ~EMemSpyEngineSysMemTrackerEntryAttributeIsNew;
        }
    }


inline void CMemSpyEngineHelperSysMemTrackerEntry::SetAlive()
    {
    iAttributes |= EMemSpyEngineSysMemTrackerEntryAttributeIsAlive;
    UpdateTime();
    }


#endif