Factor ByteTagList::Adjust out of ByteTagList::AddAt{Start,End}

This commit is contained in:
Alexander Krotov
2015-08-08 23:33:55 +03:00
parent 0afb4dcc80
commit 19488ad7aa
3 changed files with 31 additions and 24 deletions

View File

@@ -274,10 +274,9 @@ ByteTagList::Begin (int32_t offsetStart, int32_t offsetEnd) const
}
void
ByteTagList::AddAtEnd (int32_t adjustment, int32_t appendOffset)
ByteTagList::AddAtEnd (int32_t appendOffset)
{
NS_LOG_FUNCTION (this << adjustment << appendOffset);
m_adjustment += adjustment;
NS_LOG_FUNCTION (this << appendOffset);
if (m_maxEnd <= appendOffset - m_adjustment)
{
return;
@@ -307,10 +306,9 @@ ByteTagList::AddAtEnd (int32_t adjustment, int32_t appendOffset)
}
void
ByteTagList::AddAtStart (int32_t adjustment, int32_t prependOffset)
ByteTagList::AddAtStart (int32_t prependOffset)
{
NS_LOG_FUNCTION (this << adjustment << prependOffset);
m_adjustment += adjustment;
NS_LOG_FUNCTION (this << prependOffset);
if (m_minStart >= prependOffset - m_adjustment)
{
return;

View File

@@ -207,26 +207,29 @@ private:
*/
ByteTagList::Iterator Begin (int32_t offsetStart, int32_t offsetEnd) const;
/*
* Adjust the offsets stored internally by the adjustment delta.
*
* \param adjustment value to change stored offsets by
*/
inline void Adjust (int32_t adjustment);
/**
* Adjust the offsets stored internally by the adjustment delta and
* make sure that all offsets are smaller than appendOffset which represents
* Make sure that all offsets are smaller than appendOffset which represents
* the location where new bytes have been added to the byte buffer.
*
* \param adjustment value to change stored offsets by
* \param appendOffset maximum offset value
*
*/
void AddAtEnd (int32_t adjustment, int32_t appendOffset);
void AddAtEnd (int32_t appendOffset);
/**
* Adjust the offsets stored internally by the adjustment delta and
* make sure that all offsets are bigger than prependOffset which represents
* Make sure that all offsets are bigger than prependOffset which represents
* the location where new bytes have been added to the byte buffer.
*
* \param adjustment value to change stored offsets byte
* \param prependOffset minimum offset value
*
*/
void AddAtStart (int32_t adjustment, int32_t prependOffset);
void AddAtStart (int32_t prependOffset);
private:
/**
@@ -256,6 +259,12 @@ private:
struct ByteTagListData *m_data; //!< the ByteTagListData structure
};
void
ByteTagList::Adjust (int32_t adjustment)
{
m_adjustment += adjustment;
}
} // namespace ns3
#endif /* BYTE_TAG_LIST_H */

View File

@@ -256,8 +256,8 @@ Packet::AddHeader (const Header &header)
NS_LOG_FUNCTION (this << header.GetInstanceTypeId ().GetName () << size);
uint32_t orgStart = m_buffer.GetCurrentStartOffset ();
m_buffer.AddAtStart (size);
m_byteTagList.AddAtStart (m_buffer.GetCurrentStartOffset () + size - orgStart,
m_buffer.GetCurrentStartOffset () + size);
m_byteTagList.Adjust (m_buffer.GetCurrentStartOffset () + size - orgStart);
m_byteTagList.AddAtStart (m_buffer.GetCurrentStartOffset () + size);
header.Serialize (m_buffer.Begin ());
m_metadata.AddHeader (header, size);
}
@@ -284,8 +284,8 @@ Packet::AddTrailer (const Trailer &trailer)
NS_LOG_FUNCTION (this << trailer.GetInstanceTypeId ().GetName () << size);
uint32_t orgStart = m_buffer.GetCurrentStartOffset ();
m_buffer.AddAtEnd (size);
m_byteTagList.AddAtEnd (m_buffer.GetCurrentStartOffset () - orgStart,
m_buffer.GetCurrentEndOffset () - size);
m_byteTagList.Adjust (m_buffer.GetCurrentStartOffset () - orgStart);
m_byteTagList.AddAtEnd (m_buffer.GetCurrentEndOffset () - size);
Buffer::Iterator end = m_buffer.End ();
trailer.Serialize (end);
m_metadata.AddTrailer (trailer, size);
@@ -315,11 +315,11 @@ Packet::AddAtEnd (Ptr<const Packet> packet)
uint32_t bEnd = packet->m_buffer.GetCurrentEndOffset ();
m_buffer.AddAtEnd (packet->m_buffer);
uint32_t appendPrependOffset = m_buffer.GetCurrentEndOffset () - packet->m_buffer.GetSize ();
m_byteTagList.AddAtEnd (m_buffer.GetCurrentStartOffset () - aStart,
appendPrependOffset);
m_byteTagList.Adjust (m_buffer.GetCurrentStartOffset () - aStart);
m_byteTagList.AddAtEnd (appendPrependOffset);
ByteTagList copy = packet->m_byteTagList;
copy.AddAtStart (m_buffer.GetCurrentEndOffset () - bEnd,
appendPrependOffset);
copy.Adjust (m_buffer.GetCurrentEndOffset () - bEnd);
copy.AddAtStart (appendPrependOffset);
m_byteTagList.Add (copy);
m_metadata.AddAtEnd (packet->m_metadata);
}
@@ -329,8 +329,8 @@ Packet::AddPaddingAtEnd (uint32_t size)
NS_LOG_FUNCTION (this << size);
uint32_t orgStart = m_buffer.GetCurrentStartOffset ();
m_buffer.AddAtEnd (size);
m_byteTagList.AddAtEnd (m_buffer.GetCurrentStartOffset () - orgStart,
m_buffer.GetCurrentEndOffset () - size);
m_byteTagList.Adjust (m_buffer.GetCurrentStartOffset () - orgStart);
m_byteTagList.AddAtEnd (m_buffer.GetCurrentEndOffset () - size);
m_metadata.AddPaddingAtEnd (size);
}
void