This commit is contained in:
Mathieu Lacage
2007-06-12 22:54:43 +02:00
4 changed files with 28 additions and 25 deletions

View File

@@ -1001,6 +1001,12 @@ PacketMetadata::GetTotalSize (void) const
return totalSize;
}
uint32_t
PacketMetadata::GetUid (void) const
{
return m_packetUid;
}
void
PacketMetadata::Print (std::ostream &os, Buffer data, const PacketPrinter &printer) const
{

View File

@@ -58,6 +58,8 @@ public:
void RemoveAtStart (uint32_t start);
void RemoveAtEnd (uint32_t end);
uint32_t GetUid (void) const;
void PrintDefault (std::ostream &os, Buffer buffer) const;
void Print (std::ostream &os, Buffer buffer, PacketPrinter const &printer) const;

View File

@@ -28,23 +28,20 @@ uint32_t Packet::m_globalUid = 0;
Packet::Packet ()
: m_buffer (),
m_history (m_globalUid, 0),
m_uid (m_globalUid)
m_metadata (m_globalUid, 0)
{
m_globalUid++;
}
Packet::Packet (uint32_t size)
: m_buffer (size),
m_history (m_globalUid, size),
m_uid (m_globalUid)
m_metadata (m_globalUid, size)
{
m_globalUid++;
}
Packet::Packet (uint8_t const*buffer, uint32_t size)
: m_buffer (),
m_history (m_globalUid, size),
m_uid (m_globalUid)
m_metadata (m_globalUid, size)
{
m_globalUid++;
m_buffer.AddAtStart (size);
@@ -52,11 +49,10 @@ Packet::Packet (uint8_t const*buffer, uint32_t size)
i.Write (buffer, size);
}
Packet::Packet (Buffer buffer, Tags tags, PacketMetadata history, uint32_t uid)
Packet::Packet (Buffer buffer, Tags tags, PacketMetadata metadata)
: m_buffer (buffer),
m_tags (tags),
m_history (history),
m_uid (uid)
m_metadata (metadata)
{}
Packet
@@ -65,8 +61,8 @@ Packet::CreateFragment (uint32_t start, uint32_t length) const
Buffer buffer = m_buffer.CreateFragment (start, length);
NS_ASSERT (m_buffer.GetSize () >= start + length);
uint32_t end = m_buffer.GetSize () - (start + length);
PacketMetadata history = m_history.CreateFragment (start, end);
return Packet (buffer, m_tags, history, m_uid);
PacketMetadata metadata = m_metadata.CreateFragment (start, end);
return Packet (buffer, m_tags, metadata);
}
uint32_t
@@ -90,25 +86,25 @@ Packet::AddAtEnd (Packet packet)
* XXX: we might need to merge the tag list of the
* other packet into the current packet.
*/
m_history.AddAtEnd (packet.m_history);
m_metadata.AddAtEnd (packet.m_metadata);
}
void
Packet::AddPaddingAtEnd (uint32_t size)
{
m_buffer.AddAtEnd (size);
m_history.AddPaddingAtEnd (size);
m_metadata.AddPaddingAtEnd (size);
}
void
Packet::RemoveAtEnd (uint32_t size)
{
m_buffer.RemoveAtEnd (size);
m_history.RemoveAtEnd (size);
m_metadata.RemoveAtEnd (size);
}
void
Packet::RemoveAtStart (uint32_t size)
{
m_buffer.RemoveAtStart (size);
m_history.RemoveAtStart (size);
m_metadata.RemoveAtStart (size);
}
void
@@ -126,19 +122,19 @@ Packet::PeekData (void) const
uint32_t
Packet::GetUid (void) const
{
return m_uid;
return m_metadata.GetUid ();
}
void
Packet::Print (std::ostream &os) const
{
m_history.PrintDefault (os, m_buffer);
m_metadata.PrintDefault (os, m_buffer);
}
void
Packet::Print (std::ostream &os, const PacketPrinter &printer) const
{
m_history.Print (os, m_buffer, printer);
m_metadata.Print (os, m_buffer, printer);
}
void

View File

@@ -295,11 +295,10 @@ public:
*/
static void EnableMetadata (void);
private:
Packet (Buffer buffer, Tags tags, PacketMetadata history, uint32_t uid);
Packet (Buffer buffer, Tags tags, PacketMetadata metadata);
Buffer m_buffer;
Tags m_tags;
PacketMetadata m_history;
uint32_t m_uid;
PacketMetadata m_metadata;
static uint32_t m_globalUid;
};
@@ -322,7 +321,7 @@ Packet::AddHeader (T const &header)
uint32_t size = header.GetSize ();
m_buffer.AddAtStart (size);
header.Serialize (m_buffer.Begin ());
m_history.AddHeader (header, size);
m_metadata.AddHeader (header, size);
}
template <typename T>
uint32_t
@@ -332,7 +331,7 @@ Packet::RemoveHeader (T &header)
"Must pass Header subclass to Packet::RemoveHeader");
uint32_t deserialized = header.Deserialize (m_buffer.Begin ());
m_buffer.RemoveAtStart (deserialized);
m_history.RemoveHeader (header, deserialized);
m_metadata.RemoveHeader (header, deserialized);
return deserialized;
}
template <typename T>
@@ -345,7 +344,7 @@ Packet::AddTrailer (T const &trailer)
m_buffer.AddAtEnd (size);
Buffer::Iterator start = m_buffer.End ();
trailer.Serialize (start);
m_history.AddTrailer (trailer, size);
m_metadata.AddTrailer (trailer, size);
}
template <typename T>
uint32_t
@@ -355,7 +354,7 @@ Packet::RemoveTrailer (T &trailer)
"Must pass Trailer subclass to Packet::RemoveTrailer");
uint32_t deserialized = trailer.Deserialize (m_buffer.End ());
m_buffer.RemoveAtEnd (deserialized);
m_history.RemoveTrailer (trailer, deserialized);
m_metadata.RemoveTrailer (trailer, deserialized);
return deserialized;
}