--- /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;
+ }
+ }