browserutilities/feedsengine/FeedsServer/Server/src/BackRestoreHandler.cpp
changeset 0 dd21522fd290
child 68 92a765b5b3e7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browserutilities/feedsengine/FeedsServer/Server/src/BackRestoreHandler.cpp	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,201 @@
+/*
+* Copyright (c) 2005 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:  Class for making Feed Engine backup and restore aware.
+*
+*/
+
+
+#include "BackRestoreHandler.h"
+#include "FeedsServer.h"
+#include <e32property.h> 			// For RProperty Object;
+#include <SaCls.h>  					// For KUidBackupRestoreKey global variable
+#include <connect/sbdefs.h>						// for conn Namespace
+
+
+// -----------------------------------------------------------------------------
+// CBackRestoreHandler::NewL
+//
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CBackRestoreHandler* CBackRestoreHandler::NewL(CFeedsServer* aFeedServer)
+		{
+			CBackRestoreHandler *self = NewLC(aFeedServer);
+			CleanupStack::Pop(self);
+			return self;
+		}
+
+
+
+// -----------------------------------------------------------------------------
+// CBackRestoreHandler::NewLC
+//
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CBackRestoreHandler* CBackRestoreHandler::NewLC(CFeedsServer* aFeedServer)
+		{
+			CBackRestoreHandler *self = new (ELeave) CBackRestoreHandler;
+			CleanupStack::PushL(self);
+			self->ConstructL(aFeedServer);
+			return self;
+		}
+
+
+
+// -----------------------------------------------------------------------------
+// CBackRestoreHandler::ConstructL
+//
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CBackRestoreHandler::ConstructL(CFeedsServer* aFeedServer)
+		{
+			CActiveScheduler::Add(this);
+			iFeedServer = aFeedServer;
+		}
+
+
+
+// -----------------------------------------------------------------------------
+// CBackRestoreHandler::~CBackRestoreHandler()
+//
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CBackRestoreHandler::~CBackRestoreHandler()
+		{
+			if(iIsListening)
+			{
+				StopListening();
+			}
+		}
+
+
+
+// -----------------------------------------------------------------------------
+// CBackRestoreHandler::CBackRestoreHandler
+//
+// C++ default constructor can NOT contain any code that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CBackRestoreHandler::CBackRestoreHandler():CActive(EPriorityStandard),iIsListening(EFalse),iIsBkpRestoreInProgress(EFalse)
+		{
+	
+		}
+
+
+
+// -----------------------------------------------------------------------------
+// CBackRestoreHandler::RunL()
+//
+// To Receive event from Subscribe and publish server and
+// based on the status of backup or restore operation 
+// this function wakes up or makes server sleeping
+// -----------------------------------------------------------------------------
+//
+void CBackRestoreHandler::RunL()
+		{
+			if(iStatus == KErrNone)
+			{
+				TInt backupStateValue=-1;
+				iProperty.Subscribe(iStatus);
+				SetActive();
+				iProperty.Get(backupStateValue);
+				if((backupStateValue == conn::EBURNormal | conn::ENoBackup )||backupStateValue == 0) // No backup or Restore activities
+				{
+					if(iIsBkpRestoreInProgress) // Check whether server was made sleeping by this class
+					{
+						iFeedServer->WakeupServerL();
+						iIsBkpRestoreInProgress = EFalse;
+					}
+				}
+				else // Either backup or Restore is in Progress
+				{
+					if(!iIsBkpRestoreInProgress)  //	Check whether Server is already sleeping
+					{
+						iFeedServer->SleepServer();
+						iIsBkpRestoreInProgress = ETrue;
+					}
+				}
+			}
+			else if(iStatus == KErrCancel)
+			{
+				iIsListening = EFalse;
+			}
+			else
+			{
+					iIsListening = EFalse;
+			}
+		}
+
+
+
+// -----------------------------------------------------------------------------
+// CBackRestoreHandler::RunError()
+//
+// -----------------------------------------------------------------------------
+//
+		
+void CBackRestoreHandler::RunError()
+		{
+	
+		}
+
+
+
+// -----------------------------------------------------------------------------
+// CBackRestoreHandler::DoCancel()
+//
+// -----------------------------------------------------------------------------
+//
+		
+void CBackRestoreHandler::DoCancel()
+		{
+			iProperty.Cancel();
+		}
+		
+		
+// -----------------------------------------------------------------------------
+// CBackRestoreHandler::StartListening()
+//
+// This function subscribe to receive events on active backup or restore activities
+// -----------------------------------------------------------------------------
+//
+void CBackRestoreHandler::StartListening()
+		{
+			if(!IsActive())
+			{
+				iProperty.Attach(KUidSystemCategory, KUidBackupRestoreKey);
+				iProperty.Subscribe(iStatus);
+				SetActive();
+				iIsListening = ETrue;
+			}
+		}
+		
+// -----------------------------------------------------------------------------
+// CBackRestoreHandler::StopListening()
+//
+// For cancellation of subscription
+// -----------------------------------------------------------------------------
+//
+void CBackRestoreHandler::StopListening()
+		{
+			if(IsActive())
+			{
+				this->Cancel();
+				iIsListening = EFalse;
+			}
+		}