pushmtm/MtmCliSrvInc/PushMtmGcOperation.h
branchRCL_3
changeset 48 8e6fa1719340
parent 0 84ad3b177aa3
--- /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 <e32base.h>
+#include <e32std.h>
+#include <Msvstd.h>
+
+// 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.