diff -r 000000000000 -r 72b543305e3a email/imap4mtm/imapprotocolcontroller/inc/cimapopbackgroundsync.h --- /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__