remotemgmt_plat/syncml_client_api/inc/SyncMLObservers.h
changeset 0 b497e44ab2fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/remotemgmt_plat/syncml_client_api/inc/SyncMLObservers.h	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,219 @@
+/*
+* 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 "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: Interface to receive notifications of SyncML session and synchronization progress events.
+*
+*/
+
+#ifndef __SYNCMLOBSERVERS_H__
+#define __SYNCMLOBSERVERS_H__
+#define SYNCML_V3
+//
+#include <e32std.h>
+//
+
+///////////////////////////////////////////////////////////////////////////////
+// MSyncMLEventObserver
+//  Observer of session events.
+///////////////////////////////////////////////////////////////////////////////
+class MSyncMLEventObserver
+/** 
+	Interface to receive notifications of SyncML session events. 
+	
+	Notifications are requested through RSyncMLSession::RequestEventL().
+	@publishedAll 
+	@released 
+*/
+	{
+public:
+	enum TEvent
+	/** SyncML session event types.	*/
+		{
+		/** Job has started. */
+		EJobStart,
+		/** Job has failed to start. */
+		EJobStartFailed,
+		/** Job has stopped. */
+		EJobStop,
+		/** Job could not be parsed, and will not be processed. */
+		EJobRejected,
+		/** A profile has been created. */
+		EProfileCreated,
+		/** A profile has been changed. */
+		EProfileChanged,
+		/** A profile has been deleted. */
+		EProfileDeleted,
+		/** A transport has timed-out. */
+		ETransportTimeout,
+		/** The SyncML Agent is suspended. This can occur when processing pauses in order to perform a back-up. */
+		EServerSuspended,
+		/** The SyncML Agent has shutdown. */
+		EServerTerminated
+		};
+public:
+/**
+Receives a SyncML session event. 
+
+The following table lists the meaning of the identifier and error parameters for the various event types.
+@code
+TEvent				aIdentifier		aError		aAdditionalData	
+EJobStart			ID of the new job.	KErrNone.	KUnusedAdditionalData.
+EJobStartFailed			Unused.			Reason for fail.	KUnusedAdditionalData.
+EJobStop			ID of the job.		Completion code.	KUnusedAdditionalData.
+EJobRejected			Unused.			Reason for rejection.	KUnusedAdditionalData.
+EProfileCreated			ID of the profile.	Unused.	The usage type( either ESmlDataSync or ESmlDevMan) or an error code.
+EProfileChanged			ID of the profile.	Unused.	The usage type( either ESmlDataSync or ESmlDevMan) or an error code.
+EProfileDeleted			ID of the profile.	Unused.	KUnusedAdditionalData.
+ETransportTimeout		ID of the transport.	KErrTimedOut.	KUnusedAdditionalData.
+EServerSuspended		Non-zero if the server	KErrNone when entering. When exiting,  
+				is entering suspended 	any error encountered when reloading data.	KUnusedAdditionalData.
+				state, zero on exiting.			
+EServerTerminated		Unused.			KErrServerTerminated.	KUnusedAdditionalData.
+@endcode
+
+@param				 aEvent				 Event type.
+@param				 aIdentifier		 When the event relates to an object with an ID (job or profile), the ID.
+@param				 aError				 When the event relates to an error, the error code.
+@param				 aAdditionalData	 The value of this parameter can be:
+										 KUnusedAdditionalData if additional data are unavailable,
+										 ESmlDataSync if the event is generated during a Data Sync session,
+										 ESmlDevMan if the event is generated during a Device Management session
+*/
+	virtual void OnSyncMLSessionEvent(TEvent aEvent, TInt aIdentifier, TInt aError, TInt aAdditionalData) = 0;
+	};
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////////////////////////////
+// MSyncMLProgressObserver
+///////////////////////////////////////////////////////////////////////////////
+/** 
+	Interface to receive notifications of SyncML synchronisation progress events. 
+	
+	Notifications are requested through RSyncMLSession::RequestProgressL().
+	@publishedAll
+	@released
+*/
+class MSyncMLProgressObserver
+	{
+public:
+	/** SyncML synchronisation progress events. */
+	enum TStatus
+		{
+		/** Connecting to a SyncML server. */
+		ESmlConnecting,
+		/** Connected to a SyncML server. */
+		ESmlConnected,
+		/** Logging on to a SyncML server. */
+		ESmlLoggingOn,
+		/** Logged on to a SyncML server. */
+		ESmlLoggedOn,
+		/** Disconnected from a SyncML server. */
+		ESmlDisconnected,
+		/** Synchronisation has completed. */
+		ESmlCompleted,
+#ifdef SYNCML_V3
+		/** Sending modifications to a SyncML server. DS only */
+		ESmlSendingModificationsToServer,
+		/** Receiving modifications from a SyncML server. DS only */
+		ESmlReceivingModificationsFromServer,
+		/** Sending mappings to a SyncML server. DS only */
+		ESmlSendingMappingsToServer,
+		/** Processing commands from a SyncML server. DM only*/
+		ESmlProcessingServerCommands,
+		/** Receiving commands from a SyncML server. DM only*/
+		ESmlReceivingServerCommands,
+#else // SYNCML_V3
+		/** Sending data to a SyncML server.  */
+		ESmlSendingData,
+		/** Receiving data from a SyncML server. */
+		ESmlReceivingData
+#endif // SYNCML_V3
+		};
+	/** SyncML error levels. */
+	enum TErrorLevel
+		{
+		/** Warning. A non-fatal error has occurred. Synchronisation continues.*/
+		ESmlWarning,
+		/** Fatal error. A fatal error has occurred. The synchronisation is stopped. */
+		ESmlFatalError
+		};
+
+#ifdef SYNCML_V3
+	/** Container class for number of items added, replaced, moved, deleted and failed. */
+	class TSyncMLDataSyncModifications
+		{
+	public:
+		TInt iNumAdded;
+		TInt iNumReplaced;
+		TInt iNumMoved;
+		TInt iNumDeleted;
+		TInt iNumFailed;
+		};
+#endif // SYNCML_V3
+
+public:
+
+	/**
+	Receives notification of a synchronisation error.
+
+	@param aErrorLevel	The error level.
+	@param aError		The type of error. This is one of the SyncMLError error values.	
+	@param aTaskId		The ID of the task for which the error occurred.
+	@param aInfo1		An integer that can contain additional information about the error. Normally 0.
+	@param aInfo2		An integer that can contain additional information about the error. Normally 0.
+	*/
+	virtual void OnSyncMLSyncError(TErrorLevel aErrorLevel, TInt aError, TInt aTaskId, TInt aInfo1, TInt aInfo2)= 0 ;
+
+	/**
+	Receives notification of synchronisation progress.
+	
+	@param aStatus	The current status, e.g. 'Connecting'.	
+	@param aInfo1	An integer that can contain additional information about the progress.
+	@param aInfo2	An integer that can contain additional information about the progress.
+	*/
+	virtual void OnSyncMLSyncProgress(TStatus aStatus, TInt aInfo1, TInt aInfo2)= 0;
+#ifdef SYNCML_V3
+	/**
+	Receives notification of modifications to synchronisation tasks.
+
+	@param aTaskId					The ID of the task.
+	@param aClientModifications		Modifications made on the clients Data Store.
+	@param aServerModifications		Modifications made on the server Data Store.
+	*/
+	virtual void OnSyncMLDataSyncModifications(TInt aTaskId,
+									const TSyncMLDataSyncModifications& aClientModifications,
+									const TSyncMLDataSyncModifications& aServerModifications)= 0;
+#else // SYNCML_V3
+	/**
+	Receives notification of modifications to synchronisation tasks.
+
+	@param aTaskId			The ID of the task.
+	@param aNumAdded		Number of items added.
+	@param aNumReplaced		Number of items replaced.
+	@param aNumDeleted		Number of items deleted.
+	*/
+	virtual void OnSyncMLDataSyncModifications(TInt aTaskId, TInt aNumAdded, TInt aNumReplaced, TInt aNumDeleted)= 0;
+#endif // SYNCML_V3
+
+	};
+
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+#endif