diff -r 000000000000 -r b497e44ab2fc syncmlfw/common/syncagent/inc/NSmlAgentBase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/common/syncagent/inc/NSmlAgentBase.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,474 @@ +/* +* 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: Base class in Commmon Agent +* +*/ + + +#ifndef __NSMLAGENTBASE_H__ +#define __NSMLAGENTBASE_H__ + +#include +#include +#include "WBXMLSyncMLParser.h" +#include "nsmlerror.h" +#include "nsmlagenttestdefines.h" + +//Rnd_AutoRestart +#include +//Rnd_AutoRestart +//DATA TYPES +enum TNSmlSyncInitiation + { + EClientInitiated = 1, + EServerAlerted + }; + +// FORWARD DECLARATIONS +class CSyncMLHistoryJob; +class CNSmlStatusContainer; +class CNSmlResponseController; +class CNSmlTransport; +class CNSmlCmdsBase; +class CNSmlURI; +class CNSmlFutureReservation; + +// CLASS DECLARATION + +/** +* CNSmlAgentBase implements common parts (both for DS and DM) +* +*/ +class CNSmlAgentBase:public CActive, public MWBXMLSyncMLCallbacks + { + public: // enumerations + enum TAuthenticationType + { + ENoAuth, + EBasic, + EMD5 + }; + + public: // Constructors and destructor + IMPORT_C CNSmlAgentBase(); + IMPORT_C virtual ~CNSmlAgentBase(); + + public: + // New functions + virtual TAuthenticationType AuthTypeL() const = 0; + virtual void Interrupt( TInt aErrorCode, TBool aImmediatelyInterruption, TBool aStatusError ) = 0; + virtual void InterruptL( TInt appIndex, TInt aErrorCode, TBool aImmediatelyInterruption, TBool aStatusError ) = 0; + virtual void WriteWarningL( TNSmlError::TNSmlAgentErrorCode aWarningCode ) = 0; + virtual void WriteWarningL( TInt appIndex, TNSmlError::TNSmlAgentErrorCode aWarningCode ) = 0; + virtual void WriteWarningL( TInt appIndex, TNSmlError::TNSmlSyncMLStatusCode aWarningCode ) = 0; + virtual void CheckServerStatusCodeL( TInt aEntryID ) = 0; + virtual TBool Interrupted() = 0; + TBool AlreadyAuthenticated() const; + HBufC8* BasicCredentialL() const; + HBufC8* Md5CredentialL( TBool aServerAuth = EFalse ) const; + IMPORT_C virtual HBufC* ServerNonceAllocL() const; + IMPORT_C virtual void SetServerNonceL( const TDesC& aNonce ) const; + IMPORT_C void SetEndOfDataAlertRequest(); + IMPORT_C CSyncMLHistoryJob* SyncLog(); + IMPORT_C TBool CallbackCalled() const; + IMPORT_C void SetOffCallbackCalled(); + IMPORT_C virtual void DoOutsideCancel(); + //Rnd_AutoRestart + IMPORT_C virtual void LaunchAutoRestartL(TInt aError); + IMPORT_C TApBearerType CheckAPBearerTypeL( const TUint32 aIAPId ); + void ReadAcessPointL(); + //Rnd_AutoRestart + + // + // Profile ID getter + // + IMPORT_C TInt ProfileId() const; + + IMPORT_C TRequestStatus& StatusReference(); + + public: + // Functions from base classes + IMPORT_C void RunL(); // from CActive + IMPORT_C void DoCancel(); // from CActive + IMPORT_C Ret_t smlAddCmdFuncL( SmlAddPtr_t aContent ); // from MWBXMLSyncMLCallbacks + IMPORT_C Ret_t smlCopyCmdFuncL( SmlCopyPtr_t aContent); // from MWBXMLSyncMLCallbacks + IMPORT_C Ret_t smlDeleteCmdFuncL( SmlDeletePtr_t aContent ); // from MWBXMLSyncMLCallbacks + IMPORT_C Ret_t smlExecCmdFuncL( SmlExecPtr_t aContent ); // from MWBXMLSyncMLCallbacks + IMPORT_C Ret_t smlMapCmdFuncL( SmlMapPtr_t aContent ); // from MWBXMLSyncMLCallbacks + IMPORT_C Ret_t smlReplaceCmdFuncL( SmlReplacePtr_t aContent ); // from MWBXMLSyncMLCallbacks + IMPORT_C Ret_t smlSearchCmdFuncL( SmlSearchPtr_t aContent ); // from MWBXMLSyncMLCallbacks + IMPORT_C Ret_t smlMoveCmdFuncL( SmlMovePtr_t aContent ); // from MWBXMLSyncMLCallbacks (1.2 changes) + + protected: // enumerations + // + // State coding enumerations + // + //main level state coding + enum TMainState + { + EBeginning, + EClientInitialisation, + EServerInitialisation, +// + EClientResendMapInfo, +// + EClientModifications, + EResultAlert, + EServerModifications, + EDataUpdateStatus, + EMapAcknowledge, + EFinishing, + EClientAlertNext, + EServerAlertNext, + ESending, + EReceiving, + EAlert, + EBusy + }; + + //beginning level state coding + enum TBeginningState + { + EBegin, + EBeginConnectingToServer + }; + + //client initialisation level state coding + enum TClientInitState + { + EInitStartingMessage, + EInitMakingStatus, + EInitAlerting, + EInitDeviceInfo, + EInitAskingDeviceInfo, + EInitEndingMessage + }; + + + //server modifications level state coding + enum TServerModificationsState + { + EServerModWaitingStartMessage, + EServerModWaitingCommands, + EServerModWaitingUpdateCommands, + EServerModMessageReceived, + EServerModPackageReceived + }; + + //data update status level state coding + enum TDataUpdateStatusState + { + EStatusStartingMessage, + EStatusMakingAlert, + EStatusMakingStatus, + EStatusMakingMap, + EStatusMakingResults, + EStatusEndingMessage + }; + + //result alert from client level state coding + enum TResultAlertState + { + EResultAlertStartingMessage, + EResultAlertMakingAlert, + EResultAlertEndingMessage + }; + + // client alerting for next state coding + enum TClientAlertNextState + { + EClientAlertNextStartingMessage, + EClientAlertNextMakingAlert, + EClientAlertNextMakingStatus, + EClientAlertNextMakingMap, + EClientAlertNextEndingMessage + }; + // server alerting for next state coding + enum TServerAlertNextState + { + EServerAlertNextWaitingStartMessage, + EServerAlertNextWaitingCommands, + EServerAlertNextMessageReceived + }; + + protected: //new functions + // + // Pure virtual state functions + // + virtual void NavigateMainStateL() = 0; + virtual void NextMainStateL() = 0; + virtual void InitialiseSubStates() = 0; + virtual void BeginStateL() = 0; + virtual void InitStartingMessageStateL() = 0; + virtual void InitAlertingStateL() = 0; + virtual void InitDeviceInfoStateL() = 0; + virtual void ServerModUpdatesStateL( const TDesC8& aCmd, SmlGenericCmd_t* aContent ) =0; + virtual void DataUpdateStatusStartingMessageStateL() = 0; + // + // Pure virtual Nonce read/update functions + // + virtual HBufC* NonceL() const = 0; + virtual void SetNonceL( const TDesC& aNonce ) const = 0; + // + // Pure virtual Sync Log functions + // + virtual void FinalizeSyncLog() = 0; + // + virtual void CheckCommandsAreReceivedL() = 0; + // + // Pure virtual authentication type update + // + virtual void SetAuthTypeL( TAuthenticationType aAuthType ) const = 0; + // + // Pure virtual Resource Freeing + // + virtual void FreeResources() = 0; + // + // Pure virtual Error Handling functions + // + virtual void FinaliseWhenErrorL() = 0; + // + // + IMPORT_C void ConstructL(); + // + // Beginning state functions + // + IMPORT_C void BeginningStateL(); + // + // Client Initialisation state functions + // + IMPORT_C void ClientInitialisationStateL(); + IMPORT_C void InitStartingMessageStateBaseL(); + IMPORT_C virtual void InitAskingDeviceInfoStateL(); + // + // Server Modifications state functions + // + IMPORT_C void ServerModStartMessageStateL( SmlSyncHdr_t* aSyncHdr ); + IMPORT_C void ServerModStatusCmdStateL( SmlStatus_t* aStatus ); + IMPORT_C void ServerModAlertCmdStateL( SmlAlert_t* aAlert ); + IMPORT_C void ServerModEndMessageStateL( TBool aFinal ); + // + // Data Update Status state functions + // + IMPORT_C void DataUpdateStatusStateL(); + IMPORT_C void DataUpdateStatusStartingMessageStateBaseL(); + IMPORT_C virtual void DataUpdateStatusMakingMapStateL(); + IMPORT_C virtual void DataUpdateStatusMakingResultsStateL(); + // + // Result Alert state functions + // + IMPORT_C void ResultAlertStateL(); + // + // Client Alert For Next state functions + // + IMPORT_C void ClientAlertNextStateL(); + IMPORT_C virtual void ClientAlertNextMakingMapStateL(); + // + // Server Alert For Next state functions + // + IMPORT_C void ServerAlertNextStateL(); + IMPORT_C void ServerAlertNextStartMessageStateL( SmlSyncHdr_t* aSyncHdr ); + IMPORT_C void ServerAlertNextStatusCmdStateL( SmlStatus_t* aStatus ); + IMPORT_C void ServerAlertNextAlertCmdStateL( SmlAlert_t* aAlert ); + IMPORT_C void ServerAlertNextEndMessageStateL( TBool aFinal ); + // + // Sending state functions + // + IMPORT_C void SendingStateL(); + // + // Receiving state functions + // + IMPORT_C void ReceivingStateL(); + // + // Status code check + // + IMPORT_C TBool CheckStatusCodesAreReceivedL( TBool aFinal = ETrue ); + // + // Authentication functions + // + IMPORT_C void SaveIfNonceL( const CNSmlResponseController& aResponseController, TInt aEntryID ) const; + IMPORT_C TBool AuthenticationRequirementL( const CNSmlResponseController& aResponseController, TInt aEntryID ); + IMPORT_C virtual TPtrC ServerUserName() const; + IMPORT_C virtual TPtrC ServerPassword() const; + + // + // Free resources + // + IMPORT_C void FreeBaseResources(); + + // + private: //functions + + CNSmlAgentBase( const CNSmlAgentBase& aOther ); + CNSmlAgentBase& operator=( const CNSmlAgentBase& aOther ); + // + // Beginning state functions + // + void BeginConnectingStateL(); + // + // Client Initialisation state functions + // + void InitMakingStatusStateL(); + void InitEndingMessageStateL(); + // + // Data Update Status state functions + // + void DataUpdateStatusMakingAlertStateL(); + void DataUpdateStatusMakingStatusStateL(); + void DataUpdateStatusEndingMessageStateL(); + // + // Result Alert state functions + // + void ResultAlertStartingMessageStateL(); + void ResultAlertAlertingStateL(); + void ResultAlertEndingMessageStateL(); + // + // Client Alert For Next state functions + // + void ClientAlertNextStartingMessageStateL(); + void ClientAlertNextAlertingStateL(); + void ClientAlertNextMakingStatusStateL(); + void ClientAlertNextEndingMessageStateL(); + // + // Transport functions + // + void ConnectIssueL(); + void ConnectDoneL(); + void SendDataIssueL(); + void SendDataDoneL(); + void ReceiveDataIssueL(); + void ReceiveDataDoneL(); + void Disconnect(); + // + // Error Handling functions + // + void ErrorHandling( TInt aErrorCode ); + + public: // Data + + //Rnd_AutoRestart + TBool iPacketDataUnAvailable; + TUint32 iNetmonAPId; + TApBearerType iNetmonAPBearerType; + //Rnd_AutoRestart + + protected: // Data + + // + // State codes + // + TMainState iCurrMainState; + TMainState iPrevSyncState; + TBeginningState iCurrBeginningState; + TClientInitState iCurrClientInitState; + TServerModificationsState iCurrServerModState; + TDataUpdateStatusState iCurrDataUpdateStatusState; + TResultAlertState iCurrResultAlertState; + TClientAlertNextState iCurrClientAlertNextState; + TServerAlertNextState iCurrServerAlertNextState; + // + TRequestStatus* iCallerStatus; + // + // IMEI code + HBufC* iImeiCode; + // Switch for autenthication + TBool iAlreadyAuthenticated; + // Switch for challenge request + TBool iChallengeRequest; + // Switch for MD5 challenge request + TBool iMD5AlreadyRequested; + // switch for asynchronous issues + TBool iCommandIssued; + // switch for checking SyncML version + TBool iVersionIsChecked; + // MaxMsgSize in a server + TInt iMaxMsgSizeInServer; + // switch for Busy Status + TBool iBusyStatusReceived; + // switch for Result Alert + TBool iResultAlertIssued; + // switch for full workspace buffer + TBool iBufferFull; + // switch for final + TBool iFinalMessageFromClient; + // switch for Data Update Status package; + TBool iStatusPackage; + // switchs for end + TBool iEnd; + TBool iCancelForced; + + // Common settings data + TSmlProfileId iProfileID; + HBufC* iSyncMLUserName; + HBufC* iSyncMLPassword; + + HBufC* iSyncHTTPAuthUserName; + HBufC* iSyncHTTPAuthPassword; + TInt iSyncHTTPAuthUsed; + + CNSmlURI* iSyncServer; + TUid iMediumType; + TInt iIAPId; + CArrayFixFlat* iIAPIdArray; + + // Sync Initiation + TNSmlSyncInitiation iSyncInitiation; + // SyncML MIME type; + HBufC8* iSyncMLMIMEType; + // Result Alert code + HBufC8* iResultAlertCode; + // End of Data Alert code + HBufC8* iEndOfDataAlertCode; + // Session Abort Alert code (DM Only) + HBufC8* iSessionAbortAlertCode; + // Next Message Alert code + HBufC8* iNextMessageCode; + // Switch for end of data alert + TBool iEndOfDataAlertRequest; + // Switch for session abort alert (DM Only) + TBool iSessionAbortAlertRequest; + // Counter for nested Atomics + TInt iNestedAtomicsCount; + // + TBool iCallbackCalled; + // + // Used classes + // + CSyncMLHistoryJob* iSyncLog; + // + // Owned classes + // + CNSmlCmdsBase* iSyncMLCmds; + TNSmlError* iError; + // + // Owned classes + // + CNSmlTransport* iTransport; + + private: // Data + // Reserved to maintain binary compability + CNSmlFutureReservation* iReserved; + + TPtr8 iBufferArea; + + TInt iSendRetries; + // for module test +#ifdef __NOTRANSPORT + TInt iTestCounter; +#endif + }; + +#endif // __NSMLAGENTBASE_H__ + +// End of File