diff -r 000000000000 -r b497e44ab2fc syncmlfw/dm/treemodule/inc/nsmldmhostclient.h --- /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 +#include +#include +#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& 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* iMapUris; + + /** + * Array of Luids when host server sends mappings + */ + CArrayPtrSeg* 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