diff -r 000000000000 -r dd21522fd290 browserutilities/downloadmgr/DownloadMgrUiLib/Src/AsyncEventHandlerArray.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browserutilities/downloadmgr/DownloadMgrUiLib/Src/AsyncEventHandlerArray.cpp Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,79 @@ +/* +* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: Array of event handlers +* +*/ + + + +// INCLUDE FILES +#include "AsyncEventHandlerArray.h" +#include "UiLibLogger.h" +#include "DMgrUiLibPanic.h" + +// CONSTANTS +const TInt32 KArrayGranularity = 6; // Let it as many THttpDownloadState is + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CAsyncEventHandlerArray::CAsyncEventHandlerArray +// ----------------------------------------------------------------------------- +// +CAsyncEventHandlerArray::CAsyncEventHandlerArray() +: CArrayPtrFlat( KArrayGranularity ), + iDestructing(0) + { + } + +// Destructor +CAsyncEventHandlerArray::~CAsyncEventHandlerArray() + { + CLOG_ENTERFN("CAsyncEventHandlerArray::~CAsyncEventHandlerArray"); + // Delete all owned active object. + iDestructing = ETrue; + ResetAndDestroy(); + CLOG_LEAVEFN("CAsyncEventHandlerArray::~CAsyncEventHandlerArray"); + } + +// ----------------------------------------------------------------------------- +// CAsyncEventHandlerArray::Remove +// ----------------------------------------------------------------------------- +// +void CAsyncEventHandlerArray::Remove( CAsyncEventHandlerBase* aEventHandler ) + { + CLOG_ENTERFN("CAsyncEventHandlerArray::Remove"); + + if ( iDestructing ) + { + // Do nothing. ResetAndDestroy() removes the elements. + CLOG_WRITE(" Destructing"); + } + else + { + TKeyArrayFix key(0,ECmpTInt32); + TInt index(0); + TInt err = Find( aEventHandler, key, index ); + CLOG_WRITE_FORMAT(" err: %d",err); + if ( !err ) + { + CLOG_WRITE_FORMAT(" index: %d",index); + CArrayPtrFlat::Delete( index ); + } + } + + CLOG_LEAVEFN("CAsyncEventHandlerArray::Remove"); + } + +// End of file.