diff -r 7b872347d83b -r 6d0b9f605b61 callcontinuity/nsmldmvccadapter/inc/nsmldmvccadapter.h --- a/callcontinuity/nsmldmvccadapter/inc/nsmldmvccadapter.h Tue Feb 02 00:05:57 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,530 +0,0 @@ -/* -* Copyright (c) 2007 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: DM Adapter class definition -* -*/ - - - -#ifndef C_NSMLDMVCCADAPTER_H -#define C_NSMLDMVCCADAPTER_H - - -#include -#include - -#include "vccunittesting.h" - -class CVccSPSettings; - -/** - * The main class of the OMA PoC DM adapter. - * Handles requests of fetching and updating settings sets and settings items. - * - * @lib nsmldmvccadapter.dll - * @since S60 ?S60_version - */ -class CNSmlDmVCCAdapter : public CSmlDmAdapter - { -public: - - /** - * Two-phased constructor. - * - * @since S60 3.2 - * @param aDmCallback The pointer to callback to return results and - * status to codes for completed commands to the - * DM framework. The interface also has - * functionality for mapping LUIDs and fetching - * from other parts of the DM Tree. - * @return A pointer to the newly created object. - */ - static CNSmlDmVCCAdapter* NewL( MSmlDmCallback* aDmCallback ); - - /** - * Two-phased constructor. - * - * @since S60 3.2 - * @param aDmCallback The pointer to callback to return results and - * status to codes for completed commands to the - * DM framework. The interface also has - * functionality for mapping LUIDs and fetching - * from other parts of the DM Tree. - * @return A pointer to the newly created object. - */ - static CNSmlDmVCCAdapter* NewLC( MSmlDmCallback* aDmCallback ); - - /** - * Destructor. - */ - virtual ~CNSmlDmVCCAdapter(); - -//from base class MSmlDmAdapter - - /** - * From MSmlDmAdapter. - * Returns current version of the DDF. - * This function is always called after DDFStructureL. - * - * @since S60 3.2 - * @param aVersion DDF version of the adapter. - */ - void DDFVersionL( CBufBase& aVersion ); - - /** - * From MSmlDmAdapter. - * Fills the DDF structure of the adapter. The adapter starts to - * fill the data structure by calling AddChildObjectL to the root - * object and so describes the DDF of the adapter. - * - * @since S60 3.2 - * @param aDDFObject Reference to the root object. - */ - void DDFStructureL( MSmlDmDDFObject& aDDF ); - - /** - * From MSmlDmAdapter. - * Creates new leaf objects, or replaces data in existing - * leaf objects. The information about the success of the command - * should be returned by calling SetStatusL function of MSmlDmCallback - * callback interface. This makes it possible to buffer the commands. - * However, all the status codes for buffered commands must be returned - * at the latest when the adapter's CompleteOutstandingCmdsL() is - * called. - * - * @since S60 3.2 - * @param aURI URI of the object - * @param aLUID LUID of the object (if the adapter has earlier - * returned a LUID to the DM Module). For new - * objects, this is the LUID inherited through the - * parent node. - * @param aObject Data of the object. - * @param aType MIME type of the object - * @param aStatusRef Reference to correct command, i.e. this reference - * must be used when calling the SetStatusL of this - * command - */ - void UpdateLeafObjectL( const TDesC8& aURI, - const TDesC8& aLUID, - const TDesC8& aObject, - const TDesC8& aType, - TInt aStatusRef ); - - /** - * From MSmlDmAdapter. - * The function creates new leaf objects, or replaces data in existing - * leaf objects, in the case where data is large enough to be streamed. - * SetStatusL function of MSmlDmCallback callback interface should be - * called to inform about the success of the command. This makes it - * possible to buffer the commands. All the status codes for buffered - * commands must be returned at the latest - * when the CompleteOutstandingCmdsL() of adapter is called. - * - * @since S60 3.2 - * @param aURI URI of the object - * @param aLUID LUID of the object (if the adapter has earlier - * returned a LUID to the DM Module). - * For new objects, this is the LUID inherited - * through the parent node. - * @param aStream Data of the object. Adapter should create write - * stream and return, when data is written to stream - * by DM agent, StreamCommittedL() is called by DM - * engine - * @param aType MIME type of the object - * @param aStatusRef Reference to correct command, i.e. this reference - * must be used when calling the SetStatusL of this - * command. - */ - void UpdateLeafObjectL( const TDesC8& aURI, - const TDesC8& aLUID, - RWriteStream*& aStream, - const TDesC8& aType, - TInt aStatusRef ); - - /** - * From MSmlDmAdapter. - * Deletes an object and its child objects. The information about the - * success of the command should be returned by calling SetStatusL - * function of MSmlDmCallback callback interface. - * This makes it possible to buffer the commands. All the - * status codes for buffered commands must be returned at the latest - * when the CompleteOutstandingCmdsL() of adapter is called. - * - * @since S60 3.2 - * @param aURI URI of the object - * @param aLUID LUID of the object (if the adapter have earlier - * returned LUID to the DM Module). - * @param aStatusRef Reference to correct command, i.e. this reference - * must be used when calling the SetStatusL of this - * command. - */ - void DeleteObjectL( const TDesC8& aURI, - const TDesC8& aLUID, - TInt aStatusRef ); - - /** - * From MSmlDmAdapter. - * Fetches the data of a leaf object. The SetStatusL should be used as - * described in UpdateLeafObjectL(). The data is returned by using the - * SetResultsL function of MSmlCallback callback interface, and may be - * streamed. - * - * @since S60 3.2 - * @param aURI URI of the object - * @param aLUID LUID of the object (if the adapter have - * earlier returned LUID to the DM Module). - * @param aType MIME type of the object - * @param aResultsRef Reference to correct results, i.e. this - * reference must be used when returning the - * result by calling the SetResultsL. - * @param aStatusRef Reference to correct command, i.e. this - * reference must be used when calling the - * SetStatusL of this command. - */ - void FetchLeafObjectL( const TDesC8& aURI, - const TDesC8& aLUID, - const TDesC8& aType, - TInt aResultsRef, - TInt aStatusRef ); - - /** - * From MSmlDmAdapter. - * The function fetches the size of the data of a leaf object. The size - * is in bytes, and must reflect the number of bytes that will be - * transferred when the framework calls FetchLeafObjectL. The - * SetStatusL should be used as described in FetchLeafObjectL(). The - * size value is returned by using the SetResultsL function of - * MSmlCallback callback interface, and must be a decimal integer - * expressed as a string, eg. "1234". Results from this call MUST NOT - * be streamed. - * - * @since S60 3.2 - * @param aURI URI of the object - * @param aLUID LUID of the object (if the adapter have - * earlier returned LUID to the DM Module). - * @param aType MIME type of the object - * @param aResultsRef Reference to correct results, i.e. this - * reference must be used when returning the - * result by calling the SetResultsL. - * @param aStatusRef Reference to correct command, i.e. this - * reference must be used when calling the - * SetStatusL of this command. - */ - void FetchLeafObjectSizeL( const TDesC8& aURI, - const TDesC8& aLUID, - const TDesC8& aType, - TInt aResultsRef, - TInt aStatusRef ); - /** - * From MSmlDmAdapter. - * Fetches URI list. The adapter returns the list of URI segments under - * the given URI be separated by slash ("/"). The URI segment names for - * new objects must be given by the adapter. The list is returned by - * calling the SetResultsL function of MSmlCallback callback interface. - * Results from this call MUST NOT be streamed. - * - * @since S60 3.2 - * @param aParentURI URI of the parent object - * @param aParentLUID LUID of the parent object (if the - * adapter have earlier returned LUID - * to the DM Module). - * @param aPreviousURISegmentList URI list with mapping LUID - * information, which is known by DM - * engine. An adapter can use this - * information when verifying if old - * objects still exists. An adapter also - * knows what objects are new to DM - * engine and can provide LUID mapping - * for them. aPreviousURISegmentList - * parameter (see above) helps to - * recognise new objects. - * @param aResultsRef Reference to correct results, i.e. - * this reference must be used when - * returning the result by calling the - * SetResultsL. - * @param aStatusRef Reference to correct command, i.e. - * this reference must be used when - * calling the SetStatusL of this - * command. - */ - void ChildURIListL( const TDesC8& aURI, - const TDesC8& aLUID, - const CArrayFix& aPreviousURISegmentList, - TInt aResultsRef, - TInt aStatusRef ); - - /** - * From MSmlDmAdapter. - * The function adds node object. In some cases an implementation of - * the function may be empty function, if the node object does not need - * concrete database update. Still this function may be helpful to an - * adapter, i.e. in passing mapping LUID of the node to DM Module. The - * SetStatusL should be used as described in UpdateLeafObjectL(). - * - * @since S60 3.2 - * @param aURI URI of the object - * @param aParentLUID LUID of the parent object (if the adapter have - * earlier returned LUID to the DM Module). - * @param aStatusRef Reference to correct command, i.e. this - * reference must be used when calling the - * SetStatusL of this command. - */ - void AddNodeObjectL( const TDesC8& aURI, - const TDesC8& aParentLUID, - TInt aStatusRef ); - - /** - * From MSmlDmAdapter. - * The function implements execute command. The information about the - * success of the command should be returned by calling SetStatusL - * function of MSmlDmCallback callback interface. This makes it - * possible to buffer the commands. However, all the status codes for - * buffered commands must be returned at the latest when the - * CompleteOutstandingCmdsL() of adapter is called. - * - * @since S60 3.2 - * @param aURI URI of the command - * @param aLUID LUID of the object (if the adapter have - * earlier returned LUID to the DM Module). - * @param aArgument Argument for the command - * @param aType MIME type of the object - * @param aStatusRef Reference to correct command, i.e. this - * reference must be used when calling the - * SetStatusL of this command. - */ - void ExecuteCommandL( const TDesC8& aURI, - const TDesC8& aLUID, - const TDesC8& aArgument, - const TDesC8& aType, - TInt aStatusRef ); - - /** - * From MSmlDmAdapter. - * The function implements execute command. The information about the - * success of the command should be returned by calling SetStatusL - * function of MSmlDmCallback callback interface. This makes it - * possible to buffer the commands. - * However, all the status codes for buffered commands must be returned - * at the latest when the CompleteOutstandingCmdsL() of adapter is - * called. - * - * @since S60 3.2 - * @param aURI URI of the command - * @param aLUID LUID of the object (if the adapter have - * earlier returned LUID to the DM Module). - * @param aStream Argument for the command. Adapter should - * create write stream and return, when data is - * written to stream by DM agent,StreamCommittedL - * is called by DM engine - * @param aType MIME type of the object - * @param aStatusRef Reference to correct command, i.e. this - * reference must be used when calling the - * SetStatusL of this command. - */ - void ExecuteCommandL( const TDesC8& aURI, - const TDesC8& aLUID, - RWriteStream*& aStream, - const TDesC8& aType, - TInt aStatusRef ); - - /** - * From MSmlDmAdapter. - * The function implements copy command. The information about the - * success of the command should be returned by calling SetStatusL - * function of MSmlDmCallback callback interface. This makes it - * possible to buffer the commands. - * However, all the status codes for buffered commands must be returned - * at the latest when the CompleteOutstandingCmdsL() of adapter is - * called. - * - * @since S60 3.2 - * @param aTargetURI Target URI for the command - * @param aSourceLUID LUID of the target object (if one exists, and - * if the adapter has earlier returned a LUID to - * the DM Module). - * @param aSourceURI Source URI for the command - * @param aSourceLUID LUID of the source object (if the adapter has - * earlier returned a LUID to the DM Module). - * @param aType MIME type of the objects - * @param aStatusRef Reference to correct command, i.e. this - * reference must be used when calling the - * SetStatusL of this command. - */ - void CopyCommandL( const TDesC8& aTargetURI, - const TDesC8& aTargetLUID, - const TDesC8& aSourceURI, - const TDesC8& aSourceLUID, - const TDesC8& aType, - TInt aStatusRef ); - - /** - * From MSmlDmAdapter. - * The function indicates start of Atomic command. - * - * @since S60 3.2 - */ - void StartAtomicL(); - - /** - * From MSmlDmAdapter. - * The function indicates successful end of Atomic command. The adapter - * should commit all changes issued between StartAtomicL and - * CommitAtomicL - * - * @since S60 3.2 - */ - void CommitAtomicL(); - - /** - * From MSmlDmAdapter. - * The function indicates unsuccessful end of Atomic command. The - * adapter should rollback all changes issued between StartAtomicL() - * and RollbackAtomicL(). If rollback fails for a command, adapter - * should use SetStatusL() to indicate it. - * - * @since S60 3.2 - */ - void RollbackAtomicL(); - - /** - * From MSmlDmAdapter. - * Returns ETrue if adapter supports streaming otherwise EFalse. - * - * @since S60 3.2 - * @param aItemSize size limit for stream usage - * @return TBool ETrue for streaming support - */ - TBool StreamingSupport( TInt& aItemSize ); - - /** - * From MSmlDmAdapter. - * Called when stream returned from UpdateLeafObjectL or - * ExecuteCommandL has been written to and committed. Not called when - * fetching item. - * - * @since S60 3.2 - */ - void StreamCommittedL(); - - /** - * From MSmlDmAdapter. - * The function tells the adapter that all the commands of the message - * that can be passed to the adapter have now been passed. This - * indciates that the adapter must supply status codes and results to - * any buffered commands. This must be done at latest by the time this - * function returns. This function is used at the end of SyncML - * messages, and during processing of Atomic. In the case of Atomic - * processing, the function will be followed by a call to CommitAtomicL - * or RollbackAtomicL. - * - * @since S60 3.2 - */ - void CompleteOutstandingCmdsL(); - - /** - * Implementation for cleanup item. - * Resets and destroys array of the RCSE - * entries. - * @param anArray RPointerArray pointer. - */ - static void ResetAndDestroyEntries( TAny* anArray ); - -protected: - -private: - - /** - * Constructor. - * - * @param aEcomArguments - */ - CNSmlDmVCCAdapter( TAny* aEcomArguments ); - - /** - * Second-phase constructor. - */ - void ConstructL(); - - /** - * Gets last uri segment. - * - * @since S60 3.2 - * @param aURI Descriptor to handle - * @return integer - */ - const TPtrC8 LastURISeg( const TDesC8& aURI ); - - /** - * Gets last uri segment. - * - * @since S60 3.2 - * @param aURI Descriptor to handle - * @param aResult Object data. - * @return Error status enumeration - */ - CSmlDmAdapter::TError FetchObjectL( const TDesC8& aURI, - CBufBase& aResult ); - - /** - * Converts Utf8 to Unicode. - * - * @since S60 3.2 - * @param aSource Descriptor to handle containing UTF8 data - * @return Handle to Unicode data - */ - HBufC* ConvertToUnicodeL( const TDesC8& aSource ); - - /** - * Fetches Voip profile reference - * @param aUri Uri of the wanted object - * @param aObject The result is inserted to this buffer - * @return Error code - */ - CSmlDmAdapter::TError FetchVoipConRefL( const TDesC8& aUri, - CBufBase& aObject ); - - /** - * Updates Voip profile reference (ServiceId) - * @param aUri Uri of the wanted object - * @param aObject The result is inserted to this buffer - * @return Error code - */ - CSmlDmAdapter::TError UpdateVoipConRefL( const TDesC8& aUri, - const TDesC8& aObject); - - /** - * Removes separator from the end of URI. - * @param aURI Reference to the URI. - */ - static void RemoveLastSeparator( TPtr8& aURI ); - -private: // data - - VCC_UNITTEST( T_CNSmlDmVCCAdapter ) - - /** - * VCC SP Settings object - * own - * @see VccUtils - */ - CVccSPSettings* iVCCSettings; - - /** - * Temporary object for converting Utf8 string to Unicode - * own - */ - HBufC* iTempBuf; - }; - -#endif // C_NSMLDMVCCADAPTER_H