View a printable version of the current page.
  Wiki > Symbian Developer Network Public Wiki > ... > Example source code > Memory monitor class with AO
  Memory monitor class with AO
Added by alie, last edited by rodders on Feb 15, 2008  (view change)
Labels: 
(None)

Header file
#ifndef __MEMORYMONITOR_H__
#define __MEMORYMONITOR_H__

#include <e32def.h>
#include <e32base.h>
#include <badesca.h>
#include <f32file.h>

class MMemoryMonitorObserver
	{
	public:
		virtual void FreeMemoryEventL(const TInt& aFreeRAM) = 0;

	};

class CMemoryMonitor: public CActive
	{
	public:
		CMemoryMonitor(MMemoryMonitorObserver& aObserver);

		~CMemoryMonitor();

		void StartL();

		void StopL();

		void SetRefreshRate(const TInt& aRefreshRate)
			{
			iRefreshRate = aRefreshRate;
			}

	protected:
	    void DoCancel();

    	void RunL();

	private:
		MMemoryMonitorObserver& iObserver;

		RTimer			 	iTimer;

	    TInt iFreeRAM;

	    TInt iRefreshRate;

	};

#endif __MEMORYMONITOR_H__
Cpp file 
 #include "MemoryMonitor.h"

#include <hal.h>

CMemoryMonitor::CMemoryMonitor(MMemoryMonitorObserver& aObserver)
	: CActive(EPriorityHigh), iObserver(aObserver), iRefreshRate(1)
	{
	User::LeaveIfError(iTimer.CreateLocal());
	CActiveScheduler::Add(this);
	}

CMemoryMonitor::~CMemoryMonitor()
	{
	Deque();
	iTimer.Close();
	}

void CMemoryMonitor::RunL()
	{
	if(iStatus == KErrNone)
		{
    		HAL::Get(HAL::EMemoryRAMFree, iFreeRAM);
    		iObserver.FreeMemoryEventL(iFreeRAM >> 10);
		iTimer.After(iStatus, iRefreshRate*1000000);
		SetActive();
		}
	else
		{		// error :p
		}
	}

void CMemoryMonitor::DoCancel()
	{
	iTimer.Cancel();
	}

void CMemoryMonitor::StopL()
	{
	Cancel();
	}

void CMemoryMonitor::StartL()
	{
	iTimer.After(iStatus, 1000);
	SetActive();
	}
Interactive Services Terms & Conditions of use | Terms of use | Privacy policy | Media Center | Contact us | © 2008 Symbian