syncmlfw/dm/treemodule/inc/nsmldmhostclient.h
changeset 0 b497e44ab2fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/dm/treemodule/inc/nsmldmhostclient.h	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,313 @@
+/*
+* 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:  DM tree etc.
+*
+*/
+
+
+
+#ifndef __NSMLDMHOSTCLIENT_H
+#define __NSMLDMHOSTCLIENT_H
+
+#include <smldmadapter.h>
+#include <e32base.h>
+#include <nsmldebug.h>
+#include "nsmldmclientandserver.h"
+
+class CNSmlDmMgmtTree;
+class CNSmlDmDDF;
+
+// ===========================================================================
+// RNSmlDMDataSession
+// ===========================================================================
+/**
+* DM host client implementation
+*
+*  @since
+*/
+class RNSmlDMDataSession : public RSessionBase
+	{
+public:
+
+
+	/**
+	* Constructor
+	*/
+	RNSmlDMDataSession();
+
+	/**
+	* Destructor
+	*/
+	~RNSmlDMDataSession();
+
+	/**
+	* Connects to correct host server. If Host server is not launhed,
+	* the function launches it
+	* @param	aServerName			Server name
+	* @param	aDmCallback			Pointer to DDF class
+	* @return						Success of operation, systemWide error code
+	*/
+	TInt ConnectL(const TDesC& aServerName,CNSmlDmDDF* aDmCallback);
+
+	/**
+	* Returns server version
+	* @return						Server version
+	*/
+	TVersion Version() const;
+
+	/**
+	* Closes the session
+	*/
+	void Close();
+	
+	/**
+	* Gets the DDF structure from plugin adapters of corresponding
+	* host server
+	* @param	aRoot			Reference to root node of tree
+	* @return					Checksum from the current hots servers plug-in
+	*							adapter ddf versions
+	*/
+	TInt DDFStructureL(CNSmlDmMgmtTree& aRoot);
+	
+
+	/**
+	* Update leaf  object in given adapter
+	* @param	aAdapterId		Adapter id
+	* @param	aLuid			Luid mapped to uri
+	* @param	aStatusRef		Reference to status element
+	* @param	aURI			Target URI in command
+	* @param	aObject			Data
+	* @param	aType			Mime type of the object
+	* @param	aLargeItem		True if object comes in multiple messages
+	* @param	aTotSizeOfLarge	The overall size of the large object.
+	*							Sent with the first chunk for the FOTA 
+	*							adapter.	
+	*/
+	void UpdateLeafL(const TUint32 aAdapterId,
+		const TDesC8& aLuid,
+		const TInt32 aStatusRef,
+		const TDesC8& aURI,
+		const TDesC8& aObject,
+		const TDesC8& aType,
+		const TBool aLargeItem=EFalse,
+		// FOTA
+		const TInt aTotSizeOfLarge=0
+		// FOTA end
+		);
+		
+
+	/**
+	* Add node object in given adapter
+	* @param	aAdapterId		Adapter id
+	* @param	aLuid			Luid mapped to uri
+	* @param	aStatusRef		Reference to status element
+	* @param	aURI			Target URI in command
+	*/
+	void AddNodeL(const TUint32 aAdapterId,
+		const TDesC8& aLuid,
+		const TInt32 aStatusRef,
+		const TDesC8& aURI);
+		
+	/**
+	* Execute command in given adapter
+	* @param	aAdapterId		Adapter id
+	* @param	aLuid			Luid mapped to uri
+	* @param	aStatusRef		Reference to status element
+	* @param	aURI			Target URI in command
+	* @param	aObject			Data
+	* @param	aType			Mime type of the object
+	* @param	aLargeItem		True if object comes in multiple messages
+	*/
+	void ExecuteCommandL(const TUint32 aAdapterId,
+		const TDesC8& aLuid,
+		const TInt32 aStatusRef,
+		const TDesC8& aURI,
+		const TDesC8& aObject,
+		const TDesC8& aType,
+		const TBool aLargeItem=EFalse);
+		
+	/**
+	* Copy data in given adapter
+	* @param	aAdapterId		Adapter id
+	* @param	aTargetLuid		Luid mapped to uri
+	* @param	aTargetURI		Target URI in command
+	* @param	aSourceLuid		Source luid mapped to uri
+	* @param	aSourceURI		Source URI in command
+	* @param	aStatusRef		Reference to status element
+	* @param	aType			Mime type of the object
+	*/
+	void CopyCommandL(const TUint32 aAdapterId,
+		const TDesC8& aTargetLuid,
+		const TDesC8& aTargetURI,
+		const TDesC8& aSourceLuid,
+		const TDesC8& aSourceURI,
+		const TInt32 aStatusRef,
+		const TDesC8& aType);
+		
+	/**
+	* Delete object in given adapter
+	* @param	aAdapterId		Adapter id
+	* @param	aLuid			Luid mapped to uri
+	* @param	aStatusRef		Reference to status element
+	* @param	aURI			Target URI in command
+	*/
+	void DeleteObjectL(const TUint32 aAdapterId,
+		const TDesC8& aLuid,
+		const TInt32 aStatusRef,
+		const TDesC8& aURI);
+	
+	/**
+	* Get data from given adapter
+	* @param	aAdapterId		Adapter id
+	* @param	aURI			Target URI in command
+	* @param	aLUID			Luid mapped to uri
+	* @param	aType			Mime type of the object
+	* @param	aResultRef		Reference to result element
+	* @param	aStatusRef		Reference to status element
+	*/
+	void FetchLeafObjectL(const TUint32 aAdapterId,
+		const TDesC8& aURI,
+		const TDesC8& aLUID,
+		const TDesC8& aType,
+		const TInt aResultsRef,
+		const TInt aStatusRef );
+		
+	/**
+	* Get data size from given adapter
+	* @param	aAdapterId		Adapter id
+	* @param	aURI			Target URI in command
+	* @param	aLUID			Luid mapped to uri
+	* @param	aType			Mime type of the object
+	* @param	aResultRef		Reference to result element
+	* @param	aStatusRef		Reference to status element
+	*/
+	void FetchLeafObjectSizeL(const TUint32 aAdapterId,
+		const TDesC8& aURI,
+		const TDesC8& aLUID,
+		const TDesC8& aType,
+		const TInt aResultsRef,
+		const TInt aStatusRef );
+		
+	/**
+	* Get child list from given adapter
+	* @param	aAdapterId				Adapter id
+	* @param	aURI					Target URI in command
+	* @param	aLUID					Luid mapped to uri
+	* @param	aPreviousURISegmentList	Previous list from tree db
+	* @param	aResultRef				Reference to result element
+	* @param	aStatusRef				Reference to status element
+	*/
+	void ChildURIListL(const TUint32 aAdapterId,
+		const TDesC8& aURI,
+		const TDesC8& aLUID,
+		const CArrayFixFlat<TSmlDmMappingInfo>& aPreviousURISegmentList,
+		const TInt aResultsRef,const TInt aStatusRef );
+
+	/**
+	* Indicates host server about the atomic statrt
+	*/
+	void StartAtomicL();
+
+	/**
+	* Indicates host server about the atomic commit
+	*/
+	void CommitAtomicL();
+
+	/**
+	* Indicates host server about the atomic rollback
+	*/
+	void RollbackAtomicL();
+	
+	/**
+	* Indicates host server about the message ending
+	*/
+	void CompleteOutstandingCmdsL();
+
+	/**
+	* Gets more data from host server in case of large object
+	* @param	aData			Reference to data buffer where to
+	*							write data
+	*/
+	void MoreDataL(CBufBase*& aData);
+	
+	// FOTA 
+	/**
+	* When the generic alerts are successfully sent to the remote 
+	* server, the FOTA adapter needs to be informed about this.
+	* This command is chained through the DM engine.
+	* In this function a request is issued as an IPC call.
+	*/				
+	void MarkGenAlertsSent();
+	
+	
+	void MarkGenAlertsSent(const TDesC8 &aURI);
+	
+	// FOTA end
+
+private:
+	/**
+	* Launches server
+	* @param	aServerExeName		Server executable name
+	* @return						Success of operation
+	*/
+	TInt LaunchServerL( const TDesC& aServerExeName );
+
+	/**
+	* Sends chunck handle to host server
+	* @return						Success of operation
+	*/
+	TInt SendChunkHandle();
+
+	/**
+	* Handles callbacks from host server
+	* @param	aCallbackType		Callback type 
+	*/
+	void HandleCallbacksL(TNSmlDmHostCallbackType aCallbackType);
+
+	
+private:
+	/**
+	* Handle to chunk that is used to transfer data between client and server
+	*/
+	RChunk iChunk;				
+
+	/**
+	* Pouinter to DDF class
+	*/
+	CNSmlDmDDF* iCallback;
+
+	/**
+	* Array of URIs when host server sends mappings
+	*/
+	CArrayPtrSeg<HBufC8>* iMapUris;
+
+	/**
+	* Array of Luids when host server sends mappings
+	*/
+	CArrayPtrSeg<HBufC8>* iMapLuids;
+
+	/**
+	* Id of the session, 1...4
+	*/
+	TUint8 iServerId;
+	
+	/**
+	* Large object uri in case of incoming large object
+	*/
+	HBufC8* iLargeObjectUri;
+	};
+
+
+	
+#endif // __NSMLDMHOSTCLIENT_H
\ No newline at end of file