networkprotocolmodules/networkpmutils/supldevlogger/src/suplmemlogger.cpp
branchRCL_3
changeset 65 a796fdeeb33c
parent 58 87622fad6b51
--- a/networkprotocolmodules/networkpmutils/supldevlogger/src/suplmemlogger.cpp	Wed Sep 15 00:02:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-// Copyright (c) 2008-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:
-//
-
-/**
- @file
- @internalTechnology
- 
-*/
-
-#include <e32base.h>
-#include <flogger.h>
-#include <hal.h>
-#include "suplmemlogger.h"
-
-
-/** Time interval between the first and second updates. */
-const TInt KTimerInitialDelay = 1000000;
-
-/** Time interval between the second and third and all the other updates. */
-const TInt KTimerInitialInterval = 2000000;
-
-const TInt KSuplDevLogMaxBufSize = 256;
-
-_LIT(KSuplDevLogFolder, "lbs");
-_LIT(KHeader, "TIME\tUID\tSTACK SIZE\tHEAP TOTAL\tHEAP AVAIL\tCHUNK TOTAL\tCHUNK AVAIL\tCELLS TOTAL\tCELLS AVAIL\tH/S TOTAL\tRAM TOTAL\tRAM AVAIL");
-_LIT(KLogFormat, "%d\t%x\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d");
-
-EXPORT_C CSuplMemoryUsageLogger* CSuplMemoryUsageLogger::NewLC()
-	{
-	CSuplMemoryUsageLogger* self = new (ELeave) CSuplMemoryUsageLogger();
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	return self;
-	}
-
-CSuplMemoryUsageLogger::CSuplMemoryUsageLogger() :
-	iHeap(User::Heap())
-	{
-	}
-
-CSuplMemoryUsageLogger::~CSuplMemoryUsageLogger()
-	{	
-	// Cancel and delete periodic timer
-	iPeriodic->Cancel();
-	delete iPeriodic;
-	
-	// Close iLogger handle
-	iLogger.Write(KNullDesC8);
-	iLogger.Close();
-
-	// Write the max params to a separate file
-	WriteMaxHeapToLog();
-	
-	// Close RProcess handle
-	iProcess.Close();
-	}
-
-void CSuplMemoryUsageLogger::ConstructL()
-	{	
-	//create periodic timer object
-	iPeriodic = CPeriodic::NewL(CActive::EPriorityHigh);
-	
-	//get process name
-	TFileName processFilename(iProcess.FileName());
-	
-	//create log file name out of process name
-	TInt pos = processFilename.LocateReverse(TChar('\\'));
-	iFileName = processFilename.Mid(pos + 1);
-	iFileName = iFileName.Mid(0, iFileName.Length() - 3);
-	iFileName.Append(_L("txt"));
-	
-	//connect to file iLogger
-	User::LeaveIfError(iLogger.Connect());
-	
-	//get total stack size
-	RThread currentThread;
-	TThreadStackInfo stackInfo;
-	currentThread.StackInfo(stackInfo);
-	iStackSize = stackInfo.iBase - stackInfo.iLimit;
-	
-	//create log file
-	iLogger.CreateLog(KSuplDevLogFolder, iFileName, EFileLoggingModeAppend);
-	
-	//write header to log file
-	iLogger.SetDateAndTime(ETrue, ETrue);
-	iLogger.Write(KNullDesC8);
-	iLogger.SetDateAndTime(EFalse, EFalse);
-	iLogger.WriteFormat(KHeader);
-	
-	//setup time stamp for calculating time passed
-	iStartTime.UniversalTime();
-	
-	//first write to log file
-	WriteToLog();
-	
-	//start periodic timer
-	iPeriodic->Start(KTimerInitialDelay, KTimerInitialInterval, TCallBack(PeriodicCallback, this));
-	}
-
-EXPORT_C void CSuplMemoryUsageLogger::Cancel()
-	{
-	iPeriodic->Cancel();
-	}
-
-TInt CSuplMemoryUsageLogger::PeriodicCallback(TAny* aSelf)
-	{
-	CSuplMemoryUsageLogger* self = static_cast<CSuplMemoryUsageLogger*>(aSelf);
-	self->WriteToLog();
-	return KErrNone;
-	}
-
-void CSuplMemoryUsageLogger::WriteToLog()
-	{
-	//seconds passed since start of application
-	TTime currentTime;
-	TTimeIntervalSeconds seconds;
-	currentTime.UniversalTime();
-	currentTime.SecondsFrom(iStartTime, seconds);
-	
-	if (seconds.Int() <= 60)
-		{
-		TInt heapTotal = 0;
-		TInt heapAvail = 0;
-		TInt chunkTotal = 0;
-		TInt chunkAvail = 0;
-		TInt cellsTotal = 0;
-		TInt cellsAvail = 0;
-		TInt heapStackTotal = 0;
-		TInt ramTotal = 0;
-		TInt ramAvail = 0;
-		
-		//get system memory info from hardware abstraction layer
-		HAL::Get(HAL::EMemoryRAM, ramTotal);
-		HAL::Get(HAL::EMemoryRAMFree, ramAvail);
-		
-		//get process UID
-		TSecureId processUid(iProcess.SecureId());
-		
-		//get various heap and chunk memory sizes
-		iHeap.AllocSize(heapTotal);
-		if (heapTotal > iMaxHeapTotal)
-			{
-			iMaxHeapTotal = heapTotal;
-			}
-		iHeap.Available(heapAvail);
-		chunkTotal = iHeap.Size();
-		chunkAvail = chunkTotal - heapTotal;
-		if (chunkTotal > iMaxChunkTotal)
-			{
-			iMaxChunkTotal = chunkTotal;
-			}
-		
-		//get cells info
-		cellsTotal = iHeap.Count(cellsAvail);
-		
-		//sum up the total heap and stack sizes
-		heapStackTotal = heapTotal + iStackSize;
-		
-		//create log text and write to log file
-		TBuf16<KSuplDevLogMaxBufSize> logData;
-		logData.Format(KLogFormat, seconds.Int(), processUid.iId, iStackSize, heapTotal, heapAvail, chunkTotal, chunkAvail, cellsTotal, cellsAvail, heapStackTotal, ramTotal, ramAvail);
-		iLogger.Write(logData);
-		}
-	}
-
-void CSuplMemoryUsageLogger::WriteMaxHeapToLog()
-	{
-	_LIT(KLogMaxHeapFormat, "%d, %d");
-
-	//connect to file iLogger
-	TInt err = iLogger.Connect();
-	if (KErrNone == err)
-		{
-		//create new log file name out of existing
-		TInt pos = iFileName.LocateReverse(TChar('.'));
-		if (KErrNotFound != pos)
-			{
-			iFileName.Insert(pos, _L("_max_ram"));
-
-			//create log file
-			iLogger.CreateLog(KSuplDevLogFolder, iFileName, EFileLoggingModeOverwrite);
-			
-			//write header to log file
-//			iLogger.SetDateAndTime(ETrue, ETrue);
-//			iLogger.Write(KNullDesC8);
-			iLogger.SetDateAndTime(EFalse, EFalse);
-
-			//create log text and write to log file
-			TBuf16<KSuplDevLogMaxBufSize> logData;
-			logData.Format(KLogMaxHeapFormat, iMaxHeapTotal, iMaxChunkTotal);
-			iLogger.Write(logData);
-			iLogger.Write(KNullDesC8);
-			}
-		iLogger.Close();
-		}
-	}
-