diff -r 000000000000 -r dfb7c4ff071f commsfwutils/commsbufs/mbufmgr/inc/mbuf.inl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commsfwutils/commsbufs/mbufmgr/inc/mbuf.inl Thu Dec 17 09:22:25 2009 +0200 @@ -0,0 +1,315 @@ +// Copyright (c) 2007-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: +// Buffer Manager for Protocols +// + +#if !defined(__MBuf_inl__) +#define __MBuf_inl__ + +// +// MBUF +// + + +inline TAny* RMBuf::operator new(TUint /* aSize */, TUint8* aPtr) + { + return aPtr; + } + +inline void RMBuf::operator delete(TAny*, TUint8* ) + { + } + + +#ifndef __KERNEL_MODE__ +/** +Fills with binary zeroes (i.e. 0x00), replacing any existing content. +*/ +inline void RMBuf::FillZ() + { Mem::FillZ(RawBase(), iCommsBufMetaData.iRawSize); } + +/** +Returns the size of the MBuf +@return the size +*/ +inline TInt RMBuf::Size() const +{ return RCommsBuf::RawSize(); } + +/** +Returns a pointer to the MBuf data buffer +@return A pointer to the MBuf data buffer +*/ +inline TUint8* RMBuf::Buffer() +{ return (TUint8*)RCommsBuf::RawBase(); } + +/** +Returns a TUnit8 pointer to the begining of MBuf +@return A pointer to the begining of MBuf +*/ +inline TUint8* RMBuf::Ptr() +{ return RCommsBuf::Ptr(); } + +/** +Returns a TUint8 pointer to the end of the MBuf +@return A pointer to the end of the MBuf +*/ +inline TUint8* RMBuf::EndPtr() +{ return Ptr()+RCommsBuf::Length(); } + +/** +Returns a const pointer to the MBuf data buffer +@return A const pointer to the MBuf data buffer +*/ +inline const TUint8* RMBuf::Buffer() const +{ return RCommsBuf::RawBase(); } + +/** +Returns a const TUnit8 pointer to the begining of MBuf +@return A const pointer to the begining of MBuf +*/ +inline const TUint8* RMBuf::Ptr() const +{ return (TUint8*)RCommsBuf::RawBase()+RCommsBuf::Offset(); } + +/** +Returns a const TUint8 pointer to the end of the MBuf +@return A const pointer to the end of the MBuf +*/ +inline const TUint8* RMBuf::EndPtr() const +{ return Ptr()+RCommsBuf::Length(); } + +/** +Returns the offset of the MBuf +@return the offset +*/ +inline TInt RMBuf::Offset() const +{ return RCommsBuf::Offset(); } + +/** +Returns the length of the MBuf +@return the length +*/ +inline TInt RMBuf::Length() const +{ return RCommsBuf::Length(); } + +/** +Returns the offset of the last byte of the MBuf +@return the offset +*/ +inline TInt RMBuf::End() const +{ return RCommsBuf::Offset()+RCommsBuf::Length(); } + +/** +Returns the Type of the MBuf (EMBufFree, EMBufData, EMBufHeader) +@return type of the MBuf +*/ +inline TMBufType RMBuf::Type() const + { return static_cast(iCommsBufMetaData.iType); } +#endif +/** +Returns the Next MBuf (as MBuf*) +@return a pointer to the next MBuf +*/ +inline RMBuf* RMBuf::Next() + { return static_cast(iCommsBufMetaData.iNext); } + +/** +Returns the next packet in the chain (as a reference to RMBufChain) +@return A reference to the next Packet (as a reference to RMBufChain) +*/ +inline RMBufChain& RMBuf::NextPkt() + { return static_cast(iCommsBufMetaData.iNextPkt); } + +/** +Returns the Next MBuf (as const MBuf*) +@return a pointer to the next MBuf +*/ +inline const RMBuf* RMBuf::Next() const + { return static_cast(RCommsBuf::Next()); } + +/** +Returns the next packet in the chain (as a const reference to RMBufChain) +@return A reference to the next Packet (as a const reference to RMBufChain) +*/ +inline const RMBufChain& RMBuf::NextPkt() const + { return static_cast(iCommsBufMetaData.iNextPkt); } + +/** +Links a MBuf +@param aBuf the buf to be linked +*/ +inline void RMBuf::Link(RMBuf* aBuf) +{ RCommsBuf::SetNext(aBuf); } + +/** +Unlinks the following MBuf +*/ +inline void RMBuf::Unlink() +{ RCommsBuf::SetNext(NULL); } + +/** +Links a packet to the chain +@param aChain the chain to be linked +*/ +inline void RMBuf::LinkPkt(RMBufChain &aChain) + { iCommsBufMetaData.iNextPkt = aChain; } +#ifndef __KERNEL_MODE__ +/** +Unlinks the packet next to the MBuf +*/ +inline void RMBuf::UnlinkPkt() + { NextPkt().Init(); } + +/** +Sets the type of the MBuf (EMBufFree, EMBufData, EMBufHeader) +@param aType A type +*/ +inline void RMBuf::SetType(TMBufType aType) + { iCommsBufMetaData.iType = aType; } + +/** +Sets the offset +@param aOffset A offset +*/ +inline void RMBuf::SetOffset(TInt aOffset) + { iCommsBufMetaData.iOffset = iCommsBufMetaData.iRawDataOffset + aOffset; } + +/** +Sets the length +@param aLength the length +*/ +inline void RMBuf::SetLength(TInt aLength) + { iCommsBufMetaData.iLength = aLength; } + +/** +Sets data (actually sets the length and the offset) +@param aOffset the offset +@param aLength the length of the data (# of bytes) +*/ +inline void RMBuf::SetData(TInt aOffset, TInt aLength) +{ RCommsBuf::SetDataRange(aOffset, aLength); } + +/** +Adjust the begining of the MBuf +*/ +inline void RMBuf::AdjustStart(TInt aLen) +{ RCommsBuf::AdjustDataStart(aLen); } + +/** +Adjust the end of the MBuf +*/ +inline void RMBuf::AdjustEnd(TInt aLen) +{ RCommsBuf::AdjustDataEnd(aLen); } + +#ifdef _DEBUG_SOCKET_FUNCTIONS +/** +Put the data into the MBuf +@param aVal The value to put +@param aOffset The Offset (=0 if not stated) +*/ +inline void RMBuf::Put(TUint8 aVal, TInt aOffset) + { __DbgPut(aVal, aOffset); } + +/** +Get the data from the MBuf +@param aOffset the offset (=0 if not stated) +@return the data in TUint8 +*/ +inline TUint8 RMBuf::Get(TInt aOffset) const + { return __DbgGet(aOffset); } +#else + +/** +Put the data into the MBuf +@param aVal The value to put +@param aOffset The Offset (=0 if not stated) +*/ +inline void RMBuf::Put(TUint8 aVal, TInt aOffset) + { *(Ptr()+aOffset) = aVal; } + +/** +Get the data from the MBuf +@param aOffset the offset (=0 if not stated) +@return the data in TUint8 +*/ +inline TUint8 RMBuf::Get(TInt aOffset) const + { return *(Ptr()+aOffset); } +#endif + +// +// MBUF ITERATOR +// + +/** +Constructor +@param aChain where iterator points to +*/ +inline TMBufIter::TMBufIter(RMBuf* aChain) + : iIterator(aChain) + { } + +/** +Constructor +@param aChain where iterator points to +*/ +inline TMBufIter::TMBufIter(RMBufChain& aChain) + : iIterator(aChain) + { } + +/** +Provides access to the MBuf +*/ +inline TMBufIter& TMBufIter::operator =(RMBuf* aChain) + { iIterator = aChain; return *this; } + +/** +Provides access to the MBuf Chain +*/ +inline TMBufIter& TMBufIter::operator =(RMBufChain& aChain) + { iIterator = aChain; return *this; } + +/** +iterate to next position operator +*/ +inline RMBuf* TMBufIter::operator ++(TInt) + { + RMBuf* buf = static_cast(iIterator.Current()); + ++iIterator; + return buf; + } + +/** +Returns MBuf +@return a MBuf +*/ +inline TMBufIter::operator RMBuf* () + { return MBuf (); + } + +/** +if there are more objects +@return True if there is more objects +*/ +inline TBool TMBufIter::More() + { return !(iIterator.AtEnd()); } + +/** +Returns MBuf +@return a MBuf +*/ +inline RMBuf* TMBufIter::MBuf() + { return static_cast(iIterator.Current()); } + +#endif // KERNEL_MODE + +#endif // __MBuf_inl__