--- /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__
+
+