syncmlfw/dm/syncagent/inc/NSmlDMAgent.h
changeset 0 b497e44ab2fc
child 25 b183ec05bd8c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/dm/syncagent/inc/NSmlDMAgent.h	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,286 @@
+/*
+* 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 __NSMLDMAGENT_H
+#define __NSMLDMAGENT_H
+
+// INCLUDES
+#include <e32base.h>
+#include "NSmlAgentBase.h"
+
+#include "SyncMLNotifierParams.h"
+#include "NSmlPrivateAPI.h"
+#include <DevManInternalCRKeys.h>
+
+// FORWARD DECLARATIONS
+class MSyncMLProgressObserver;
+class CNSmlDmModule;
+class CSyncMLHistoryJob;
+class CNSmlURI;
+// FOTA
+class CNSmlDMGenericAlert;
+// FOTA end
+class CNSmlAgentNotifierObserver;
+
+
+// CLASS DECLARATION
+
+/**
+*  CNSmlDMAgent implements DM session flow logic   
+*  
+*/
+class CNSmlDMAgent:public CNSmlAgentBase
+	{
+    public:  // Constructors and destructor
+        
+    static CNSmlDMAgent* NewL( MSyncMLProgressObserver* aObserver = NULL );
+    virtual ~CNSmlDMAgent();       //from CBase
+
+    public: // New functions
+     
+    virtual void Configure( TRequestStatus& aStatus, TInt aSettingsID,TInt aTransportId, TNSmlSyncInitiation aSyncInitiation=EClientInitiated, TInt aIapId=KErrNotFound );
+	// FOTA
+	/**
+	* Appends a Generic Alert to the internal list. 
+	* The alert itself is sent in the later phase of the dm session.
+	* @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.
+	*/
+	virtual void SetGenericAlertL ( const TDesC8& aFwMgmtUri, const TDesC8& aMetaType, const TDesC8& aMetaFormat, TInt aFinalResult, const TDesC8& aFwCorrelator );
+	// FOTA end
+		virtual void SetGenericAlertL ( const TDesC8& aCorrelator, const RArray<CNSmlDMAlertItem>& aItemList  );
+	
+	private: // new functions
+	
+	CNSmlDMAgent();
+	CNSmlDMAgent( const CNSmlDMAgent& aOther );
+	CNSmlDMAgent& operator=( const CNSmlDMAgent& aOther );
+    void ConstructL( MSyncMLProgressObserver* aObserver );
+	TBool SupportedAlert( const TDesC8& aAlertCode ) const;
+	void ServerModificationsStateL();   
+	void ServerModGetCmdStateL( SmlGet_t* aContent );
+	void ServerModStartAtomicStateL( SmlAtomic_t* aContent );
+	void ServerModEndAtomicStateL();
+	void ServerModStartSequenceStateL( SmlSequence_t* aContent );
+	void ServerModEndSequenceStateL();
+	// Finishing state functions 
+	void FinishingStateL();                       
+	//  Trigger message parsing 
+	// Read SyncML DM settings
+	void ReadSettingsL();                                
+	//  Sync Log Initiation 
+	void InitSyncLogL();  
+	// Read/Update session ID
+	TInt GetSessionIDL();                                 
+	void UpdateSessionIDL( TInt aSessionIDL );      
+	// Finish
+	void FinishL();      
+	// 
+	TBool InterruptedImmediately();                                  
+	//
+
+	private: // Functions from base classes
+	//
+	// Parser callbacks 
+	//
+	Ret_t smlAlertCmdFuncL( SmlAlertPtr_t aContent);          //from MWBXMLSyncMLCallbacks   
+	Ret_t smlExecCmdFuncL( SmlExecPtr_t aContent );
+	Ret_t smlCopyCmdFuncL( SmlCopyPtr_t aContent );
+	Ret_t smlGetCmdFuncL( SmlGetPtr_t aContent );             //from MWBXMLSyncMLCallbacks            
+	Ret_t smlPutCmdFuncL( SmlPutPtr_t aContent );             //from MWBXMLSyncMLCallbacks  
+	Ret_t smlResultsCmdFuncL( SmlResultsPtr_t aContent );     //from MWBXMLSyncMLCallbacks 
+	Ret_t smlStatusCmdFuncL( SmlStatusPtr_t aContent );       //from MWBXMLSyncMLCallbacks   
+	Ret_t smlStartMessageFuncL( SmlSyncHdrPtr_t aContent );   //from MWBXMLSyncMLCallbacks   
+	Ret_t smlEndMessageFuncL( Boolean_t final );              //from MWBXMLSyncMLCallbacks
+	Ret_t smlStartSyncFuncL( SmlSyncPtr_t aContent );         //from MWBXMLSyncMLCallbacks 
+	Ret_t smlEndSyncFuncL();                                  //from MWBXMLSyncMLCallbacks
+	Ret_t smlStartAtomicFuncL( SmlAtomicPtr_t aContent );     //from MWBXMLSyncMLCallbacks
+	Ret_t smlEndAtomicFuncL();                                //from MWBXMLSyncMLCallbacks 
+	Ret_t smlStartSequenceFuncL( SmlSequencePtr_t aContent ); //from MWBXMLSyncMLCallbacks
+	Ret_t smlEndSequenceFuncL();                              //from MWBXMLSyncMLCallbacks		
+	//
+	// Main state functions 
+	//
+	void NavigateMainStateL();     //from CNSmlAgentBase
+	void NextMainStateL();          //from CNSmlAgentBase
+	void InitialiseSubStates();    //from CNSmlAgentBase
+	//
+	// Beginning state functions 
+	//
+	void BeginStateL();             //from CNSmlAgentBase
+	//				
+	// Client Initialisation state functions 
+	//
+	void InitStartingMessageStateL();  //from CNSmlAgentBase
+	void InitAlertingStateL();         //from CNSmlAgentBase
+	void InitDeviceInfoStateL();       //from CNSmlAgentBase
+	
+	//
+	// Server Modifications state functions 
+	//
+	void ServerModUpdatesStateL( const TDesC8& aCmd, SmlGenericCmd_t* aContent ); //from CNSmlAgentBase
+	// FOTA
+	/**
+	* Issues a process request for the arrived exec command.
+	* @param aContent. The exec command structure, accordant with the dtd.
+	*/		
+	void ServerModUpdatesStateL( SmlExec_t* aContent );
+	// FOTA end	
+	
+	//
+	// Data Update Status state functions
+	//
+	void DataUpdateStatusStartingMessageStateL(); //from CNSmlAgentBase  
+    void DataUpdateStatusMakingResultsStateL();   //from CNSmlAgentBase
+	//
+	// Nonce functions
+	//
+	HBufC* NonceL() const;                               //from CNSmlAgentBase  
+	void SetNonceL( const TDesC& aNonce ) const;         //from CNSmlAgentBase
+	// Server authentication functions                   
+	TPtrC ServerUserName() const;                        //from CNSmlAgentBase  
+	TPtrC ServerPassword() const;                        //from CNSmlAgentBase  
+	HBufC* ServerNonceAllocL()const;                     //from CNSmlAgentBase   
+	void SetServerNonceL( const TDesC& aNonce ) const;   //from CNSmlAgentBase  
+	//
+	// Sync Log functions
+	//
+	void FinalizeSyncLog();                               //from CNSmlAgentBase 
+	void FinalizeSyncLogL();                               
+	
+		//
+	void CreateSyncmlCmdsInstanceL();					  //from CNSmlAgentBase
+	//
+	void CheckCommandsAreReceivedL();                     //from CNSmlAgentBase 
+	//
+	// Authentication type 
+	//
+	void SetAuthTypeL( CNSmlAgentBase::TAuthenticationType aAuthType ) const;    //from CNSmlAgentBase 
+	CNSmlAgentBase::TAuthenticationType AuthTypeL() const; //from CNSmlAgentBase
+	
+	TBool CheckCertificateL();		
+	void UserConfirmateConnectionL();
+	void CheckForcedCertificateCheckStateL();
+	
+	//
+	// Free resources
+	//
+	void FreeResources();                                 //from CNSmlAgentBase
+	
+	//
+	// Error Handling functions
+	//
+	void FinaliseWhenErrorL();                            //from CNSmlAgentBase 
+	TBool Interrupted();                                  //from CNSmlAgentBase  
+	void Interrupt( TInt aErrorCode, TBool aImmediatelyInterruption, TBool aStatusError ); //from CNSmlAgentBase
+	void InterruptL( TInt appIndex, TInt aErrorCode, TBool aImmediatelyInterruption, TBool aStatusError ); //from CNSmlAgentBase
+	void WriteWarningL( TNSmlError::TNSmlAgentErrorCode aWarningCode );  //from CNSmlAgentBase
+	void WriteWarningL( TInt appIndex, TNSmlError::TNSmlAgentErrorCode aWarningCode ); //from CNSmlAgentBase
+	void WriteWarningL( TInt appIndex, TNSmlError::TNSmlSyncMLStatusCode aWarningCode ); //from CNSmlAgentBase
+	void CheckServerStatusCodeL( TInt aEntryID );         //from CNSmlAgentBase
+
+	public:
+	
+	
+	void SaveProfileInfoL();
+	
+	
+    private:    // Data	
+	TBool iForcedCertificateCheck;
+	CNSmlAgentNotifierObserver * iNotifierObserver;		
+	HBufC8* iDMTriggerMessage;
+	HBufC* iDMServerId;
+	HBufC* iDMServerPassword;
+	TInt iDMServerSessionId;
+	HBufC8* iDMServerDigest;
+	TBool iDMInterrupted;
+	TBool iDMImmediatelyInterruption;
+	// FOTA
+	RPointerArray<CNSmlDMGenericAlert> iGenAlerts;
+	TBool iResetGenAlerts;
+	TBool iResetUserInitAlert;
+	// FOTA end	
+	//
+	// Used classes
+	//
+	MSyncMLProgressObserver* iDMObserver;
+	//
+	// Owned classes
+	//
+    //IapId sent by sosserver if client wants this iap for this dm session
+	TInt iNewIapId;
+	};
+	
+	
+IMPORT_C CNSmlDMAgent* CreateDMAgentL( MSyncMLProgressObserver* aDMObserver );
+typedef CNSmlDMAgent* (*TNSmlCreateDMAgentFunc) ( MSyncMLProgressObserver* aDMObserver );
+
+/**
+* CNSmlNotifierTimeOut class
+* 
+*/
+
+class CNSmlAgentNotifierTimeOut : public CActive
+	{
+	public:
+		CNSmlAgentNotifierTimeOut();
+		~CNSmlAgentNotifierTimeOut();
+		void LaunchNotifierTimer( CNSmlAgentNotifierObserver*  aObserver );
+	protected:
+		void DoCancel();
+		void RunL();
+	private:
+		CNSmlAgentNotifierObserver* iObserver;
+		RTimer iTimeOutTimer;
+	};
+	
+/**
+* CNSmlNotifierObserver class
+* 
+*/
+class CNSmlAgentNotifierObserver : public CActive
+	{
+	public:
+		CNSmlAgentNotifierObserver( TRequestStatus& aStatus, TInt aCreatorId );
+		~CNSmlAgentNotifierObserver();
+		void ConnectToNotifierL( CNSmlAgentBase * aNSmlAgentBase);
+		void NotifierTimeOut();
+	protected:
+		void DoCancel();
+		void RunL();
+	private:
+		TRequestStatus& iCallerStatus;
+		
+		RNotifier iNotifier;
+		TSyncMLAppLaunchNotifRetValPckg iResBuf;
+	
+		TInt& iCreatorId;
+		CNSmlAgentNotifierTimeOut iNotifierTimeOut;
+		TBool iTimeOut;
+		CNSmlAgentBase * iNSmlAgentBase;
+	};
+	
+
+#endif      // __NSMLDMAGENT_H
+            
+// End of File