email/imap4mtm/imapprotocolcontroller/inc/cimapopbackgroundsync.h
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imap4mtm/imapprotocolcontroller/inc/cimapopbackgroundsync.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,117 @@
+// Copyright (c) 2006-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:
+//
+
+#ifndef __CIMAPOPBACKGROUNDSYNC_H__
+#define __CIMAPOPBACKGROUNDSYNC_H__
+
+class CActive;
+class CImapFolder;
+class CImapSyncManager;
+class CImapSession;
+class MImapOpBackgroundSyncObserver;
+class CImapSettings;
+class CImapCompoundSyncService;
+class CMsvServerEntry;
+class TImap4CompoundProgress;
+class CImapMailStore;
+class CImapOfflineControl;
+class CMsvEntrySelection;
+
+/**
+The CImapOpBackgroundSync class encapsulates the management of performing
+a background synchronisation operation. It utilises CImapCompoundBase
+derived operation classes to perform the necessary asynchronous operations
+and reports completion or errors via the MImapOpBackgroundSyncObserver
+API, a reference to an instance of which is passed on construction.
+
+@internalTechnology
+@prototype
+*/
+class CImapOpBackgroundSync : public CActive
+	{
+private:
+	enum TBackgroundSyncState 
+		{
+		ENotInUse,
+		EStartingSync,
+		ESynchronising,
+		ECancelRecoveringSession,
+		ECancelRefreshingSyncManager,
+		EFinished
+		};
+
+public:
+	virtual ~CImapOpBackgroundSync( );
+	
+	static CImapOpBackgroundSync* NewL( MImapOpBackgroundSyncObserver& aBackgroundSyncObserver,
+										CMsvServerEntry& aServerEntry,
+										CImapSyncManager& aSyncMan,
+										CImapSettings& aImapSettings,
+										CImapMailStore& aImapMailStore,
+										CImapOfflineControl& aImapOfflineControl );
+
+	void StartSync(CImapSession& aSession);
+	void CancelAndCleanup();
+	
+	void Progress(TImap4CompoundProgress& aCompoundProgress);
+	
+	// Support for Bearer Mobility
+	void  CancelForMigrate();
+	void  StopForMigrate();
+	void  ResumeOperationL(CImapSession& aSession);
+	TBool IsSuspendedForMigrate();
+	
+	// Support for sync using download rules.
+	void RemoveFromSelectionL(CMsvEntrySelection& aDeleteSel);
+
+private:
+	CImapOpBackgroundSync( MImapOpBackgroundSyncObserver& aBackgroundSyncObserver, 
+						   CMsvServerEntry& aServerEntry,
+						   CImapSyncManager& aSyncMan, 
+						   CImapSettings& aImapSettings,
+						   CImapMailStore& aImapMailStore,
+						   CImapOfflineControl& aImapOfflineControl );
+	void ConstructL();
+	
+	// from CActive
+	virtual void RunL();
+	virtual TInt RunError(TInt aError);
+	virtual void DoCancel();
+
+private:
+	
+	// background sync-op migration states:
+	enum TImapBgMigrateState
+		{
+		ENotMigrating,				// normal state
+		ECancellingForMigrate,      // intermediate state
+		EStoppingForMigrate,		// stop requested...
+		ESuspendedForMigrate        // waiting to be restarted
+		};
+		
+	MImapOpBackgroundSyncObserver& iBackgroundSyncObserver;
+	CImapSession* iSession;
+	CMsvServerEntry& iEntry;
+	CImapSyncManager& iSyncMan;
+	CImapSettings& iImapSettings;
+	CImapMailStore& iImapMailStore;
+	CImapOfflineControl& iImapOfflineControl; 
+	CImapCompoundSyncService* iCompoundSync;
+
+	TBackgroundSyncState iState;
+	TImapBgMigrateState  iMigrateState;
+	};
+
+#endif	//__CIMAPOPBACKGROUNDSYNC_H__