diff -r 000000000000 -r dd21522fd290 webengine/osswebengine/MemoryManager/Inc/StopScheduler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/osswebengine/MemoryManager/Inc/StopScheduler.h Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,95 @@ +/* +* Copyright (c) 2006 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: +* +*/ + +#ifndef __STOPPER_H__ +#define __STOPPER_H__ + +// INCLUDES + +#include "MemoryManager.h" + +// CONSTANTS + +// DATA TYPES + +// CLASS DECLARATION + +// FORWARD DECLARATIONS +class CMemoryPool; + +/** +* An active object to schedule the stop of all on-going operations +* @lib memman.lib +* @since 3.1 +*/ +class CStopScheduler : public CActive + { + public: + enum TNextStop + { + ENormalStop = 0x01, + EEmergencyStop = 0x02, + EAllStop = 0x03 + }; + + enum TSchedulerState + { + EIdle = 0, + ECheckMemory, + EStopLoading + }; + + CStopScheduler( CMemoryPool& aAllocator ); + ~CStopScheduler(); + + /** + * from CAcitve + * @since 3.1 + * @param + * @return + */ + void RunL(); + + /** + * start the stop scheduler + * @since 3.1 + * @param aMemSize amount of memory causes the last allocation fail + * @return + */ + void Start( TSchedulerState aState, TInt aMemSize ); + + /** + * from CActive + * @since 3.1 + * @param + * @return + */ + void DoCancel(); + + private: + void SelfComplete(); + void StopLoading( TOOMPriority aPriority ); + void CheckMemoryDefered( TTimeIntervalMicroSeconds32 aDelay ); + + CMemoryPool& iMemoryPool; + TInt iMemRequested; + TSchedulerState iState; + RTimer iCheckTimer; + TInt iNextStop; + }; + +#endif \ No newline at end of file