diff -r 000000000000 -r b497e44ab2fc syncmlfw/common/syncagent/inc/NSmlCmdsBase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/common/syncagent/inc/NSmlCmdsBase.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,257 @@ +/* +* 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: Common Agent SyncML command handling +* +*/ + + +#ifndef __NSMLCMDSBASE_H +#define __NSMLCMDSBASE_H + +// INCLUDES +#include +#include + +#include "smlmetinfdtd.h" +#include "nsmlerror.h" +#include "nsmlagenttestdefines.h" +#include "smlsyncmltags.h" +#include "NSmlPrivateAPI.h" + +// FORWARD DECLARATIONS +class CNSmlAgentBase; +class CNSmlURI; +class CNSmlStatusContainer; +class CNSmlResponseController; +class CNSmlResultsContainer; +class CWBXMLSyncMLGenerator; +class CWBXMLParser; +class CWBXMLSyncMLDocHandler; +class CNSmlPhoneInfo; +class CNSmlAuth; +class CNSmlFutureReservation; + +// CLASS DECLARATION + +/** +* CNSmlCmdsBase implements common parts (for DS and DM) of SyncML commands handling +* +*/ +class CNSmlCmdsBase:public CBase + { + public: // Constructors and destructor + + IMPORT_C CNSmlCmdsBase(); + IMPORT_C virtual ~CNSmlCmdsBase(); + + public: //enumerations + enum TReturnValue + { + EReturnOK = 0, + EReturnNotFound, + EReturnSkipped, + EReturnEndData, + EReturnBufferFull + }; + + public: // new functions + virtual void DoAlertL( const TDesC8& aAlertCode, TTime* aLastSyncAnchor = NULL, TTime* aNextSyncAnchor = NULL ) = 0; + virtual void DoPutL() = 0; + virtual TReturnValue DoResultsL() = 0; + virtual void DoGetL() = 0; + virtual TReturnValue DoStartSyncL() = 0; + virtual void DoEndSyncL() = 0; + virtual TReturnValue DoAddOrReplaceOrDeleteL() = 0; + virtual TReturnValue DoMapL() = 0; + virtual void DoEndMessageL( TBool aFinal = ETrue ) = 0; + virtual void ProcessResultsCmdL( SmlResults_t* aResults ) = 0; + virtual void ProcessPutCmdL( SmlPut_t* aPut ) = 0; + virtual void ProcessGetCmdL( SmlGet_t* aGet ) = 0; + virtual void ProcessAlertCmdL( SmlAlert_t* aAlert, TBool aNextAlert = EFalse, TBool aServerAlert = EFalse, TBool aDisplayAlert = EFalse ) = 0; + virtual void ProcessSyncL( SmlSync_t* aSync ) = 0; + virtual void ProcessEndSyncL() = 0; + virtual void ProcessUpdatesL( const TDesC8& aCmd, SmlGenericCmd_t* aContent ) = 0; + virtual void ProcessAtomicL( SmlAtomic_t* aAtomic ) = 0; + virtual void ProcessEndAtomicL() = 0; + virtual void ProcessSequenceL( SmlSequence_t* aSequence) = 0; + virtual void ProcessEndSequence() = 0; + IMPORT_C virtual void ProcessCopyCmdL(SmlCopy_t* aCopy); + IMPORT_C virtual void ProcessExecCmdL(SmlExec_t* aExec); + IMPORT_C virtual void ProcessMapCmdL(SmlMap_t* aContent); + IMPORT_C virtual void ProcessSearchCmdL(SmlSearch_t* aSearch); + IMPORT_C virtual void FetchIDMappingTableL(const TInt aType); + IMPORT_C virtual void CloseIDMappingTableL(); + IMPORT_C virtual TBool DeleteIDMappingTableL(const TDesC& aId, const TDesC& aDatabase); + + IMPORT_C virtual void EndOfServerMessageL() const; + IMPORT_C virtual TInt WriteMappingInfoToDbL() const; + + IMPORT_C virtual void DoSyncHdrL(); + IMPORT_C TReturnValue DoStatusL( SmlStatus_t* aStatus ); + // FOTA + IMPORT_C virtual void DoGenericAlertL ( const TDesC8& aFwMgmtUri, const TDesC8& aMetaType, const TDesC8& aMetaFormat, TInt aFinalResult, const TDesC8& aFwCorrelator ); + IMPORT_C virtual TBool DoGenericUserAlertL ( TInt aProfileId ); + IMPORT_C virtual void ResetGenericUserAlertL(); + IMPORT_C virtual void MarkGenAlertsSentL(); + IMPORT_C virtual void MarkGenAlertsSentL(const TDesC8& aURI); + IMPORT_C virtual void DisconnectFromOtherServers(); + // FOTA end + IMPORT_C TBool ProcessReceivedDataL(); + IMPORT_C virtual void ProcessSyncHdrL ( SmlSyncHdr_t* aSyncHdr ); + IMPORT_C virtual void ProcessStatusCmdL( SmlStatus_t* aStatus ); + IMPORT_C TPtr8 AlertCode( SmlAlert_t* aAlert ) const; + IMPORT_C void StatusToUnsupportedCommandL( TBool aIllegal, const TDesC8& aCmd, const SmlPcdata_t* aCmdRef, Flag_t aFlags = 0 ); + TPtrC8 GeneratedDocument() const; + IMPORT_C TPtr8 BufferAreaForParsingL(); + IMPORT_C TBool BusyStatus() const; + IMPORT_C CNSmlStatusContainer* StatusContainer() const; + IMPORT_C CNSmlResponseController* ResponseController() const; + IMPORT_C CNSmlResultsContainer* ResultsContainer() const; + IMPORT_C CNSmlAuth* ServerAuth() const; + IMPORT_C CNSmlURI* RespURI() const; + IMPORT_C void DoMetaL( SmlPcdata_t*& aMeta, const SmlMetInfMetInf_t* aMetaData ) const; + IMPORT_C void DoMetInfLC( SmlMetInfMetInf_t*& aMeta ) const; + IMPORT_C void PcdataNewL( SmlPcdata_t*& aPcdata, const TDesC8& aContent ) const; + IMPORT_C void DoSourceL( sml_source_s*& aSource, const TDesC& aLocURIData ) const; + IMPORT_C void DoSourceL( sml_source_s*& aSource, const TDesC8& aLocURIData ) const; + IMPORT_C void DoSourceL( sml_source_s*& aSource, const TDesC& aLocURIData, const TDesC& aLocNameData ) const; + IMPORT_C void DoTargetL( sml_target_s*& aTarget, const TDesC& aLocURIData ) const; + IMPORT_C void DoTargetL( sml_target_s*& aTarget, const TDesC8& aLocURIData ) const; + IMPORT_C void DoTargetL( sml_target_s*& aTarget, const TDesC& aLocURIData, const TDesC& aLocNameData ) const; + IMPORT_C void PCDATAToUnicodeLC( const SmlPcdata_t& aPcdata, HBufC*& aUnicodeData ) const; + IMPORT_C void ResetLargeObjectBuffer(); + IMPORT_C TBool WaitingLargeObjectChunk() const; + IMPORT_C void SetMaximumWorkspaceSize( const TInt aMaxSize ); + IMPORT_C virtual void DoGenericAlertL ( const TDesC8& aCorrelator, const RArray& aData ); + + protected: //new functions + IMPORT_C void ConstructL( CNSmlAgentBase* aAgentBase, const TDesC8& aSessionID, const TDesC8& aVerProto, const TInt aPublicId, const HBufC& aSyncMLUserName, CNSmlURI* aSyncServer, TBool aVersionCheck = ETrue ); + IMPORT_C void ConstructL( CNSmlAgentBase* aAgentBase, const TDesC8& aSessionID, const TDesC8& aVerProto, const HBufC& aSyncMLUserName, CNSmlURI* aSyncServer, TBool aVersionCheck = ETrue ); + + IMPORT_C void DoCmdIdL( SmlPcdata_t*& aCmdID); + IMPORT_C void DoAnchorsL( SmlMetInfMetInf_t& aMetInf, const TDesC8* aLast, const TDesC8* aNext ) const; + IMPORT_C void DoMaxObjSizeL( SmlMetInfMetInf_t& aMetInf, TInt aMaxObjSize ) const; + + IMPORT_C void SubtractConsumedFromPcData( SmlItem_t*& aItem, TInt aConsumed ); + IMPORT_C TInt StatusDataToGenericCommandL( const TDesC8& aCmd, const SmlGenericCmd_t* aContent, const SmlItem_t* aItem, TNSmlError::TNSmlSyncMLStatusCode aStatusCode, const TDesC8* aStatusItem = NULL ); + IMPORT_C TInt StatusDataToGetCommandL( const SmlGet_t* aContent, const SmlItem_t* aItem, TNSmlError::TNSmlSyncMLStatusCode aStatusCode, const TDesC8* aStatusItem = NULL ); + IMPORT_C TInt StatusDataToCommandL( const TDesC8& aCmd, const SmlPcdata_t* aCmdID, TUint aFlags, const SmlItem_t* aItem, TNSmlError::TNSmlSyncMLStatusCode aStatusCode, const TDesC8* aStatusItem = NULL ); + IMPORT_C TInt CreateAndInitResponseItemL( const TDesC8& aCommand ); + IMPORT_C TBool TargetIsUnderItem( const SmlItemList_t* aItemList ) const; + IMPORT_C TBool SourceIsUnderItem( const SmlItemList_t* aItemList ) const; + IMPORT_C HBufC8* MetaTypeInUtf8LC( const SmlPcdata_t* aMeta ) const; + IMPORT_C HBufC* MetaTypeLC( const SmlPcdata_t* aMeta ) const; + IMPORT_C HBufC8* MetaFormatInUtf8LC( const SmlPcdata_t* aMeta ) const; + IMPORT_C TBool IsFlagSet( const TUint& aValue, const TUint& aBit ) const; + IMPORT_C void TrimRightSpaceAndNull (TDes8& aDes ) const; + IMPORT_C TNSmlError::TNSmlSyncMLStatusCode MoreDataL( const HBufC8* aUID, const SmlItem_t* aCurrentItem, const SmlPcdata_t* aMetaInCommand, CBufBase*& aTotalItem ); + IMPORT_C TInt ServerMaxObjSize( const SmlPcdata_t* aMeta ) const; + IMPORT_C TInt ServerObjectSize( const SmlPcdata_t* aMeta ) const; + + private: //functions + + CNSmlCmdsBase( const CNSmlCmdsBase& aOther ); + CNSmlCmdsBase& operator=( const CNSmlCmdsBase& aOther ); + + // + public: // Data +#ifdef __NOTRANSPORT + TPtr8 BufferAreaForDebugDumpL(); +#endif + + protected: // Data + HBufC8* iVerDTD; + TInt iVersionPublicId; + + // protocol version + HBufC8* iVerProto; + // Current SyncML SessionID + HBufC8* iSessionID; + // Current SyncML MsgID of a client + TInt iCurrMsgID; + // Current SyncML CmdID of a client + TInt iCurrCmdID; + // Current SyncML MsgID of a server + HBufC8* iCurrServerMsgID; + // No Response Status to the message sent by Server + TBool iStatusToServerNoResponse; + // Target/LocURI element which client has sent to server + CNSmlURI* iSentSyncHdrTarget; + // Source/LocURI element which client has sent to server + CNSmlURI* iSentSyncHdrSource; + // URI for response from a server + CNSmlURI* iRespURI; + // switches for checking SyncML version + TBool iVersionCheck; + TBool iVersionIsChecked; + // workspace size + TInt iWorkspaceSize; + // maximum workspace size + TInt iMaxWorkspaceSize; + // bufferArea + HBufC8* iBufferArea; + // read stream; + RDesReadStream iReadStream; + // switch for authentication (client) + TBool iAlreadyAuthenticated; + // switch for Busy Status + TBool iBusyStatusReceived; + // switch for Result Alert + TBool iResultAlertIssued; + // switch for Data Update Status package; + TBool iStatusPackage; + // Indicates invalid device + TBool iUnknownDevice; + // User Name + HBufC* iSyncMLUserName; + // SyncML server + CNSmlURI* iSyncServer; + // partially sent large object item + SmlItem_t* iLargeObjectItem; + // buffer for received data; + CBufFlat* iRecBuf; + // size of the large object of a server + TInt iServerLargeObjectSize; + // identifier in first chunk in server's large object + HBufC8* iLargeObjectUID; + // max. object size in SyncHdr level + TInt iSynchHdrMaxObjSize; + // max object size of a server + TInt iServerMaxObjectSize; + // + // Used classes + // + CNSmlAgentBase* iAgent; + // + // Owned classes + // + CNSmlStatusContainer* iStatusToServer; + CNSmlResponseController* iResponseController; + CNSmlResultsContainer* iResultsToServer; + CWBXMLSyncMLGenerator* iGenerator; + CWBXMLParser* iParser; + CWBXMLSyncMLDocHandler* iDocHandler; + CNSmlPhoneInfo* iPhoneInfo; + CNSmlAuth* iServerAuth; + // Reserved to maintain binary compability + CNSmlFutureReservation* iReserved; + + TInt iAmountReceived; + TBool iMoreData; + TInt iItemSizeInStream; + }; + +#endif // __NSMLCMDSBASE_H + +// End of File