--- /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