move Packet::AddAtEnd implementation to the Buffer code.
--- a/src/common/buffer.cc Tue Apr 22 13:54:05 2008 -0700
+++ b/src/common/buffer.cc Tue Apr 22 14:18:33 2008 -0700
@@ -462,6 +462,19 @@
}
void
+Buffer::AddAtEnd (const Buffer &o)
+{
+ Buffer dst = CreateFullCopy ();
+ Buffer src = o.CreateFullCopy ();
+
+ dst.AddAtEnd (src.GetSize ());
+ Buffer::Iterator destStart = dst.End ();
+ destStart.Prev (src.GetSize ());
+ destStart.Write (src.Begin (), src.End ());
+ *this = dst;
+}
+
+void
Buffer::RemoveAtStart (uint32_t start)
{
NS_ASSERT (CheckInternalState ());
--- a/src/common/buffer.h Tue Apr 22 13:54:05 2008 -0700
+++ b/src/common/buffer.h Tue Apr 22 14:18:33 2008 -0700
@@ -410,6 +410,8 @@
* pointing to this Buffer.
*/
void AddAtEnd (uint32_t end);
+
+ void AddAtEnd (const Buffer &o);
/**
* \param start size to remove
*
--- a/src/common/packet.cc Tue Apr 22 13:54:05 2008 -0700
+++ b/src/common/packet.cc Tue Apr 22 14:18:33 2008 -0700
@@ -159,14 +159,7 @@
void
Packet::AddAtEnd (Ptr<const Packet> packet)
{
- Buffer src = packet->m_buffer.CreateFullCopy ();
- Buffer dst = m_buffer.CreateFullCopy ();
-
- dst.AddAtEnd (src.GetSize ());
- Buffer::Iterator destStart = dst.End ();
- destStart.Prev (src.GetSize ());
- destStart.Write (src.Begin (), src.End ());
- m_buffer = dst;
+ m_buffer.AddAtEnd (packet->m_buffer);
/**
* XXX: we might need to merge the tag list of the
* other packet into the current packet.