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