diff -r 000000000000 -r d0791faffa3f backupandrestore/backupengine/inc/sbheapwrapper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/backupandrestore/backupengine/inc/sbheapwrapper.h Tue Feb 02 01:11:40 2010 +0200 @@ -0,0 +1,132 @@ +/** +* Copyright (c) 2004-2009 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: +* Definition of CHeapWrapper and THeapWrapperHeader +* +* +*/ + + + +/** + @file + @internalTechnology +*/ + +#ifndef __HEAPWRAPPER_H__ +#define __HEAPWRAPPER_H__ + +#include +#include + +namespace conn + { + /** KMaxGenericTypeSize must be a multiple of 4 to ensure that all structures are 4-byte aligned + @internalTechnology */ + const TInt KMaxGenericTypeSize = 1024; + + class THeapWrapperHeader + /** + This class is packed at the beginning of the heap and stores information about the data + contained in the descriptor. + + Note that all structures in here must be 4-byte aligned, using dummy padding if necessary. + + @internalTechnology + */ + { + public: + inline TBool LockedFlag(); + inline void SetLockedFlag(TBool aLockedFlag); + inline TBuf8& GenericTransferTypeBuffer(); + + public: + /** Finished flag, set to ETrue when the data in the descriptor + is the last in a multi-part transfer*/ + TBool iFinished; + + private: + /** Flag to indicate that the heap has been locked for writing + by an instance of CHeapWrapper */ + TBool iLockedFlag; + + /** Generic transfer type */ + TBuf8 iGenericDataTransferInfo; + }; + + inline TBool THeapWrapperHeader::LockedFlag() + /** Getter for the private locked flag + @return The status of the locked flag */ + { + return iLockedFlag; + } + + inline void THeapWrapperHeader::SetLockedFlag(TBool aLockedFlag) + /** Setter for the locked flag + @param aLockedFlag The new state of the heap locked flag */ + { + iLockedFlag = aLockedFlag; + } + + inline TBuf8& THeapWrapperHeader::GenericTransferTypeBuffer() + /** Getter for the generic type buffer + @return Reference to generic type buffer + */ + { + return iGenericDataTransferInfo; + } + + + // Offsets for defining pointers relative the the RChunk::Base() pointer + + /** Offset for the lock flag */ + const TInt KHeaderOffset = 0; + + /** Offset to the beginning of the main descriptor */ + const TInt KDescriptorOffset = KHeaderOffset + sizeof(THeapWrapperHeader); // lock flag is 1 byte + + /** Offset to the data that the TPtr8 will point to */ + const TInt KDataOffset = KDescriptorOffset + sizeof(TPtr8); + + class CHeapWrapper : public CBase + /** + This class is instantiated to ensure that data is passed over the Global Shared Heap + by a common interface + + @internalTechnology + */ + { + public: + static CHeapWrapper* NewL(); + TPtrC8& ReadBufferL(const RChunk& aChunk); + TPtr8& WriteBufferL(const RChunk& aChunk); + TInt ResetHeap(const RChunk& aChunk); + THeapWrapperHeader& Header(const RChunk& aChunk) const; + + /** virtual C++ destructor */ + ~CHeapWrapper(); + private: + /** C++ constructor initialises read buffer pointer to NULL*/ + CHeapWrapper() : iReadBuf(NULL) {}; + + TPtr8& Buffer(const RChunk& aChunk); + void CleanReadBuffer(); + private: + /** Pointer to the global buffer */ + TPtrC8* iReadBuf; + }; + + } // namespace conn + +#endif //__HEAPWRAPPER_H__