--- /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 <e32base.h>
+// FOTA
+#include <centralrepository.h>
+// FOTA end
+#include <nsmldmmodule.h>
+#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<CNSmlDMAlertItem>& 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