syncmlfw/common/syncagent/inc/NSmlCmdsBase.h
changeset 0 b497e44ab2fc
child 11 06f47423ecee
--- /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 <e32base.h>
+#include <s32mem.h>
+
+#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<CNSmlDMAlertItem>& 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