syncmlfw/common/sosserver_clientapi/inc/NSmlClientAPIUtils.h
changeset 0 b497e44ab2fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/common/sosserver_clientapi/inc/NSmlClientAPIUtils.h	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,437 @@
+/*
+* Copyright (c) 2004 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: 
+*		Declaration file for client API's utilities
+*
+*/
+
+
+#ifndef __CLIENTAPIUTILS_H__
+#define __CLIENTAPIUTILS_H__
+
+#include <e32std.h>
+#include <SyncMLDef.h>
+#include <SyncMLClient.h>
+#include <SyncMLDataFilter.h>
+#include "NSmlHistoryArray.h"
+#include "NSmlTransportHandler.h"
+
+//
+// class for reacting to feature support
+//
+class NSmlClientAPIFeatureHandler
+	{
+	public:
+		static void LeaveIfDataSyncNotSupportedL();
+		static void LeaveIfDevManNotSupportedL();
+		static void LeaveIfUsageTypeNotSupportedL( TSmlUsageType aUsageType );
+	
+	private:
+		NSmlClientAPIFeatureHandler(); // instantiation prohibited
+	};
+
+//
+// base class for session data
+//
+class CClientSessionData : public CBase
+	{
+	public:
+		CClientSessionData();
+		virtual ~CClientSessionData();
+		virtual void InternalizeL( RReadStream& aStream );
+		virtual void ExternalizeL( RWriteStream& aStream ) const;		
+
+		void ReadIntegersToArrayL( RArray<TInt>& aArray ); // from buffer to array
+		
+		void SetBufferSizeL( TInt aSize = -1 );			
+		void ClearDataBuffer();			
+		TPtr8& DataBufferPtr();
+		CBufBase& DataBuffer();
+		static void PanicIfAlreadyCreated( CClientSessionData* aPtr );
+
+	private:
+		CBufBase* iBuffer;
+		TPtr8	iDataPtr;
+	};
+
+
+//
+// data for history log
+//
+class CHistoryLogSessionData : public CClientSessionData
+	{
+	public:
+		static CHistoryLogSessionData* NewL();
+		static CHistoryLogSessionData* NewLC();
+		virtual ~CHistoryLogSessionData();
+		virtual void InternalizeL( RReadStream& aStream );
+		
+		inline CNSmlHistoryArray& History() const;
+		inline const TSmlProfileId Profile() const;
+		
+		void SetProfile( const TSmlProfileId aProfileId );
+	
+	private:
+		CHistoryLogSessionData();
+		void ConstructL();
+		
+	private:
+		CNSmlHistoryArray*	iHistoryArray;
+		TSmlProfileId 		iProfileId;
+	};
+
+
+//
+// data for all sync jobs (ds and dm)
+//
+class CJobBaseSessionData : public CClientSessionData
+	{
+	public:
+		virtual ~CJobBaseSessionData();
+		virtual void InternalizeL( RReadStream& aStream );
+		
+		void WriteIntegersToBufferL( const RArray<TInt>* aArray = NULL ); // from array to buffer
+		
+		inline TSmlJobId Identifier() const;
+		inline TSmlProfileId Profile() const;
+		
+		void AddParamL( const TInt aParam );
+		void SetIdentifier( const TSmlJobId aJobId );
+		void SetProfile( const TSmlProfileId aProfileId );
+		
+	protected:
+		CJobBaseSessionData(); // created in child classes
+	
+	private:
+		TSmlProfileId 	iProfileId;
+		RArray<TInt>	iParams;
+		TSmlJobId 		iJobId;
+	};
+
+
+//
+// data for ds sync jobs
+//
+class CDataSyncJobSessionData : public CJobBaseSessionData
+	{
+	public:
+		CDataSyncJobSessionData();
+		virtual ~CDataSyncJobSessionData();
+		virtual void InternalizeL( RReadStream& aStream );
+	
+		inline const RArray<TSmlTaskId>& TaskIds() const;
+		void SetTasksL( const RArray<TSmlTaskId>& aTasks );
+		
+	private:
+		RArray<TSmlTaskId> iTasks;
+	};
+
+
+//
+// data for dm sync jobs
+//
+class CDevManJobSessionData : public CJobBaseSessionData
+	{
+	public:
+		CDevManJobSessionData();
+		virtual ~CDevManJobSessionData();
+		virtual void InternalizeL( RReadStream& aStream );
+	};
+
+
+//
+// data for profiles
+//
+class CProfileBaseSessionData : public CClientSessionData
+	{
+	public:
+		virtual ~CProfileBaseSessionData();
+		virtual void InternalizeL( RReadStream& aStream );
+		virtual void ExternalizeL( RWriteStream& aStream ) const;		
+		
+		inline TSmlUsageType Type() const;
+		inline TBool DeleteAllowed() const;
+		inline TSmlOpenMode OpenMode() const;
+		inline const TDesC8& ServerId() const;
+		inline const TDesC8& UserName() const;
+		inline const TDesC8& Password() const;
+		inline TSmlCreatorId CreatorId() const;
+		inline TSmlProfileId Identifier() const;
+		inline const TDesC& DisplayName() const;
+		inline const TDesC8& ServerPassword() const;
+		inline TSmlServerAlertedAction SanAction() const;
+		inline TSmlProtocolVersion ProtocolVersion() const;
+		inline TBool ProfileLocked() const;
+		
+		void SetType( const TSmlUsageType aUsageType );
+		void SetCreatorId( const TSmlCreatorId aCreatorId );
+		void SetIdentifier( const TSmlProfileId aProfileId );
+		void SetDeleteAllowed( const TBool aDeleteAllowed );
+		void SetProfileLock( const TBool aProfileLocked );
+		void SetOpenMode( const TSmlOpenMode aOpenMode );
+		void SetDisplayNameL( const TDesC& aDisplayName );
+		void SetUserNameL( const TDesC8& aUserName );
+		void SetPasswordL( const TDesC8& aPassword );
+		void SetServerPasswordL( const TDesC8& aServerPassword );
+		void SetServerIdL( const TDesC8& aServerId );
+		void SetSanAction( const TSmlServerAlertedAction aSanAction );
+		void SetProtocolVersionL( const TSmlProtocolVersion aVersion );
+	
+	protected:
+		CProfileBaseSessionData(); // created in child classes
+		void BaseConstructL( TBool aInitValues );
+		void InitValuesL();
+	  void SetProfileLockL(RReadStream& aStream );
+		void GetProfileLockL(RWriteStream&aStream ) const ;
+	private:
+		TSmlServerAlertedAction	iSanAction;
+		TSmlProtocolVersion		iProtocolVersion;
+		TSmlUsageType 			iUsageType;
+		TSmlCreatorId 			iCreatorId;
+		TSmlProfileId 			iProfileId;
+		TSmlOpenMode 			iOpenMode;
+		HBufC* 					iDisplayName;
+		HBufC8*					iServerPassword;
+		HBufC8* 				iUserName;
+		HBufC8* 				iPassword;
+		HBufC8*					iServerId;
+		TBool					iDeleteAllowed;
+		TBool					iProfileLocked;
+	};
+
+
+//
+// data for data sync profiles
+//
+class CDataSyncProfileSessionData : public CProfileBaseSessionData
+	{
+	public:
+		static CDataSyncProfileSessionData* NewL( const TBool aInitValues = EFalse );
+		static CDataSyncProfileSessionData* NewLC( const TBool aInitValues = EFalse );
+		
+		virtual void InternalizeL( RReadStream& aStream );
+		virtual void ExternalizeL( RWriteStream& aStream ) const;		
+		
+		virtual ~CDataSyncProfileSessionData();
+		
+	private:
+		CDataSyncProfileSessionData();
+		void ConstructL( const TBool aInitValues );
+	};
+
+
+//
+// data for device management profiles
+//
+class CDevManProfileSessionData : public CProfileBaseSessionData
+	{
+	public:
+		static CDevManProfileSessionData* NewL( const TBool aInitValues = EFalse );
+		static CDevManProfileSessionData* NewLC( const TBool aInitValues = EFalse );
+		
+		virtual void InternalizeL( RReadStream& aStream );
+		virtual void ExternalizeL( RWriteStream& aStream ) const;		
+		
+		virtual ~CDevManProfileSessionData();
+		
+	private:
+		CDevManProfileSessionData();
+		void ConstructL( const TBool aInitValues );
+	};
+
+
+//
+// data for ds tasks
+//
+class CTaskSessionData : public CClientSessionData
+	{
+	public:
+		static CTaskSessionData* NewL( const TBool aInitValues = EFalse );
+		static CTaskSessionData* NewLC( const TBool aInitValues = EFalse );
+		virtual ~CTaskSessionData();
+		virtual void InternalizeL( RReadStream& aStream );
+		virtual void ExternalizeL( RWriteStream& aStream ) const;		
+
+		inline TBool Enabled() const;
+		inline TBool IsReadOnly() const;
+		inline TSmlTaskId Identifier() const;
+		inline TSmlProfileId Profile() const;
+		inline TSmlCreatorId CreatorId() const;
+		inline const TDesC& DisplayName() const;
+		inline TSmlSyncType DefaultSyncType() const;
+		inline const TDesC& ServerDataSource() const;
+		inline const TDesC& ClientDataSource() const;
+		inline TSmlDataProviderId DataProvider() const;
+		
+		inline TSyncMLFilterMatchType FilterMatchType() const;
+		inline TSyncMLFilterChangeInfo FilterChangeInfo() const;
+		
+		void SetEnabled( const TBool aEnabled );
+		void SetReadOnly( const TBool aReadOnly );
+		void SetIdentifier( const TSmlTaskId aTaskId );
+		void SetProfile( const TSmlProfileId aProfileId );
+		void SetCreatorId( const TSmlCreatorId aCreatorId );
+		void SetDisplayNameL( const TDesC& aDisplayName );
+		void SetDefaultSyncType( TSmlSyncType aSyncType );
+		void SetServerDataSourceL( const TDesC& aServerDataSource );
+		void SetClientDataSourceL( const TDesC& aClientDataSource );
+		void SetDataProvider( TSmlDataProviderId aDataProviderId );
+		
+		void SetFilterMatchType( TSyncMLFilterMatchType aFilterMatchType );
+		void SetTaskSupportedFiltersL( TDesC8& aData );
+		RPointerArray<CSyncMLFilter>& FilterArray();
+		void CopyTaskSupportedFiltersL( RPointerArray<CSyncMLFilter>& aFilterArray );
+		
+		inline void SetFilterBufSize( TInt aBufferSize );
+		inline TInt FilterBufSize() const;
+		TInt FilterDataSize() const;
+	private:
+		CTaskSessionData();
+		void ConstructL( const TBool aInitValues );
+		void InitValuesL();
+						
+	private:
+		TSmlDataProviderId	iDataProviderId;
+		TSmlProfileId 		iProfileId;
+		TSmlCreatorId 		iCreatorId;
+		TSmlSyncType		iDefaultSyncType;
+		TSmlTaskId 			iTaskId;
+		HBufC*				iDisplayName;
+		HBufC*				iServerDataSource;
+		HBufC*				iClientDataSource;
+		TBool				iReadOnly;
+		TBool				iEnabled;
+		
+		TSyncMLFilterMatchType iFilterMatchType;
+		TSyncMLFilterChangeInfo iFilterChangeInfo;
+		RPointerArray<CSyncMLFilter> iFilterArray;
+		
+		TInt iFilterBufSize;
+	};
+
+
+//
+// data for connection
+//
+class CConnectionSessionData : public CClientSessionData
+	{
+	public:
+		static CConnectionSessionData* NewL( const TSmlTransportId aId, const TSmlUsageType aUsageType, const TBool aInitValues = EFalse );
+		static CConnectionSessionData* NewLC( const TSmlTransportId aId, const TSmlUsageType aUsageType, const TBool aInitValues = EFalse );
+		virtual ~CConnectionSessionData();
+		virtual void InternalizeL( RReadStream& aStream );
+		virtual void ExternalizeL( RWriteStream& aStream ) const;		
+		
+		inline TUint Priority() const;
+		inline TUint RetryCount() const;
+		inline TSmlProfileId Profile() const;
+		inline TSmlOpenMode OpenMode() const;
+		inline const TDesC8& ServerURI() const;
+		inline TSmlTransportId Identifier() const;
+
+		const TDesC8& GetPropertyL( const TDesC8& aName ) const;
+		void SetPropertyL( const TDesC8& aName, const TDesC8& aValue );
+		
+		void SetPriority( const TUint aPriority );
+		void SetRetryCount( const TUint aRetryCount );
+		void SetServerURIL( const TDesC8& aServerURI );
+		void SetIdentifier( const TSmlTransportId aId );
+		void SetOpenMode( const TSmlOpenMode aOpenMode );
+		void SetProfile( const TSmlProfileId aProfileId );
+
+	private:
+		TInt FindL( const TDesC8& aName ) const;
+		void InitValuesL();
+		
+		void ConstructL( const TBool aInitValues, const TSmlUsageType aUsageType );
+		CConnectionSessionData( const TSmlTransportId aId );
+		
+	private:
+		CNSmlTransportHandler*	iHandler;
+		RPointerArray<HBufC8>	iPropVals;
+		TSmlTransportId 		iId;
+		TSmlProfileId 			iProfileId;
+		TSmlOpenMode 			iOpenMode;
+		HBufC8* 				iServerURI;
+		TUint 					iPriority;
+		TUint 					iRetryCount;
+	};
+	
+	
+//
+// data for transport
+//
+class CTransportSessionData : public CClientSessionData
+	{
+	public:
+		static CTransportSessionData* NewL( const TSmlTransportId aId, const TSmlUsageType aUsageType );
+		virtual ~CTransportSessionData();
+		
+		inline const TDesC& DisplayName() const;
+		inline TSmlTransportId Identifier() const;
+		inline const CSyncMLTransportPropertiesArray& Properties() const;
+		
+		void SetIdentifier( const TSmlTransportId aId );
+		
+	private:
+		void ConstructL( const TSmlUsageType aUsageType );
+		CTransportSessionData( const TSmlTransportId aId );
+		
+	private:
+		CNSmlTransportHandler*	iHandler;
+		TSmlTransportId			iId;
+	};
+
+
+//
+// data for data provider
+//
+class CDataProviderSessionData : public CClientSessionData
+	{
+	public:
+		CDataProviderSessionData();
+		virtual ~CDataProviderSessionData();
+		virtual void InternalizeL( RReadStream& aStream );
+		
+		inline TSmlDataProviderId Identifier() const;
+		inline TVersion Version() const;
+		inline const TDesC& DisplayName() const;
+		inline const TInt MimeTypeCount() const;
+		inline const TDesC& MimeType( TInt aIndex ) const;
+		inline const TDesC& MimeVersion( TInt aIndex ) const;
+		inline const TDesC& DefaultDataStoreName() const;
+		inline TBool AllowsMultipleDataStores() const;
+		inline TSmlProtocolVersion RequiredProtocolVersion() const;
+		
+		void GetDataStoreNamesL( CDesCArray& aArray ) const;
+		
+		void SetIdentifier( const TSmlDataProviderId aId );
+		
+	private:
+		RPointerArray<HBufC>	iDataStores; // default store is the first
+		RPointerArray<HBufC>	iMimeTypes;
+		RPointerArray<HBufC>	iMimeVersions;
+		TSmlProtocolVersion		iRequiredProtocolVersion;
+		TSmlDataProviderId 		iId;
+		TVersion				iVersion;
+		HBufC* 					iDisplayName;
+		TBool 					iAllowMultipleDataStores;
+	};
+
+	
+#include "NSmlClientAPIUtils.inl"
+
+#endif      // __CLIENTAPIUTILS_H__
+            
+