src/common/buffer.cc
changeset 3032 77a8e808c341
parent 3031 c34e9d31a75d
child 3035 644bfc099992
equal deleted inserted replaced
3031:c34e9d31a75d 3032:77a8e808c341
   432   NS_ASSERT (CheckInternalState ());
   432   NS_ASSERT (CheckInternalState ());
   433 
   433 
   434   return delta;
   434   return delta;
   435 }
   435 }
   436 
   436 
   437 void 
   437 int32_t
   438 Buffer::AddAtEnd (const Buffer &o)
   438 Buffer::AddAtEnd (const Buffer &o)
   439 {
   439 {
       
   440   int32_t orgStart = m_start;
   440   if (m_end == m_zeroAreaEnd &&
   441   if (m_end == m_zeroAreaEnd &&
   441       o.m_start == o.m_zeroAreaStart &&
   442       o.m_start == o.m_zeroAreaStart &&
   442       o.m_zeroAreaEnd - o.m_zeroAreaStart > 0)
   443       o.m_zeroAreaEnd - o.m_zeroAreaStart > 0)
   443     {
   444     {
   444       /**
   445       /**
   454       Buffer::Iterator dst = End ();
   455       Buffer::Iterator dst = End ();
   455       dst.Prev (endData);
   456       dst.Prev (endData);
   456       Buffer::Iterator src = o.End ();
   457       Buffer::Iterator src = o.End ();
   457       src.Prev (endData);
   458       src.Prev (endData);
   458       dst.Write (src, o.End ());
   459       dst.Write (src, o.End ());
   459       return;
   460       return m_start - orgStart;
   460     }
   461     }
   461   Buffer dst = CreateFullCopy ();
   462   Buffer dst = CreateFullCopy ();
   462   Buffer src = o.CreateFullCopy ();
   463   Buffer src = o.CreateFullCopy ();
   463 
   464 
   464   dst.AddAtEnd (src.GetSize ());
   465   dst.AddAtEnd (src.GetSize ());
   465   Buffer::Iterator destStart = dst.End ();
   466   Buffer::Iterator destStart = dst.End ();
   466   destStart.Prev (src.GetSize ());
   467   destStart.Prev (src.GetSize ());
   467   destStart.Write (src.Begin (), src.End ());
   468   destStart.Write (src.Begin (), src.End ());
   468   *this = dst;
   469   *this = dst;
       
   470   return m_start - orgStart;
   469 }
   471 }
   470 
   472 
   471 void 
   473 void 
   472 Buffer::RemoveAtStart (uint32_t start)
   474 Buffer::RemoveAtStart (uint32_t start)
   473 {
   475 {