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