1 // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // sbque.h - TCP sequence block queue
15 // Defines a queue for keeping tabs on contiguous blocks of sequence numbers.
37 friend class SequenceBlockQueue;
41 SequenceBlock(TTcpSeqNum aLeft, TTcpSeqNum aRight) : iLeft(aLeft), iRight(aRight) {}
50 /** Sequence Block Queue.
54 class SequenceBlockQueue : public TDblQue<SequenceBlock>
57 SequenceBlockQueue() : TDblQue<SequenceBlock>(_FOFF(SequenceBlock, iLink)) { iCount = 0; iOrdered = ETrue; }
58 inline ~SequenceBlockQueue() { Clear(); }
59 IMPORT_C SequenceBlock *AddOrdered(TTcpSeqNum aLeft, TTcpSeqNum aRight);
60 IMPORT_C SequenceBlock *AddUnordered(TTcpSeqNum aLeft, TTcpSeqNum aRight);
61 inline SequenceBlock *AddOrdered(const SequenceBlock *aBlock) { return AddOrdered(aBlock->iLeft, aBlock->iRight); }
62 inline SequenceBlock *AddUnordered(const SequenceBlock *aBlock) { return AddUnordered(aBlock->iLeft, aBlock->iRight); }
63 IMPORT_C SequenceBlock *Find(TTcpSeqNum aSeq);
64 IMPORT_C TInt FindGap(TTcpSeqNum& aLeft, TTcpSeqNum& aRight);
65 IMPORT_C void Prune(TTcpSeqNum aLeft);
66 IMPORT_C void Limit(TInt aCount);
67 IMPORT_C void Clear();
68 inline TInt Count() const { return iCount; }
69 inline TInt ByteCount() const { return iBytes; }
77 typedef TDblQueIter<SequenceBlock> SequenceBlockQueueIter;