diff -r 000000000000 -r b497e44ab2fc syncmlfw/ds/syncagent/inc/nsmldsluidbuffer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/ds/syncagent/inc/nsmldsluidbuffer.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,118 @@ +/* +* 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: LUID buffering +* +*/ + + +#ifndef __NSMLDSLUIDBUFFER_H__ +#define __NSMLDSLUIDBUFFER_H__ + +// INCLUDES +#include +#include +#include "nsmldshostclient.h" + +// FORWARD DECLARATIONS +class CNSmlDSHostClient; +class CNSmlDSContentItem; + +// CLASS DECLARATION + +/** +* Class for LUID (Local UID) buffering. +* +* @lib nsmldsagent.lib +*/ +class CNSmlDSLUIDBuffer : public CBase + { + public: // constructors and destructor + /** + * C++ constructor. + * @param aHostClient Host Client used for communication with the Host Session. + * @param aContentItem Sync content whose LUIDs are buffered. + */ + CNSmlDSLUIDBuffer( CNSmlDSHostClient& aHostClient, CNSmlDSContentItem& aContentItem ); + + /** + * Destructor. + */ + ~CNSmlDSLUIDBuffer(); + + public: // new functions + /** + * Gets the current UID. + * @param aLocalUID On return contains the current UID. + */ + void CurrentUID( TSmlDbItemUid& aLocalUID ) const; + + /** + * Gets the first UID and the command associated to its modification type from buffer. + * @param aLocalUID On return contains the next UID. + * @param aCmdName On return contains the command associated with the returned UID's + * modification type. + * @return KErrNone if completed successfully or KErrEof if the buffer is empty + */ + TInt NextUIDL( TSmlDbItemUid& aLocalUID, TDes8& aCmdName ); + + /** + * Gets the total number of UIDs, both in the buffer and written. + * @return TInt representing the number of UIDs in the buffer. + */ + TInt ClientItemCount() const; + + /** + * Sets the current UID as written and removes it from the buffer. + */ + void SetCurrentItemWritten(); + + /** + * Gets UIDs of all modified items from datastore to the buffer asynchronously. + * @param aResultCode On return contains the result code of the operation. + */ + void FetchModificationsL( TInt& aResultCode ); + + private: // constructors & operators + /** + * Prohibit copy constructor. + */ + CNSmlDSLUIDBuffer( const CNSmlDSLUIDBuffer& aOther ); + + /** + * Prohibit assignment operator. + */ + CNSmlDSLUIDBuffer& operator=( const CNSmlDSLUIDBuffer& aOther ); + + private: // data + // internal states + enum TState + { + EModifications = 1, + EEnd + }; + // current state + TState iCurrState; + // array of buffered modification items + RNSmlDbItemModificationSet iModificationSet; + // reference to the ds hostclient + CNSmlDSHostClient& iHostClient; + // reference to the current content (datastore) data + CNSmlDSContentItem& iContentItem; + // the number of written items + TInt iWrittenItems; + }; + +#endif // __NSMLDSLUIDBUFFER_H__ + +// End of File