memspy/Engine/Source/MemSpyEngineImp.cpp
changeset 34 7259cf1302ad
parent 22 a009639409f5
equal deleted inserted replaced
33:0d72cc2a29a3 34:7259cf1302ad
    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;
    81     delete iHelperStack;
    82     delete iHelperStack;
    82     delete iHelperCodeSegment;
    83     delete iHelperCodeSegment;
    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" );
   118     }
   126 #endif
   119 
   127     }
   120 
   128 
   121 void CMemSpyEngineImp::ConstructL()
   129 
   122     {
   130 void CMemSpyEngineImp::ConstructL( TBool aStartServer )
   123     LOG( "CMemSpyEngineImp::ConstructL() - START" );
   131     {
       
   132 #ifdef _DEBUG
       
   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
   127     iServer = CMemSpyEngineServer::NewL( iEngine );
   139     // ensures that only one instance of MemSpy can run (either the S60
       
   140     // UI or the console UI ).
       
   141     if (aStartServer)
       
   142     	{
       
   143 		iServer = CMemSpyEngineServer::NewL( iEngine );
       
   144     	}
       
   145     
   128     
   146     iMemSpyDriver = new(ELeave) RMemSpyDriverClient();
   129     iMemSpyDriver = new(ELeave) RMemSpyDriverClient();
   147     const TInt error = Driver().Open();
   130     const TInt error = Driver().Open();
   148     User::LeaveIfError( error );
   131     User::LeaveIfError( error );
   149     //
   132     //
   164     ConstructHelpersL();
   147     ConstructHelpersL();
   165     //
   148     //
   166     iHelperSysMemTracker = CMemSpyEngineHelperSysMemTracker::NewL( iEngine );
   149     iHelperSysMemTracker = CMemSpyEngineHelperSysMemTracker::NewL( iEngine );
   167     iMidwife->AddObserverL( *this );
   150     iMidwife->AddObserverL( *this );
   168 
   151 
   169 #ifdef _DEBUG
   152     LOG( "CMemSpyEngineImp::ConstructL() - END" );
   170     RDebug::Printf( "CMemSpyEngineImp::ConstructL() - END" );
       
   171 #endif
       
   172     }
   153     }
   173 
   154 
   174 
   155 
   175 void CMemSpyEngineImp::ConstructHelpersL()
   156 void CMemSpyEngineImp::ConstructHelpersL()
   176     {
   157     {
   177 #ifdef _DEBUG
   158     LOG( "CMemSpyEngineImp::ConstructHelpersL() - START" );
   178     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - START" );
   159 
   179 #endif
   160     LOG( "CMemSpyEngineImp::ConstructHelpersL() - Heap..." );
   180 
       
   181 #ifdef _DEBUG
       
   182     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Heap..." );
       
   183 #endif
       
   184     iHelperHeap = CMemSpyEngineHelperHeap::NewL( iEngine );
   161     iHelperHeap = CMemSpyEngineHelperHeap::NewL( iEngine );
   185 
   162 
   186 #ifdef _DEBUG
   163     LOG( "CMemSpyEngineImp::ConstructHelpersL() - Stack..." );
   187     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Stack..." );
       
   188 #endif
       
   189     iHelperStack = CMemSpyEngineHelperStack::NewL( iEngine );
   164     iHelperStack = CMemSpyEngineHelperStack::NewL( iEngine );
   190 
   165 
   191 #ifdef _DEBUG
   166     LOG( "CMemSpyEngineImp::ConstructHelpersL() - Code Segments..." );
   192     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Code Segments..." );
       
   193 #endif
       
   194     iHelperCodeSegment = CMemSpyEngineHelperCodeSegment::NewL( iEngine );
   167     iHelperCodeSegment = CMemSpyEngineHelperCodeSegment::NewL( iEngine );
   195 
   168 
   196 #ifdef _DEBUG
   169     LOG( "CMemSpyEngineImp::ConstructHelpersL() - Chunk..." );
   197     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Chunk..." );
       
   198 #endif
       
   199     iHelperChunk = CMemSpyEngineHelperChunk::NewL( iEngine );
   170     iHelperChunk = CMemSpyEngineHelperChunk::NewL( iEngine );
   200 
   171 
   201 #ifdef _DEBUG
   172     LOG( "CMemSpyEngineImp::ConstructHelpersL() - Thread..." );
   202     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Thread..." );
       
   203 #endif
       
   204     iHelperThread = CMemSpyEngineHelperThread::NewL( iEngine );
   173     iHelperThread = CMemSpyEngineHelperThread::NewL( iEngine );
   205 
   174 
   206 #ifdef _DEBUG
   175     LOG( "CMemSpyEngineImp::ConstructHelpersL() - Process..." );
   207     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Process..." );
       
   208 #endif
       
   209     iHelperProcess = CMemSpyEngineHelperProcess::NewL( iEngine );
   176     iHelperProcess = CMemSpyEngineHelperProcess::NewL( iEngine );
   210 
   177 
   211 #ifdef _DEBUG
   178     LOG( "CMemSpyEngineImp::ConstructHelpersL() - Server..." );
   212     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Server..." );
       
   213 #endif
       
   214     iHelperServer = CMemSpyEngineHelperServer::NewL( iEngine );
   179     iHelperServer = CMemSpyEngineHelperServer::NewL( iEngine );
   215 
   180 
   216 #ifdef _DEBUG
   181     LOG( "CMemSpyEngineImp::ConstructHelpersL() - AO..." );
   217     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - AO..." );
       
   218 #endif
       
   219     iHelperActiveObject = CMemSpyEngineHelperActiveObject::NewL( iEngine );
   182     iHelperActiveObject = CMemSpyEngineHelperActiveObject::NewL( iEngine );
   220 
   183 
   221 #ifdef _DEBUG
   184     LOG( "CMemSpyEngineImp::ConstructHelpersL() - Kernel Containers..." );
   222     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - Kernel Containers..." );
       
   223 #endif
       
   224     iHelperKernelContainers = CMemSpyEngineHelperKernelContainers::NewL( iEngine );
   185     iHelperKernelContainers = CMemSpyEngineHelperKernelContainers::NewL( iEngine );
   225 
   186 
   226 #ifdef _DEBUG
   187     LOG( "CMemSpyEngineImp::ConstructHelpersL() - File System..." );
   227     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - File System..." );
       
   228 #endif
       
   229     iHelperFileSystem = CMemSpyEngineHelperFileSystem::NewL( iEngine );
   188     iHelperFileSystem = CMemSpyEngineHelperFileSystem::NewL( iEngine );
   230 
   189 
   231 #ifdef _DEBUG
   190     LOG( "CMemSpyEngineImp::ConstructHelpersL() - ECOM..." );
   232     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - ECOM..." );
       
   233 #endif
       
   234     iHelperECom = CMemSpyEngineHelperECom::NewL( iEngine );
   191     iHelperECom = CMemSpyEngineHelperECom::NewL( iEngine );
   235 
   192 
   236 #ifdef _DEBUG
   193     LOG( "CMemSpyEngineImp::ConstructHelpersL() - FBSERV..." );
   237     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - FBSERV..." );
       
   238 #endif
       
   239     iHelperFbServ = CMemSpyEngineHelperFbServ::NewL( iEngine );
   194     iHelperFbServ = CMemSpyEngineHelperFbServ::NewL( iEngine );
   240 
   195 
   241 #ifdef _DEBUG
   196     LOG( "CMemSpyEngineImp::ConstructHelpersL() - ROM..." );
   242     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - ROM..." );
       
   243 #endif
       
   244     iHelperROM = CMemSpyEngineHelperROM::NewL( iEngine );
   197     iHelperROM = CMemSpyEngineHelperROM::NewL( iEngine );
   245 
   198 
   246 #ifdef _DEBUG
   199     LOG( "CMemSpyEngineImp::ConstructHelpersL() - RAM..." );
   247     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - RAM..." );
       
   248 #endif
       
   249     iHelperRAM = CMemSpyEngineHelperRAM::NewL( iEngine );
   200     iHelperRAM = CMemSpyEngineHelperRAM::NewL( iEngine );
   250 
   201 
   251 #ifdef _DEBUG
   202     LOG( "CMemSpyEngineImp::ConstructHelpersL() - WindowServer..." );
   252     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - WindowServer..." );
       
   253 #endif
       
   254     
   203     
   255     TInt err = iHelperWindowServerLoader.Load( _L("memspywindowserverhelper.dll") );
   204     TInt err = iHelperWindowServerLoader.Load( _L("memspywindowserverhelper.dll") );
   256 #ifdef _DEBUG
   205     LOG( "CMemSpyEngineImp::ConstructHelpersL() - WindowServer load err: %d", err );
   257     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - WindowServer load err: %d", err );
       
   258 #endif
       
   259     if ( !err )
   206     if ( !err )
   260         {
   207         {
   261 #ifdef __WINS__ // ordinal is different 
   208 #ifdef __WINS__ // ordinal is different 
   262         TLibraryFunction entry = iHelperWindowServerLoader.Lookup( 3 );
   209         TLibraryFunction entry = iHelperWindowServerLoader.Lookup( 3 );
   263 #else
   210 #else
   264         TLibraryFunction entry = iHelperWindowServerLoader.Lookup( 1 );
   211         TLibraryFunction entry = iHelperWindowServerLoader.Lookup( 1 );
   265 #endif
   212 #endif
   266         if ( entry != NULL )
   213         if ( entry != NULL )
   267             {
   214             {
   268             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 				}
   269             }
   221             }
   270         }
   222         }
   271     
   223     
   272 #ifdef _DEBUG
   224     LOG( "CMemSpyEngineImp::ConstructHelpersL() - CondVar..." );
   273     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - CondVar..." );
       
   274 #endif
       
   275     iHelperCondVar = CMemSpyEngineHelperCondVar::NewL( iEngine );
   225     iHelperCondVar = CMemSpyEngineHelperCondVar::NewL( iEngine );
   276 
   226 
   277 #ifdef _DEBUG
   227     LOG( "CMemSpyEngineImp::ConstructHelpersL() - END" );
   278     RDebug::Printf( "CMemSpyEngineImp::ConstructHelpersL() - END" );
       
   279 #endif
       
   280     }
   228     }
   281 
   229 
   282 
   230 
   283 RFs& CMemSpyEngineImp::FsSession()
   231 RFs& CMemSpyEngineImp::FsSession()
   284     {
   232     {
   335 TMemSpySinkType CMemSpyEngineImp::SinkType()
   283 TMemSpySinkType CMemSpyEngineImp::SinkType()
   336     {
   284     {
   337     return iSink->Type();
   285     return iSink->Type();
   338     }
   286     }
   339 
   287 
   340 
       
   341 void CMemSpyEngineImp::InstallSinkL( TMemSpySinkType aType )
   288 void CMemSpyEngineImp::InstallSinkL( TMemSpySinkType aType )
   342     {
   289 	{
   343 #ifdef _DEBUG
   290 	InstallSinkL( aType, KNullDesC );
   344     RDebug::Printf( "CMemSpyEngineImp::InstallSinkL() - START - switching sink from %d to %d...", (iSink != NULL ? iSink->Type() : -1), aType );
   291 	}
   345 #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 );
   346     //
   296     //
   347     CMemSpyEngineOutputSink* sink = NULL;
   297     CMemSpyEngineOutputSink* sink = NULL;
   348     //
   298     //
   349     switch( aType )
   299     switch( aType )
   350         {
   300         {
   351     case ESinkTypeDebug:
   301     case ESinkTypeDebug:
   352         sink = CMemSpyEngineOutputSinkDebug::NewL( iEngine );
   302         sink = CMemSpyEngineOutputSinkDebug::NewL( iEngine );
   353         break;
   303         break;
   354     case ESinkTypeFile:
   304     case ESinkTypeFile:
   355         sink = CMemSpyEngineOutputSinkFile::NewL( iEngine );
   305         sink = CMemSpyEngineOutputSinkFile::NewL( iEngine, aRootFolder );
   356         break;
   306         break;
   357         }
   307         }
   358     //
   308     //
   359     delete iSink;
   309     delete iSink;
   360     iSink = sink;
   310     iSink = sink;
   361     //
   311     //
   362 #ifdef _DEBUG
   312     LOG( "CMemSpyEngineImp::InstallSinkL() - END - sink type: %d", iSink->Type() );
   363     RDebug::Printf( "CMemSpyEngineImp::InstallSinkL() - END - sink type: %d", iSink->Type() );
       
   364 #endif
       
   365     }
   313     }
   366 
   314 
   367 
   315 
   368 void CMemSpyEngineImp::ListOpenFilesL()
   316 void CMemSpyEngineImp::ListOpenFilesL()
   369     {
   317     {