--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/msgerrorwatcher/src/MsgGarbageCollection.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,183 @@
+/*
+* Copyright (c) 2007 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:
+* CMsgGarbageCollection implementation file
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <watcher.h>
+#include <msvids.h>
+#include <mtclreg.h>
+#include <mtclbase.h>
+#include <SendUiConsts.h>
+#include <PushMtmCommands.hrh> // EPushMtmCmdCollectGarbage
+
+#include "MsgGarbageCollection.h"
+
+#ifdef USE_LOGGER
+#include "MsgErrorWatcherLogging.h"
+#endif
+
+// CONSTANTS
+const TUint KGarbageCollectionInterval = 1; // In hours
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CMsgGarbageCollection::NewL
+// ---------------------------------------------------------
+//
+CMsgGarbageCollection* CMsgGarbageCollection::NewL(
+ CClientMtmRegistry& aMtmRegistry )
+ {
+ CMsgGarbageCollection* self = new ( ELeave ) CMsgGarbageCollection( aMtmRegistry );
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CMsgGarbageCollection::CMsgGarbageCollection
+// ---------------------------------------------------------
+//
+CMsgGarbageCollection::CMsgGarbageCollection( CClientMtmRegistry& aMtmRegistry )
+ : CActive( EPriorityStandard ),
+ iMtmRegistry( aMtmRegistry )
+ {
+ CActiveScheduler::Add( this );
+ }
+
+// ---------------------------------------------------------
+// CMsgGarbageCollection::~CMsgGarbageCollection
+// ---------------------------------------------------------
+//
+CMsgGarbageCollection::~CMsgGarbageCollection()
+ {
+ Cancel();
+ iTimer.Close();
+ delete iOp;
+ delete iWapMtm;
+ }
+
+// ---------------------------------------------------------
+// CMsgGarbageCollection::ConstructL
+// ---------------------------------------------------------
+//
+void CMsgGarbageCollection::ConstructL()
+ {
+#ifdef USE_LOGGER
+ MEWLOGGER_ENTERFN( "GarbageCollection: ConstructL" );
+#endif
+ User::LeaveIfError( iTimer.CreateLocal() );
+ iWapMtm = iMtmRegistry.NewMtmL( KSenduiMtmPushMtmUid );
+
+ StartWaiting();
+
+#ifdef USE_LOGGER
+ MEWLOGGER_LEAVEFN( "GarbageCollection: ConstructL" );
+#endif
+ }
+
+// ---------------------------------------------------------
+// CMsgGarbageCollection::RunL
+// ---------------------------------------------------------
+//
+void CMsgGarbageCollection::RunL()
+ {
+#ifdef USE_LOGGER
+ MEWLOGGER_ENTERFN( "GarbageCollection: RunL" );
+#endif
+ if ( iState == EGarbageCollectionWaiting )
+ {
+ WapPushGarbageCollectionL();
+ }
+ else
+ {
+ StartWaiting();
+ }
+#ifdef USE_LOGGER
+ MEWLOGGER_LEAVEFN( "GarbageCollection: RunL" );
+#endif
+ }
+
+// ---------------------------------------------------------
+// CMsgGarbageCollection::DoCancel
+// ---------------------------------------------------------
+//
+void CMsgGarbageCollection::DoCancel()
+ {
+ iTimer.Cancel();
+ if ( iOp )
+ {
+ iOp->Cancel();
+ }
+ }
+
+// ---------------------------------------------------------
+// CMsgGarbageCollection::StartWaiting
+// ---------------------------------------------------------
+//
+void CMsgGarbageCollection::StartWaiting()
+ {
+#ifdef USE_LOGGER
+ MEWLOGGER_ENTERFN( "GarbageCollection: StartWaiting" );
+#endif
+ iState = EGarbageCollectionWaiting;
+ iStatus = KRequestPending;
+ TTime time;
+ time.UniversalTime();
+ time += TTimeIntervalHours( KGarbageCollectionInterval );
+ iTimer.AtUTC( iStatus, time );
+ SetActive();
+#ifdef USE_LOGGER
+ MEWLOGGER_LEAVEFN( "GarbageCollection: StartWaiting" );
+#endif
+ }
+
+// ---------------------------------------------------------
+// CMsgGarbageCollection::WapPushGarbageCollectionL
+// ---------------------------------------------------------
+//
+void CMsgGarbageCollection::WapPushGarbageCollectionL()
+ {
+#ifdef USE_LOGGER
+ MEWLOGGER_ENTERFN( "GarbageCollection: WapPushGarbageCollectionL" );
+#endif
+ // Delete just in case...
+ iState = EGarbageCollectionWapPush;
+ CMsvEntrySelection* selection = new( ELeave ) CMsvEntrySelection();
+ CleanupStack::PushL( selection );
+ TBuf8<1> blankParams;
+ iStatus = KRequestPending;
+ delete iOp;
+ iOp = NULL;
+ iOp = iWapMtm->InvokeAsyncFunctionL(
+ EPushMtmCmdCollectGarbage,
+ *selection,
+ blankParams,
+ iStatus );
+ CleanupStack::PopAndDestroy( selection );
+ SetActive();
+#ifdef USE_LOGGER
+ MEWLOGGER_LEAVEFN( "GarbageCollection: WapPushGarbageCollectionL" );
+#endif
+ }
+
+// End of File
+