genericservices/activebackupclient/src/abclient.cpp
changeset 0 e4d67989cc36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/genericservices/activebackupclient/src/abclient.cpp	Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,170 @@
+// Copyright (c) 2004-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:
+// Implementation of CActiveBackupClient class.
+// 
+//
+
+/**
+ @file
+ @released
+*/
+
+#include "abclient.h"
+#include "abclientsession.h"
+#include "abachandler.h"
+
+namespace conn
+	{
+
+	CActiveBackupClient::CActiveBackupClient() : iClientSession(NULL), iABCallbackHandler(NULL)
+	/** 
+	Class constructor.
+	*/
+		{
+		}
+
+
+	EXPORT_C CActiveBackupClient* CActiveBackupClient::NewL()
+	/**
+    This method creates a CActiveBackupClient, connects to the Secure Backup Server
+	and does not wish to be called back so does not supply an implementation of
+	MActiveBackupDataClient.
+
+    If this is called when the Secure Backup Server is not active then it will leave
+    with KErrNotSupported.
+    
+	@return Pointer to a created CActiveBackupClient object
+	*/
+		{
+		CActiveBackupClient* self = new (ELeave) CActiveBackupClient();
+		CleanupStack::PushL(self);
+		self->ConstructL();
+		CleanupStack::Pop(self);
+		return self;
+		}
+
+	EXPORT_C CActiveBackupClient* CActiveBackupClient::NewL(MActiveBackupDataClient* aClient)
+	/**
+    This method creates a CActiveBackupClient, connects to the Secure Backup Server
+    and supplies a pointer to a MActiveBackupDataClient implementation.
+
+    If this is called when the Secure Backup Server is not active then it will leave
+    with KErrNotSupported.
+
+    @param aClient pointer to an object that implements the MActiveBackupDataClient
+				   mixin.  If this is NULL then the data owner does not take part in
+				   active backup or restore.
+
+	@panic KErrNotFound Debug only - If an ActiveScheduler is not installed
+	@leave Release only - If an ActiveScheduler is not installed
+	@return Pointer to a created CActiveBackupClient object
+	*/
+		{
+		CActiveBackupClient* self = new (ELeave) CActiveBackupClient();
+		CleanupStack::PushL(self);
+		self->ConstructL(aClient);
+		CleanupStack::Pop(self);
+		return self;
+		}
+
+	void CActiveBackupClient::ConstructL()
+	/**
+	Construct this instance of CActiveBackupClient
+	*/
+		{
+		iClientSession = new (ELeave) RABClientSession;
+		
+		User::LeaveIfError(iClientSession->Connect());
+		}
+
+	void CActiveBackupClient::ConstructL(MActiveBackupDataClient* aClient)
+	/**
+	Construct this instance of CActiveBackupClient
+
+	@param aClient  Pointer to a concrete instance of MActiveBackupDataClient
+	*/
+		{
+		ConstructL();
+		
+		iABCallbackHandler = CActiveBackupCallbackHandler::NewL(aClient, *iClientSession);
+		iABCallbackHandler->StartListeningForServerMessagesL();
+		}
+
+
+	EXPORT_C CActiveBackupClient::~CActiveBackupClient()
+	/**
+	Standard destructor.
+	*/
+		{
+		delete iABCallbackHandler;
+		if (iClientSession)
+			{
+			iClientSession->Close();
+			}
+		delete iClientSession;
+		iClientSession = NULL;
+		}
+
+    EXPORT_C void CActiveBackupClient::BURModeInfoL(TDriveList& aDriveList, TBURPartType& aBackupType, TBackupIncType& aIncBackupType)
+    /**
+    This method returns the type(s) of backup / restore operation currently active
+
+    @param aDriveList list of drives involved in backup and restore
+    @param aBackupType enumerated type indicating whether a backup or restore
+    is in progress and whether full or partial.
+    @param aIncBackupType enumerated type indicating whetherr a backup is base
+    or incremental.
+    */
+		{
+		iClientSession->BURModeInfoL(aDriveList, aBackupType, aIncBackupType);
+		}
+
+
+    EXPORT_C TBool CActiveBackupClient::DoesPartialBURAffectMeL()
+    /**
+    This method can be called when a partial backup or restore is active and will indicate
+    whether the calling process is expected to take part.  If a full backup or restore is 
+    active then this method will return ETrue for all data owners.  If no backup or restore
+    is active then this method will return EFalse for all data owners.
+
+    @return ETrue if the calling data owner is involved in the current backup or restore
+    operation.
+    */
+		{
+		return iClientSession->DoesPartialBURAffectMeL();
+		}
+
+
+    EXPORT_C void CActiveBackupClient::ConfirmReadyForBURL(TInt aErrorCode)
+    /**
+    This method is called to indicate to the Secure Backup Server that the data owner is ready
+    to participate in backup or restore.  The data owner must call this method to indicate
+    readiness or the Secure Backup Server will not request or supply backup data.
+
+    N.B. The Secure Backup Server will supply snapshot data (if relevant) before a data 
+    owner indicates readiness as it assumes that the data owner requires snapshot data in
+    order to prepare for a backp or restore.
+
+    @param aErrorCode this should be set to KErrNone when the client is ready for
+    backup or restore. If it is set to any other value then it indicates that the client
+    cannot continue with the backup or restore and the error code will be supplied to
+    the remote backup client.
+    */
+		{
+		iClientSession->ConfirmReadyForBURL(aErrorCode);
+		}
+
+	} // end of conn namespace
+
+