perfsrv/memspy/Engine/Source/SysMemTracker/MemSpyEngineHelperSysMemTrackerEntries.cpp
author hgs
Mon, 06 Sep 2010 15:00:47 +0300
changeset 51 98307c651589
parent 0 memspy/Engine/Source/SysMemTracker/MemSpyEngineHelperSysMemTrackerEntries.cpp@a03f92240627
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:
*
*/

#include "MemSpyEngineHelperSysMemTrackerEntries.h"

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

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

// User includes
#include <memspy/engine/memspyengine.h>
#include <memspy/engine/memspyengineutils.h>
#include <memspy/engine/memspyenginehelperheap.h>
#include <memspy/engine/memspyenginehelperchunk.h>
#include <memspy/engine/memspyengineobjectthread.h>
#include <memspy/engine/memspyengineobjectprocess.h>
#include <memspy/engine/memspyengineobjectcontainer.h>
#include <memspy/engine/memspyenginehelpercodesegment.h>
#include "MemSpyEngineHelperSysMemTrackerImp.h"
#include <memspy/engine/memspyenginehelpersysmemtrackercycle.h>
#include <memspy/engine/memspyenginehelpersysmemtrackerconfig.h>




CMemSpyEngineHelperSysMemTrackerEntry::CMemSpyEngineHelperSysMemTrackerEntry( CMemSpyEngineHelperSysMemTrackerImp& aTracker, TMemSpyEngineSysMemTrackerType aType )
:   iTracker( aTracker ), iType( aType )
    {
    // Entry starts out alive - this also updates it's timestamp
    SetAlive();

    // Entry starts out new by default
    SetNew( ETrue );
    }


TUint64 CMemSpyEngineHelperSysMemTrackerEntry::Key() const
    {
    const TUint32 val = ( Type() << 28 ); 
    TUint64 ret = val;
    ret <<= 32;
    ret += Handle();
    return ret;
    }


void CMemSpyEngineHelperSysMemTrackerEntry::HandleNewCycleL( CMemSpyEngineHelperSysMemTrackerCycle& aCycle )
    {
    __ASSERT_ALWAYS( !( IsNew() && IsDead() ), User::Panic(_L("MemSpySysMemT"), __LINE__ ) );

    // First of all, if the item is not dead, then we can update the cycle stats
    if  ( IsAlive() )
        {
        UpdateCycleStatistics( aCycle );
        }

    // We create change descriptors only if the item has changed state in some way.
    // I.e.:
    //
    // 1) If the entry is new or is dead, then we will require a change descriptor.
    // 2) If the entry has changed, we'll require a change descriptor.
    //
    // Case (1)
    if  ( IsNew() || IsDead() )
        {
        CreateChangeDescriptorL( aCycle );
        }
    else
        {
        // Case (2) 
        const TBool hasChanged = HasChangedL( aCycle.Config() );
        if  ( hasChanged )
            {
            CreateChangeDescriptorL( aCycle );
            }
        }
    }


CMemSpyEngine& CMemSpyEngineHelperSysMemTrackerEntry::Engine()
    {
    return iTracker.Engine();
    }


void CMemSpyEngineHelperSysMemTrackerEntry::UpdateTime()
    {
    iLastUpdateTime.HomeTime();
    }


void CMemSpyEngineHelperSysMemTrackerEntry::UpdateFromL( const CMemSpyEngineHelperSysMemTrackerEntry& /*aEntry*/ )
    {
    }


TBool CMemSpyEngineHelperSysMemTrackerEntry::HasChangedL( const TMemSpyEngineHelperSysMemTrackerConfig& /*aConfig*/ ) const
    {
    // This item does not internally change state once created
    return EFalse;
    }


void CMemSpyEngineHelperSysMemTrackerEntry::CreateChangeDescriptorL( CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
    {
    }


void CMemSpyEngineHelperSysMemTrackerEntry::UpdateCycleStatistics( CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
    {
    }