--- a/memspy/Engine/Source/Helpers/MemSpyEngineHelperServer.cpp Fri Aug 27 11:37:29 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,455 +0,0 @@
-/*
-* 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 <memspy/engine/memspyenginehelperserver.h>
-
-// Driver includes
-#include <memspy/driver/memspydriverclient.h>
-#include <memspy/driver/memspydriverconstants.h>
-
-// User includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineoutputsink.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyenginehelperchunk.h>
-
-// Literal constants
-_LIT( KMemSpyEngineServListOutputComma, ", " );
-
-
-
-CMemSpyEngineHelperServer::CMemSpyEngineHelperServer( CMemSpyEngine& aEngine )
-: iEngine( aEngine )
- {
- }
-
-
-CMemSpyEngineHelperServer::~CMemSpyEngineHelperServer()
- {
- }
-
-
-void CMemSpyEngineHelperServer::ConstructL()
- {
- }
-
-
-CMemSpyEngineHelperServer* CMemSpyEngineHelperServer::NewL( CMemSpyEngine& aEngine )
- {
- CMemSpyEngineHelperServer* self = new(ELeave) CMemSpyEngineHelperServer( aEngine );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-EXPORT_C void CMemSpyEngineHelperServer::GetServerSessionsL( TAny* aServerHandle, RArray<TMemSpyDriverServerSessionInfo>& aSessions )
- {
- const TInt KMaxCount = 256;
- TAny* handles[KMaxCount];
- TInt c = KMaxCount;
-
- TInt r = iEngine.Driver().GetServerSessionHandles( aServerHandle, handles, c );
- if ( r == KErrNone )
- {
- if ( c > 0 )
- {
- if (c > KMaxCount)
- {
- c = KMaxCount;
- }
-
- TMemSpyDriverServerSessionInfo info;
- for (TInt i=0; i<c; i++)
- {
- r = iEngine.Driver().GetServerSessionInfo( handles[i], info );
- if (r == KErrNone)
- {
- aSessions.AppendL( info );
- }
- }
- }
- }
- }
-
-
-EXPORT_C void CMemSpyEngineHelperServer::GetServerSessionsL( const TMemSpyDriverHandleInfoGeneric& aServerDetails, RArray<TMemSpyDriverServerSessionInfo>& aSessions )
- {
- GetServerSessionsL( aServerDetails.iHandle, aSessions );
- }
-
-
-EXPORT_C void CMemSpyEngineHelperServer::GetServerListL( RArray<TMemSpyDriverHandleInfoGeneric>& aServers )
- {
- const TInt KMaxCount = 256;
- TAny* handles[KMaxCount];
- TInt c = KMaxCount;
-
- TInt r = iEngine.Driver().GetContainerHandles( EMemSpyDriverContainerTypeServer, handles, c );
- if ( r == KErrNone )
- {
- if ( c > 0 )
- {
- if (c > KMaxCount)
- {
- c = KMaxCount;
- }
-
- TMemSpyDriverHandleInfoGeneric info;
- for (TInt i=0; i<c; i++)
- {
- r = iEngine.Driver().GetGenericHandleInfo( KMemSpyDriverEnumerateContainerHandles, EMemSpyDriverContainerTypeServer, handles[i], info );
- if (r == KErrNone)
- {
- aServers.AppendL( info );
- }
- }
- }
- }
- }
-
-
-EXPORT_C CMemSpyEngineServerList* CMemSpyEngineHelperServer::ServerListL()
- {
- CMemSpyEngineServerList* list = CMemSpyEngineServerList::NewLC();
- //
- RArray<TMemSpyDriverHandleInfoGeneric> servers;
- CleanupClosePushL( servers );
- //
- GetServerListL( servers );
- //
- const TInt count = servers.Count();
- for( TInt i=0; i<count; i++ )
- {
- const TMemSpyDriverHandleInfoGeneric& details = servers[ i ];
- //
- CMemSpyEngineServerEntry* serverEntry = CMemSpyEngineServerEntry::NewLC( details );
- list->AddItemL( serverEntry );
- CleanupStack::Pop( serverEntry );
- }
- //
- CleanupStack::PopAndDestroy( &servers );
-
- // Sort the list by session count
- list->SortBySessionCountL();
-
- // Done
- CleanupStack::Pop( list );
- return list;
- }
-
-
-CMemSpyEngine& CMemSpyEngineHelperServer::Engine() const
- {
- return iEngine;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyEngineServerList::CMemSpyEngineServerList()
- {
- }
-
-
-EXPORT_C CMemSpyEngineServerList::~CMemSpyEngineServerList()
- {
- iItems.ResetAndDestroy();
- iItems.Close();
- }
-
-
-void CMemSpyEngineServerList::ConstructL()
- {
- }
-
-
-CMemSpyEngineServerList* CMemSpyEngineServerList::NewLC()
- {
- CMemSpyEngineServerList* self = new(ELeave) CMemSpyEngineServerList();
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-
-EXPORT_C TInt CMemSpyEngineServerList::Count() const
- {
- return iItems.Count();
- }
-
-
-EXPORT_C const CMemSpyEngineServerEntry& CMemSpyEngineServerList::At( TInt aIndex ) const
- {
- return *iItems[ aIndex ];
- }
-
-
-EXPORT_C void CMemSpyEngineServerList::SortByNameL()
- {
- TLinearOrder< CMemSpyEngineServerEntry > comparer( CompareByName );
- iItems.Sort( comparer );
- }
-
-
-EXPORT_C void CMemSpyEngineServerList::SortBySessionCountL()
- {
- TLinearOrder< CMemSpyEngineServerEntry > comparer( CompareBySessionCount );
- iItems.Sort( comparer );
- }
-
-
-EXPORT_C TInt CMemSpyEngineServerList::ItemIndex( const CMemSpyEngineServerEntry& aEntry ) const
- {
- TInt ret = KErrNotFound;
- //
- const TInt count = Count();
- for( TInt i=0; i<count; i++ )
- {
- const CMemSpyEngineServerEntry* item = iItems[ i ];
- //
- if ( item == &aEntry )
- {
- ret = i;
- break;
- }
- }
- //
- return ret;
- }
-
-
-EXPORT_C void CMemSpyEngineServerList::OutputDataColumnsL( CMemSpyEngine& aEngine, TBool aClientThreadColumns )
- {
- HBufC* columns = HBufC::NewLC( 1024 );
- TPtr pColumns( columns->Des() );
- //
- _LIT(KCol1, "Thread/Process Id");
- pColumns.Append( KCol1 );
- pColumns.Append( KMemSpyEngineServListOutputComma );
- //
- _LIT(KCol2, "Name");
- pColumns.Append( KCol2 );
- pColumns.Append( KMemSpyEngineServListOutputComma );
- //
- _LIT(KCol3, "Connected Session Count");
- pColumns.Append( KCol3 );
- //
- if ( aClientThreadColumns )
- {
- _LIT(KCol4, "Connected Client");
- pColumns.Append( KMemSpyEngineServListOutputComma );
- pColumns.Append( KCol4 );
- }
- //
- aEngine.Sink().OutputLineL( pColumns );
- CleanupStack::PopAndDestroy( columns );
- }
-
-
-void CMemSpyEngineServerList::AddItemL( CMemSpyEngineServerEntry* aItem )
- {
- iItems.AppendL( aItem );
- }
-
-
-EXPORT_C TInt CMemSpyEngineServerList::MdcaCount() const
- {
- return Count();
- }
-
-
-EXPORT_C TPtrC CMemSpyEngineServerList::MdcaPoint( TInt aIndex ) const
- {
- const CMemSpyEngineServerEntry& item = At( aIndex );
- return TPtrC( item.Caption() );
- }
-
-
-TInt CMemSpyEngineServerList::CompareByName( const CMemSpyEngineServerEntry& aLeft, const CMemSpyEngineServerEntry& aRight )
- {
- const TInt ret = aLeft.Name().CompareF( aRight.Name() );
- return ret;
- }
-
-
-TInt CMemSpyEngineServerList::CompareBySessionCount( const CMemSpyEngineServerEntry& aLeft, const CMemSpyEngineServerEntry& aRight )
- {
- TInt ret = -1;
- //
- if ( aLeft.SessionCount() < aRight.SessionCount() )
- {
- ret = 1;
- }
- else if ( aLeft.SessionCount() == aRight.SessionCount() )
- {
- ret = 0;
- }
- //
- return ret;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyEngineServerEntry::CMemSpyEngineServerEntry()
- {
- }
-
-
-EXPORT_C CMemSpyEngineServerEntry::~CMemSpyEngineServerEntry()
- {
- delete iCaption;
- delete iName;
- }
-
-
-void CMemSpyEngineServerEntry::ConstructL( const TMemSpyDriverHandleInfoGeneric& aInfo )
- {
- iName = HBufC::NewL( aInfo.iName.Length() );
- iName->Des().Copy( aInfo.iName );
- iSessionCount = aInfo.iCount;
- iId = aInfo.iId;
- iHandle = aInfo.iHandle;
-
- // Make caption
- _LIT(KServerListFormat, "\t%S\t\t%d session");
- TBuf<KMaxFullName + 128> item;
- //
- item.Format( KServerListFormat, iName, iSessionCount );
- //
- if ( iSessionCount != 1 )
- {
- // Add missing 's'
- item.Append( TChar('s') );
- }
- //
- iCaption = item.AllocL();
- }
-
-
-CMemSpyEngineServerEntry* CMemSpyEngineServerEntry::NewLC( const TMemSpyDriverHandleInfoGeneric& aInfo )
- {
- CMemSpyEngineServerEntry* self = new(ELeave) CMemSpyEngineServerEntry();
- CleanupStack::PushL( self );
- self->ConstructL( aInfo );
- return self;
- }
-
-
-EXPORT_C void CMemSpyEngineServerEntry::OutputDataL( CMemSpyEngineHelperServer& aHelper, TBool aClientThreadColumns ) const
- {
- _LIT(KMemSpyEngineServListOutputDecimal, "%d");
- _LIT(KMemSpyEngineServListOutputString, "%S");
- //
- HBufC* columns = HBufC::NewLC( 1024 );
- TPtr pColumns( columns->Des() );
- //
- pColumns.AppendFormat( KMemSpyEngineServListOutputDecimal, Id() );
- pColumns.Append( KMemSpyEngineServListOutputComma );
- //
- pColumns.AppendFormat( KMemSpyEngineServListOutputString, &Name() );
- pColumns.Append( KMemSpyEngineServListOutputComma );
- //
- pColumns.AppendFormat( KMemSpyEngineServListOutputDecimal, SessionCount() );
- //
- aHelper.Engine().Sink().OutputLineL( pColumns );
-
- if ( aClientThreadColumns )
- {
- RArray<TMemSpyDriverServerSessionInfo> sessions;
- CleanupClosePushL( sessions );
-
- // Get the sessions
- GetSessionsL( aHelper, sessions );
-
- // Output an additional line per entry
- const TInt count = sessions.Count();
- for( TInt i=0; i<count; i++ )
- {
- const TMemSpyDriverServerSessionInfo& session = sessions[ i ];
- //
- pColumns.Copy( session.iName );
- pColumns.Insert( 0, KMemSpyEngineServListOutputComma );
- pColumns.Insert( 0, KMemSpyEngineServListOutputComma );
- pColumns.Insert( 0, KMemSpyEngineServListOutputComma );
- //
- aHelper.Engine().Sink().OutputLineL( pColumns );
- }
- //
- CleanupStack::PopAndDestroy( &sessions );
- }
-
- CleanupStack::PopAndDestroy( columns );
- }
-
-
-EXPORT_C void CMemSpyEngineServerEntry::GetSessionsL( CMemSpyEngineHelperServer& aHelper, RArray<TMemSpyDriverServerSessionInfo>& aSessions ) const
- {
- aHelper.GetServerSessionsL( Handle(), aSessions );
- }
-
-