diff -r 000000000000 -r b497e44ab2fc syncmlfw/dm/syncagent/inc/NSmlDMCmds.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/dm/syncagent/inc/NSmlDMCmds.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,232 @@ +/* +* 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: SyncML DM command handling +* +*/ + + +#ifndef __NSMLDMCMDS_H +#define __NSMLDMCMDS_H + +// INCLUDES +#include +// FOTA +#include +// FOTA end +#include +#include "NSmlCmdsBase.h" +#include "nsmlagenttestdefines.h" +#ifdef __TEST_TREEMODULE +#include "nsmldmtestmodule.h" +#endif + + +// FORWARD DECLARATIONS +#ifdef __TEST_TREEMODULE +class CNSmlDmTestModule; +#else +class CNSmlDmModule; +#endif +class MSyncMLProgressObserver; + + +// CLASS DECLARATION + +/** +* CNSmlDMCmds implements DM specific SyncML commands handling +* +*/ +#ifdef __TEST_TREEMODULE +class CNSmlDMCmds : public CNSmlCmdsBase, public MNSmlDmTestModuleCallBack +#else +class CNSmlDMCmds : public CNSmlCmdsBase, public MNSmlDmModuleCallBack +#endif + { + public: // Constructors and destructor + + static CNSmlDMCmds* NewL( CNSmlAgentBase* aAgent, const TDesC8& aSessionID, const TDesC8& aVerProto, const HBufC& aSyncMLUserName, CNSmlURI* aSyncServer, const TDesC& aDMServerId, MSyncMLProgressObserver* aDMObserver ); + ~CNSmlDMCmds(); //from CBase + + private: //new functions + + void ConstructL( CNSmlAgentBase* aAgent, const TDesC8& aSessionID, const TDesC8& aVerProto, const HBufC& aSyncMLUserName, CNSmlURI* aSyncServer, const TDesC& aDMServerId, MSyncMLProgressObserver* aDMObserver ); + + CNSmlDMCmds(); + CNSmlDMCmds( const CNSmlCmdsBase& aOther ); + CNSmlDMCmds& operator=( const CNSmlDMCmds& aOther ); + + void DoDevInfoItemsL( const TDesC8& aURISegment ); + void FreeDMDevinfo(); + TInt AlertParameter ( const SmlPcdata_t* aData, const TDesC8& aParamID ) const; +//#ifdef RD_DM_TEXT_INPUT_ALERT //For User Input Server alert + TInt AlertInputTypeParameter ( const SmlPcdata_t* aData, const TDesC8& aParamID ) const; + TInt AlertEchoTypeParameter ( const SmlPcdata_t* aData, const TDesC8& aParamID ) const; + TBool CheckDRPresence( const SmlPcdata_t* aData, const TDesC8& aParamID ) const; + TPtrC8 AlertDefaultResponseParam ( const SmlPcdata_t* aData, const TDesC8& aParamID ) const; +//#endif + //singlechoice + HBufC8* AlertChoiceItemsLC( SmlItemList_t* aItemList, HBufC8*& aLengthBuf,TInt& aNumItems ) const; + void HandleAlertsL( SmlAlert_t* aAlert, TInt& aStatusId); + void HandleAlertErrorL(); + void HandleChoiceAlertsL( SmlAlert_t* aAlert, TInt& aStatusId); + void SendMultiChoiceDataToServerL(TDes8& aData,TInt& aStatusId); + void HandleConfirmationAlertL( SmlAlert_t* aAlert, TInt& aStatusId); + void HandleDisplayAlertL( SmlAlert_t* aAlert, TInt& aStatusId); + void HandleUserInputalertL( SmlAlert_t* aAlert, TInt& aStatusId); + TInt FindMaxLength(TInt aSourceLength, TInt aDestLength); + //singlechoice + HBufC8* AlertDataLC( const SmlItemList_t* aItemList ) const; + TInt InitStatusToAtomicOrSequenceL( const TDesC8& aCmd, const SmlAtomic_t* aAtomic ) const; + + private: // functions from base classes + + void DoAlertL( const TDesC8& aAlertCode, TTime* aLastSyncAnchor = NULL, TTime* aNextSyncAnchor = NULL ); //from CNSmlCmdsBase + void DoPutL(); //from CNSmlCmdsBase + CNSmlCmdsBase::TReturnValue DoResultsL(); //from CNSmlCmdsBase + void DoGetL(); //from CNSmlCmdsBase + CNSmlCmdsBase::TReturnValue DoStartSyncL(); + void DoEndSyncL(); + CNSmlCmdsBase::TReturnValue DoAddOrReplaceOrDeleteL(); //from CNSmlCmdsBase + CNSmlCmdsBase::TReturnValue DoMapL(); //from CNSmlCmdsBase + TReturnValue DoReplaceOrDeleteL(); //from CNSmlCmdsBase + void ProcessResultsCmdL( SmlResults_t* aResults ); //from CNSmlCmdsBase + void ProcessPutCmdL( SmlPut_t* aPut ); //from CNSmlCmdsBase + void ProcessGetCmdL( SmlGet_t* aGet ); //from CNSmlCmdsBase + void ProcessAlertCmdL( SmlAlert_t* aAlert, TBool aNextAlert = EFalse, TBool aServerAlert = EFalse, TBool aDisplayAlert = EFalse ); //from CNSmlCmdsBase + void ProcessSyncL( SmlSync_t* aSync ); //from CNSmlCmdsBase + void ProcessUpdatesL( const TDesC8& aCmd, SmlGenericCmd_t* aContent ); //from CNSmlCmdsBase + void ProcessAtomicL( SmlAtomic_t* aAtomic ); //from CNSmlCmdsBase + void ProcessEndAtomicL(); //from CNSmlCmdsBase + void ProcessSequenceL( SmlSequence_t* aSequence ); //from CNSmlCmdsBase + void ProcessEndSequence(); //from CNSmlCmdsBase + void ProcessEndSyncL(); //from CNSmlCmdsBase + // FOTA + /** + * Process the exec structure sent by the remote server. + * @param aExec. The exec command structure, accordant with the dtd. + */ + void ProcessExecCmdL ( SmlExec_t* aExec ); //from CNSmlCmdsBase + /** + * Makes a generic alert element (or possible many of them) + * and calls WBXML generator. + * @param aFwMgmtUri. The uri which has been used in the exe command whose final result is + * about to be reported. + * @param aMetaType. Meta/Type that should be used in the alert. + * @param aMetaFormat. Meta/Format that should be used in the alert. + * @param aFinalResult. The final result value which is reported to remote server. + * @param aCorrelator. Correlator value used in the original exec command. + */ + void DoGenericAlertL ( const TDesC8& aFwMgmtUri, const TDesC8& aMetaType, const TDesC8& aMetaFormat, TInt aFinalResult, const TDesC8& aFwCorrelator ); //from CNSmlCmdsBase + void DoGenericAlertL ( const TDesC8& aCorrelator, const RArray& aItemList ); //from CNSmlCmdsBase + /** + * Makes a generic user alert element, if the update request is set to the + * central repository by the FOTA UI. + * @param aProfileId. The profile id of the current dm session. + * @return TBool. ETrue if the alert was generated, otherwise EFalse. + */ + TBool DoGenericUserAlertL ( TInt aProfileId ); //from CNSmlCmdsBase + /** + * Resets the update request in the central repository by + * writing '-1' value. + */ + void ResetGenericUserAlertL(); //from CNSmlCmdsBase + /** + * When the generic alerts are successfully sent to the remote + * server, the FOTA adapter needs to be informed about this. + * This command is chained through the DM engine. + */ + void MarkGenAlertsSentL(); //from CNSmlCmdsBase + void MarkGenAlertsSentL(const TDesC8& aURI) ; + /** + * Closes the connections to callback server and host servers. + * Separate function is needed, since the disconnecting cannot + * be made after the active scheduler of the thread is stopped. + */ + void DisconnectFromOtherServers(); //from CNSmlCmdsBase + // FOTA end + void DoEndMessageL( TBool aFinal ); //from CNSmlCmdsBase + void EndOfServerMessageL() const; //from CNSmlCmdsBase + + void SetResultsL( TInt aResultsRef, const CBufBase& aObject, const TDesC8& aType, const TDesC8& aFormat, TInt aTotalSize); //from MNSmlDmModuleCallBack + void SetStatusL( TInt aStatusRef, TInt aStatusCode ); //from MNSmlDmModuleCallBack + + TNSmlError::TNSmlSyncMLStatusCode GetChunkL(TDesC8& aLargeUri, const SmlItem_t* aCurrentItem, const SmlPcdata_t* aMetaInCommand, CBufBase*& aBuffer, TInt& aTotSizeOfLarge ); + + /** + * Updates the error code for the session,if any + * @param aItem: pointer to sml elements + * @param aStatusCode: holds the error code + * @return aNone + */ + void UpdateErrorStatusCode(SmlItem_t* aItem,TNSmlError::TNSmlSyncMLStatusCode& aStatusCode); + + // + private: // Data + struct TDMDevInfo + { + SmlItemList_t** iItemListPtr; + HBufC8* iFormat; + HBufC8* iType; + HBufC8* iObject; + TBool iFirst; + TBool iResults; + }; + + // DM server ID + HBufC* iDMServerId; + // Atomic transaction is on. + TBool iDMAtomic; + // ID of Atomic command + TInt iDMAtomicID; + // Sequence is on + TBool iDMSequence; + // ID of Sequence + TInt iDMSequenceID; + // Atomic or Sequence is interrupted by an user + TBool iDMNotExecuted; + // Struct for DevInfo item + TDMDevInfo* iDMDevInfo; + // Switch for Callback results handling + TBool iDMDevInfoResults; + // Switch for Out of Disk message + TBool iDMDeviceFullWritten; + // used classes + MSyncMLProgressObserver* iDMObserver; + + HBufC8* iLargeObjectUri; +// TBool iMoreDataForResults; + TInt iLargeObjectTotalSize; + TInt iBytesSent; + + // FOTA + CRepository* iRepository; + // FOTA end + + // owned classes +#ifdef __TEST_TREEMODULE + CNSmlDmTestModule* iDMModule; +#else + CNSmlDmModule* iDMModule; +#endif + + /** + * Handle to chunk that is used to transfer data between client and server + */ + RChunk iChunk; + + }; + +#endif // __NSMLDMCMDS_H + +// End of File