diff -r 6385c4c93049 -r 8e6fa1719340 pushmtm/MtmCliSrvInc/PushMtmGcOperation.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pushmtm/MtmCliSrvInc/PushMtmGcOperation.h Wed Sep 01 12:31:04 2010 +0100 @@ -0,0 +1,142 @@ +/* +* Copyright (c) 2002 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: Declaration of CPushMtmGcOperation. +* +*/ + + + +#ifndef PUSHMTMGCOPERATION_H +#define PUSHMTMGCOPERATION_H + +// INCLUDE FILES + +#include "PushMtmOperation.h" +#include +#include +#include + +// FORWARD DECLARATIONS + +class CMsvSession; +class CPushMtmUtil; +class CMsvEntrySelection; +class CSIPushMsgEntry; + +// CLASS DECLARATION + +/** +* Garbage collection operation. It removes some or all expired SIs from the +* Message Server. +*/ +class CPushMtmGcOperation : public CPushMtmOperation + { + public: // Constructors and destructor + + /** + * Two-phased constructor. Leaves on failure. + * @param aSession Message server session to be used by this operation. + * @param aFolderId aFolderId Garbage collection is made in this folder. + * If it's KMsvNullIndexEntryId, then gc is made in all the + * folders that may contain push messages. + * @param aObserverRequestStatus Observer's status. + * @return The constructed operation. + */ + static CPushMtmGcOperation* NewL( CMsvSession& aSession, + TMsvId aFolderId, + TRequestStatus& aObserverRequestStatus ); + + /** + * Destructor. + */ + virtual ~CPushMtmGcOperation(); + + public: // New functions + + /** + * Do the garbage collection synchronously. + */ + void DoSyncL(); + + protected: // Constructors + + /** + * Constructor. + * @param aSession Message server session to be used by this operation. + * @param aFolderId Garbage collection is made in this folder. + * @param aObserverRequestStatus Observer's status. + */ + CPushMtmGcOperation( CMsvSession& aSession, + TMsvId aFolderId, + TRequestStatus& aObserverRequestStatus ); + + /** + * Symbian OS constructor. + */ + void ConstructL(); + + protected: // New functions + + /** + * Initialize the operation. Creates an array of SI messages. + */ + void InitL(); + + /** + * Delete the current entry if it is expired. + */ + void GcCurrentL(); + + protected: // Functions from base classes + + /** + * Do garbage collection. Initializes an array of SI messages + * and check the expiration state: one check per one RunL shot. + */ + void RunL(); + + /** + * Cancel protocol implementation. CPushMtmOperation::DoCancel() is + * called. + */ + void DoCancel(); + + /** + * Leave handler protocol implementation: it is called when + * RunL leaves. It continues the operation if the current entry is not + * found, otherwise it is stopped. + */ + TInt RunError( TInt aError ); + + protected: // Data members + + enum TState + { + EInit, + EGarbageCollecting + }; + + TState iState; ///< Operation state. + TMsvId iFolderId; /**< Gc is done only in this specific folder, + * if it is not KMsvNullIndexEntryId. */ + CPushMtmUtil* iUtil; ///< Utility class. Owned. + CMsvEntrySelection* iEntrySel; ///< Selection of entries to be deleted. Owned. + CSIPushMsgEntry* iEntryWrapper; ///< Msg class. Owned. + TInt iCount; ///< Count of the selection. + TInt iCurrentIndex; ///< Index of the current entry in the selection. + }; + +#endif // PUSHMTMGCOPERATION_H + +// End of file.