diff -r 000000000000 -r dfb7c4ff071f commsfwutils/commsbufs/mbufmgrimpl/src/MBufMemoryManager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commsfwutils/commsbufs/mbufmgrimpl/src/MBufMemoryManager.cpp Thu Dec 17 09:22:25 2009 +0200 @@ -0,0 +1,112 @@ +// Copyright (c) 1997-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: +// Heap Memory Allocation for CMBufPoolManager +// +// +/** + * @file + * + * Heap Memory Allocation for CMBufPoolManager + * + * @internalComponent + */ + +#include "mbufmanager.h" +#include "MBufMemoryManager.h" +#include "MBufPool.h" +#include "MBuf_Log.h" // for __FLOG_* + +#ifdef __FLOG_ACTIVE +_LIT8(KComponent, "MemoryManager"); +#endif + +CMBufMemoryManager* CMBufMemoryManager::NewL(TInt aMaxHeapSize) +// +// Construction - first phase +// + { + CMBufMemoryManager* memAllocator = new(ELeave) CMBufMemoryManager; + CleanupStack::PushL(memAllocator); + memAllocator->ConstructL(aMaxHeapSize); + CleanupStack::Pop(); + + return memAllocator; + } + +CMBufMemoryManager::CMBufMemoryManager() + : CBase() +// +// Constructor +// + { + __FLOG_OPEN(KSubsysMBufMgr, KComponent); + __FLOG_1(_L8("CMBufManager %x:\tCMBufMemoryManager()"),this); + + } + +void CMBufMemoryManager::ConstructL(TInt aMaxHeapSize) +// +// Construction - second phase +// + { + iHeap = UserHeap::ChunkHeap(NULL, 0, aMaxHeapSize); + if (iHeap==NULL) + { + __FLOG_2(_L8("CMBufManager::CMBufMemoryManager %x:\tCreateL(0, aMaxHeapSize %d) leaving with KErrNoMemory"), this, aMaxHeapSize); + User::Leave(KErrNoMemory); + } + } + +CMBufMemoryManager::~CMBufMemoryManager() +// +// Destructor +// + { + iHeap->Close(); + + __FLOG_CLOSE; + } + +TAny* CMBufMemoryManager::Alloc(TInt aSize) +// +// Allocates memory from the heap +// + { + TAny* pMemory; + pMemory = iHeap->Alloc(aSize); + + return pMemory; + } + +void CMBufMemoryManager::Free(TAny* aPtr) +// +// Returns memory to the heap +// + { + CMBufPool* pool = (CMBufPool* ) aPtr; + + iHeap->Free(pool); + } + +TInt CMBufMemoryManager::AllocBytes() +// +// Number of bytes allocated from the heap +// + { + TInt allocated; + iHeap->AllocSize(allocated); + + return allocated; + } +