diff -r 000000000000 -r b497e44ab2fc syncmlfw/common/sosserver_clientapi/inc/NSmlClientAPIUtils.h --- /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 +#include +#include +#include +#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& 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* 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 iParams; + TSmlJobId iJobId; + }; + + +// +// data for ds sync jobs +// +class CDataSyncJobSessionData : public CJobBaseSessionData + { + public: + CDataSyncJobSessionData(); + virtual ~CDataSyncJobSessionData(); + virtual void InternalizeL( RReadStream& aStream ); + + inline const RArray& TaskIds() const; + void SetTasksL( const RArray& aTasks ); + + private: + RArray 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& FilterArray(); + void CopyTaskSupportedFiltersL( RPointerArray& 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 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 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 iDataStores; // default store is the first + RPointerArray iMimeTypes; + RPointerArray iMimeVersions; + TSmlProtocolVersion iRequiredProtocolVersion; + TSmlDataProviderId iId; + TVersion iVersion; + HBufC* iDisplayName; + TBool iAllowMultipleDataStores; + }; + + +#include "NSmlClientAPIUtils.inl" + +#endif // __CLIENTAPIUTILS_H__ + +