memspy/Engine/Source/MemSpyEngineImp.cpp
branchRCL_3
changeset 21 52e343bb8f80
parent 20 ca8a1b6995f6
equal deleted inserted replaced
20:ca8a1b6995f6 21:52e343bb8f80
    50 #include <memspy/engine/memspyenginehelperrom.h>
    50 #include <memspy/engine/memspyenginehelperrom.h>
    51 #include <memspy/engine/memspyenginehelperram.h>
    51 #include <memspy/engine/memspyenginehelperram.h>
    52 #include <memspy/engine/memspyenginehelperwindowserver.h>
    52 #include <memspy/engine/memspyenginehelperwindowserver.h>
    53 #include <memspy/engine/memspyenginehelpercondvar.h>
    53 #include <memspy/engine/memspyenginehelpercondvar.h>
    54 
    54 
    55 #ifdef _DEBUG
       
    56 #define LOG(args...) RDebug::Printf(args)
       
    57 #else
       
    58 #define LOG(args...)
       
    59 #endif
       
    60 
    55 
    61 CMemSpyEngineImp::CMemSpyEngineImp( RFs& aFsSession, CMemSpyEngine& aEngine )
    56 CMemSpyEngineImp::CMemSpyEngineImp( RFs& aFsSession, CMemSpyEngine& aEngine )
    62 :   iFsSession( aFsSession ), iEngine( aEngine )
    57 :   iFsSession( aFsSession ), iEngine( aEngine )
    63     {
    58     {
    64     }
    59     }
    65 
    60 
    66 
    61 
    67 CMemSpyEngineImp::~CMemSpyEngineImp()
    62 CMemSpyEngineImp::~CMemSpyEngineImp()
    68     {
    63     {
    69     LOG( "CMemSpyEngineImp::~CMemSpyEngineImp() - START" );
    64 #ifdef _DEBUG
       
    65     RDebug::Printf( "CMemSpyEngineImp::~CMemSpyEngineImp() - START" );
       
    66 #endif
    70 
    67 
    71     if  ( iMidwife )
    68     if  ( iMidwife )
    72         {
    69         {
    73         iMidwife->RemoveObserver( *this );
    70         iMidwife->RemoveObserver( *this );
    74         }
    71         }
    75 
    72 
    76     LOG( "CMemSpyEngineImp::~CMemSpyEngineImp() - deleting helpers..." );
    73 #ifdef _DEBUG
       
    74     RDebug::Printf( "CMemSpyEngineImp::~CMemSpyEngineImp() - deleting helpers..." );
       
    75 #endif
    77     delete iHelperSysMemTracker;
    76     delete iHelperSysMemTracker;
    78     delete iServer;
    77     delete iServer;
    79     delete iHelperKernelContainers;
    78     delete iHelperKernelContainers;
    80     delete iHelperFbServ;
    79     delete iHelperFbServ;
    81     delete iHelperHeap;
    80     delete iHelperHeap;
    93     delete iHelperWindowServer;
    92     delete iHelperWindowServer;
    94     delete iHelperCondVar;
    93     delete iHelperCondVar;
    95     
    94     
    96     iHelperWindowServerLoader.Close();
    95     iHelperWindowServerLoader.Close();
    97 
    96 
    98     LOG( "CMemSpyEngineImp::~CMemSpyEngineImp() - deleting utilities..." );
    97 #ifdef _DEBUG
       
    98     RDebug::Printf( "CMemSpyEngineImp::~CMemSpyEngineImp() - deleting utilities..." );
       
    99 #endif
    99     delete iChunkWatcher;
   100     delete iChunkWatcher;
   100     delete iUndertaker;
   101     delete iUndertaker;
   101     delete iMidwife;
   102     delete iMidwife;
   102 
   103 
   103     LOG( "CMemSpyEngineImp::~CMemSpyEngineImp() - destroying containers..." );
   104 #ifdef _DEBUG
       
   105     RDebug::Printf( "CMemSpyEngineImp::~CMemSpyEngineImp() - destroying containers..." );
       
   106 #endif
   104     iContainers.ResetAndDestroy();
   107     iContainers.ResetAndDestroy();
   105     iContainers.Close();
   108     iContainers.Close();
   106 
   109 
   107     LOG( "CMemSpyEngineImp::~CMemSpyEngineImp() - destroying driver..." );
   110 #ifdef _DEBUG
       
   111     RDebug::Printf( "CMemSpyEngineImp::~CMemSpyEngineImp() - destroying driver..." );
       
   112 #endif
   108     if  ( iMemSpyDriver )
   113     if  ( iMemSpyDriver )
   109         {
   114         {
   110         iMemSpyDriver->Close();
   115         iMemSpyDriver->Close();
   111         delete iMemSpyDriver;
   116         delete iMemSpyDriver;
   112         }
   117         }
   113 
   118 
   114     LOG( "CMemSpyEngineImp::~CMemSpyEngineImp() - destroying sink..." );
   119 #ifdef _DEBUG
       
   120     RDebug::Printf( "CMemSpyEngineImp::~CMemSpyEngineImp() - destroying sink..." );
       
   121 #endif
   115     delete iSink;
   122     delete iSink;
   116 
   123 
   117     LOG( "CMemSpyEngineImp::~CMemSpyEngineImp() - END" );
   124 #ifdef _DEBUG
       
   125     RDebug::Printf( "CMemSpyEngineImp::~CMemSpyEngineImp() - END" );
       
   126 #endif
   118     }
   127     }
   119 
   128 
   120 
   129 
   121 void CMemSpyEngineImp::ConstructL()
   130 void CMemSpyEngineImp::ConstructL()
   122     {
   131     {
   123     LOG( "CMemSpyEngineImp::ConstructL() - START" );
   132 #ifdef _DEBUG
       
   133     RDebug::Printf( "CMemSpyEngineImp::ConstructL() - START" );
       
   134 #endif
   124     //
   135     //
   125     iFsSession.SetSessionPath( _L("\\") );
   136     iFsSession.SetSessionPath( _L("\\") );
   126     
   137     
       
   138     // Starting the server before the driver connection is made
       
   139     // ensures that only one instance of MemSpy can run (either the S60
       
   140     // UI or the console UI ).
   127     iServer = CMemSpyEngineServer::NewL( iEngine );
   141     iServer = CMemSpyEngineServer::NewL( iEngine );
   128     
   142     //
   129     iMemSpyDriver = new(ELeave) RMemSpyDriverClient();
   143     iMemSpyDriver = new(ELeave) RMemSpyDriverClient();
   130     const TInt error = Driver().Open();
   144     const TInt error = Driver().Open();
   131     User::LeaveIfError( error );
   145     User::LeaveIfError( error );
   132     //
   146     //
   133     InstallSinkL( ESinkTypeDebug );
   147     InstallSinkL( ESinkTypeDebug );
   147     ConstructHelpersL();
   161     ConstructHelpersL();
   148     //
   162     //
   149     iHelperSysMemTracker = CMemSpyEngineHelperSysMemTracker::NewL( iEngine );
   163     iHelperSysMemTracker = CMemSpyEngineHelperSysMemTracker::NewL( iEngine );
   150     iMidwife->AddObserverL( *this );
   164     iMidwife->AddObserverL( *this );
   151 
   165 
   152     LOG( "CMemSpyEngineImp::ConstructL() - END" );
   166 #ifdef _DEBUG
       
   167     RDebug::Printf( "CMemSpyEngineImp::ConstructL() - END" );
       
   168 #endif
   153     }
   169     }
   154 
   170 
   155 
   171 
   156 void CMemSpyEngineImp::ConstructHelpersL()
   172 void CMemSpyEngineImp::ConstructHelpersL()
   157     {
   173     {
   158     LOG( "CMemSpyEngineImp::ConstructHelpersL() - START" );
   174 #ifdef _DEBUG
   159 
   175     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - START" );
   160     LOG( "CMemSpyEngineImp::ConstructHelpersL() - Heap..." );
   176 #endif
       
   177 
       
   178 #ifdef _DEBUG
       
   179     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Heap..." );
       
   180 #endif
   161     iHelperHeap = CMemSpyEngineHelperHeap::NewL( iEngine );
   181     iHelperHeap = CMemSpyEngineHelperHeap::NewL( iEngine );
   162 
   182 
   163     LOG( "CMemSpyEngineImp::ConstructHelpersL() - Stack..." );
   183 #ifdef _DEBUG
       
   184     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Stack..." );
       
   185 #endif
   164     iHelperStack = CMemSpyEngineHelperStack::NewL( iEngine );
   186     iHelperStack = CMemSpyEngineHelperStack::NewL( iEngine );
   165 
   187 
   166     LOG( "CMemSpyEngineImp::ConstructHelpersL() - Code Segments..." );
   188 #ifdef _DEBUG
       
   189     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Code Segments..." );
       
   190 #endif
   167     iHelperCodeSegment = CMemSpyEngineHelperCodeSegment::NewL( iEngine );
   191     iHelperCodeSegment = CMemSpyEngineHelperCodeSegment::NewL( iEngine );
   168 
   192 
   169     LOG( "CMemSpyEngineImp::ConstructHelpersL() - Chunk..." );
   193 #ifdef _DEBUG
       
   194     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Chunk..." );
       
   195 #endif
   170     iHelperChunk = CMemSpyEngineHelperChunk::NewL( iEngine );
   196     iHelperChunk = CMemSpyEngineHelperChunk::NewL( iEngine );
   171 
   197 
   172     LOG( "CMemSpyEngineImp::ConstructHelpersL() - Thread..." );
   198 #ifdef _DEBUG
       
   199     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Thread..." );
       
   200 #endif
   173     iHelperThread = CMemSpyEngineHelperThread::NewL( iEngine );
   201     iHelperThread = CMemSpyEngineHelperThread::NewL( iEngine );
   174 
   202 
   175     LOG( "CMemSpyEngineImp::ConstructHelpersL() - Process..." );
   203 #ifdef _DEBUG
       
   204     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Process..." );
       
   205 #endif
   176     iHelperProcess = CMemSpyEngineHelperProcess::NewL( iEngine );
   206     iHelperProcess = CMemSpyEngineHelperProcess::NewL( iEngine );
   177 
   207 
   178     LOG( "CMemSpyEngineImp::ConstructHelpersL() - Server..." );
   208 #ifdef _DEBUG
       
   209     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Server..." );
       
   210 #endif
   179     iHelperServer = CMemSpyEngineHelperServer::NewL( iEngine );
   211     iHelperServer = CMemSpyEngineHelperServer::NewL( iEngine );
   180 
   212 
   181     LOG( "CMemSpyEngineImp::ConstructHelpersL() - AO..." );
   213 #ifdef _DEBUG
       
   214     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - AO..." );
       
   215 #endif
   182     iHelperActiveObject = CMemSpyEngineHelperActiveObject::NewL( iEngine );
   216     iHelperActiveObject = CMemSpyEngineHelperActiveObject::NewL( iEngine );
   183 
   217 
   184     LOG( "CMemSpyEngineImp::ConstructHelpersL() - Kernel Containers..." );
   218 #ifdef _DEBUG
       
   219     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Kernel Containers..." );
       
   220 #endif
   185     iHelperKernelContainers = CMemSpyEngineHelperKernelContainers::NewL( iEngine );
   221     iHelperKernelContainers = CMemSpyEngineHelperKernelContainers::NewL( iEngine );
   186 
   222 
   187     LOG( "CMemSpyEngineImp::ConstructHelpersL() - File System..." );
   223 #ifdef _DEBUG
       
   224     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - File System..." );
       
   225 #endif
   188     iHelperFileSystem = CMemSpyEngineHelperFileSystem::NewL( iEngine );
   226     iHelperFileSystem = CMemSpyEngineHelperFileSystem::NewL( iEngine );
   189 
   227 
   190     LOG( "CMemSpyEngineImp::ConstructHelpersL() - ECOM..." );
   228 #ifdef _DEBUG
       
   229     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - ECOM..." );
       
   230 #endif
   191     iHelperECom = CMemSpyEngineHelperECom::NewL( iEngine );
   231     iHelperECom = CMemSpyEngineHelperECom::NewL( iEngine );
   192 
   232 
   193     LOG( "CMemSpyEngineImp::ConstructHelpersL() - FBSERV..." );
   233 #ifdef _DEBUG
       
   234     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - FBSERV..." );
       
   235 #endif
   194     iHelperFbServ = CMemSpyEngineHelperFbServ::NewL( iEngine );
   236     iHelperFbServ = CMemSpyEngineHelperFbServ::NewL( iEngine );
   195 
   237 
   196     LOG( "CMemSpyEngineImp::ConstructHelpersL() - ROM..." );
   238 #ifdef _DEBUG
       
   239     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - ROM..." );
       
   240 #endif
   197     iHelperROM = CMemSpyEngineHelperROM::NewL( iEngine );
   241     iHelperROM = CMemSpyEngineHelperROM::NewL( iEngine );
   198 
   242 
   199     LOG( "CMemSpyEngineImp::ConstructHelpersL() - RAM..." );
   243 #ifdef _DEBUG
       
   244     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - RAM..." );
       
   245 #endif
   200     iHelperRAM = CMemSpyEngineHelperRAM::NewL( iEngine );
   246     iHelperRAM = CMemSpyEngineHelperRAM::NewL( iEngine );
   201 
   247 
   202     LOG( "CMemSpyEngineImp::ConstructHelpersL() - WindowServer..." );
   248 #ifdef _DEBUG
       
   249     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - WindowServer..." );
       
   250 #endif
   203     
   251     
   204     TInt err = iHelperWindowServerLoader.Load( _L("memspywindowserverhelper.dll") );
   252     TInt err = iHelperWindowServerLoader.Load( _L("memspywindowserverhelper.dll") );
   205     LOG( "CMemSpyEngineImp::ConstructHelpersL() - WindowServer load err: %d", err );
   253 #ifdef _DEBUG
       
   254     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - WindowServer load err: %d", err );
       
   255 #endif
   206     if ( !err )
   256     if ( !err )
   207         {
   257         {
   208 #ifdef __WINS__ // ordinal is different 
   258 #ifdef __WINS__ // ordinal is different 
   209         TLibraryFunction entry = iHelperWindowServerLoader.Lookup( 3 );
   259         TLibraryFunction entry = iHelperWindowServerLoader.Lookup( 3 );
   210 #else
   260 #else
   211         TLibraryFunction entry = iHelperWindowServerLoader.Lookup( 1 );
   261         TLibraryFunction entry = iHelperWindowServerLoader.Lookup( 1 );
   212 #endif
   262 #endif
   213         if ( entry != NULL )
   263         if ( entry != NULL )
   214             {
   264             {
   215 			typedef MMemSpyEngineHelperWindowServer* (*TEntryFn)(void);
   265             iHelperWindowServer = (MMemSpyEngineHelperWindowServer*) entry();
   216 			TRAP(err, iHelperWindowServer = ((TEntryFn)entry)());
       
   217 			if (err)
       
   218 				{
       
   219 				LOG("err from memspywindowserverhelper.dll - %d", err);
       
   220 				}
       
   221             }
   266             }
   222         }
   267         }
   223     
   268     
   224     LOG( "CMemSpyEngineImp::ConstructHelpersL() - CondVar..." );
   269 #ifdef _DEBUG
       
   270     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - CondVar..." );
       
   271 #endif
   225     iHelperCondVar = CMemSpyEngineHelperCondVar::NewL( iEngine );
   272     iHelperCondVar = CMemSpyEngineHelperCondVar::NewL( iEngine );
   226 
   273 
   227     LOG( "CMemSpyEngineImp::ConstructHelpersL() - END" );
   274 #ifdef _DEBUG
       
   275     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - END" );
       
   276 #endif
   228     }
   277     }
   229 
   278 
   230 
   279 
   231 RFs& CMemSpyEngineImp::FsSession()
   280 RFs& CMemSpyEngineImp::FsSession()
   232     {
   281     {
   283 TMemSpySinkType CMemSpyEngineImp::SinkType()
   332 TMemSpySinkType CMemSpyEngineImp::SinkType()
   284     {
   333     {
   285     return iSink->Type();
   334     return iSink->Type();
   286     }
   335     }
   287 
   336 
       
   337 
   288 void CMemSpyEngineImp::InstallSinkL( TMemSpySinkType aType )
   338 void CMemSpyEngineImp::InstallSinkL( TMemSpySinkType aType )
   289 	{
   339     {
   290 	InstallSinkL( aType, KNullDesC );
   340 #ifdef _DEBUG
   291 	}
   341     RDebug::Printf( "CMemSpyEngineImp::InstallSinkL() - START - switching sink from %d to %d...", (iSink != NULL ? iSink->Type() : -1), aType );
   292 
   342 #endif
   293 void CMemSpyEngineImp::InstallSinkL( TMemSpySinkType aType, const TDesC& aRootFolder )
       
   294     {
       
   295     LOG( "CMemSpyEngineImp::InstallSinkL() - START - switching sink from %d to %d...", (iSink != NULL ? iSink->Type() : -1), aType );
       
   296     //
   343     //
   297     CMemSpyEngineOutputSink* sink = NULL;
   344     CMemSpyEngineOutputSink* sink = NULL;
   298     //
   345     //
   299     switch( aType )
   346     switch( aType )
   300         {
   347         {
   301     case ESinkTypeDebug:
   348     case ESinkTypeDebug:
   302         sink = CMemSpyEngineOutputSinkDebug::NewL( iEngine );
   349         sink = CMemSpyEngineOutputSinkDebug::NewL( iEngine );
   303         break;
   350         break;
   304     case ESinkTypeFile:
   351     case ESinkTypeFile:
   305         sink = CMemSpyEngineOutputSinkFile::NewL( iEngine, aRootFolder );
   352         sink = CMemSpyEngineOutputSinkFile::NewL( iEngine );
   306         break;
   353         break;
   307         }
   354         }
   308     //
   355     //
   309     delete iSink;
   356     delete iSink;
   310     iSink = sink;
   357     iSink = sink;
   311     //
   358     //
   312     LOG( "CMemSpyEngineImp::InstallSinkL() - END - sink type: %d", iSink->Type() );
   359 #ifdef _DEBUG
       
   360     RDebug::Printf( "CMemSpyEngineImp::InstallSinkL() - END - sink type: %d", iSink->Type() );
       
   361 #endif
   313     }
   362     }
   314 
   363 
   315 
   364 
   316 void CMemSpyEngineImp::ListOpenFilesL()
   365 void CMemSpyEngineImp::ListOpenFilesL()
   317     {
   366     {