void 
ByteTagList::AddAtStart (int32_t adjustment, int32_t prependOffset)
{
  NS_LOG_FUNCTION (this << adjustment << prependOffset);
  if (adjustment == 0 && !IsDirtyAtStart (prependOffset))
    {
      return;
    }
  ByteTagList list;
  ByteTagList::Iterator i = BeginAll ();
  while (i.HasNext ())
    {
      ByteTagList::Iterator::Item item = i.Next ();
      item.start += adjustment;
      item.end += adjustment;

      if (item.end <= prependOffset)
        {
          continue;
        }
      else if (item.end > prependOffset && item.start < prependOffset)
        {
          item.start = prependOffset;
        }
      else
        {
          // nothing to do.
        }
      TagBuffer buf = list.Add (item.tid, item.size, item.start, item.end);
      buf.CopyFrom (item.buf);
    }
  *this = list;
}
TagBuffer
ByteTagList::Add (TypeId tid, uint32_t bufferSize, int32_t start, int32_t end)
{
  NS_LOG_FUNCTION (this << tid << bufferSize << start << end);
  uint32_t spaceNeeded = m_used + bufferSize + 4 + 4 + 4 + 4;
  NS_ASSERT (m_used <= spaceNeeded);
  if (m_data == 0)
    {
      m_data = Allocate (spaceNeeded);
      m_used = 0;
    } 
  else if (m_data->size < spaceNeeded ||
           (m_data->count != 1 && m_data->dirty != m_used))
    {
      struct ByteTagListData *newData = Allocate (spaceNeeded);
      std::memcpy (&newData->data, &m_data->data, m_used);
      Deallocate (m_data);
      m_data = newData;
    }
  TagBuffer tag = TagBuffer (&m_data->data[m_used], 
                             &m_data->data[spaceNeeded]);
  tag.WriteU32 (tid.GetUid ());
  tag.WriteU32 (bufferSize);
  tag.WriteU32 (start);
  tag.WriteU32 (end);
  m_used = spaceNeeded;
  m_data->dirty = m_used;
  return tag;
}
void 
ByteTagList::Add (const ByteTagList &o)
{
  NS_LOG_FUNCTION (this << &o);
  ByteTagList::Iterator i = o.BeginAll ();
  while (i.HasNext ())
    {
      ByteTagList::Iterator::Item item = i.Next ();
      TagBuffer buf = Add (item.tid, item.size, item.start, item.end);
      buf.CopyFrom (item.buf);
    }
}
void
ByteTagList::Iterator::PrepareForNext (void)
{
  NS_LOG_FUNCTION (this);
  while (m_current < m_end)
    {
      TagBuffer buf = TagBuffer (m_current, m_end);
      m_nextTid = buf.ReadU32 ();
      m_nextSize = buf.ReadU32 ();
      m_nextStart = buf.ReadU32 ();
      m_nextEnd = buf.ReadU32 ();
      if (m_nextStart >= m_offsetEnd || m_nextEnd <= m_offsetStart)
        {
          m_current += 4 + 4 + 4 + 4 + m_nextSize;
        }
      else
        {
          break;
        }
    }
}
示例#5
0
void 
SocketSetDontFragmentTag::Deserialize (TagBuffer i)
{
  NS_LOG_FUNCTION (this << &i);
  m_dontFragment = (i.ReadU8 () == 1) ? true : false;
}
示例#6
0
void 
SocketSetDontFragmentTag::Serialize (TagBuffer i) const
{
  NS_LOG_FUNCTION (this << &i);
  i.WriteU8 (m_dontFragment ? 1 : 0);
}
示例#7
0
void 
SocketIpv6HopLimitTag::Deserialize (TagBuffer i)
{ 
  m_hopLimit = i.ReadU8 ();
}
示例#8
0
void 
SocketIpv6HopLimitTag::Serialize (TagBuffer i) const
{ 
  i.WriteU8 (m_hopLimit);
}
示例#9
0
void 
SocketIpTtlTag::Deserialize (TagBuffer i)
{ 
  NS_LOG_FUNCTION (this << &i);
  m_ttl = i.ReadU8 ();
}
示例#10
0
void
SocketIpv6TclassTag::Serialize (TagBuffer i) const
{
  i.WriteU8 (m_ipv6Tclass);
}
示例#11
0
void
LtePhyTag::Serialize (TagBuffer i) const
{
  i.WriteU16 (m_cellId);
}
void
DelayJitterEstimationTimestampTag::Deserialize (TagBuffer i)
{
  m_creationTime = i.ReadU64 ();
}
void
DelayJitterEstimationTimestampTag::Serialize (TagBuffer i) const
{
  i.WriteU64 (m_creationTime);
}
示例#14
0
 virtual void  Deserialize (TagBuffer i)
   {
     m_val = i.ReadU16();
   }
示例#15
0
 virtual void  Serialize (TagBuffer i) const
   {
     i.WriteU16 (m_val);
   }
示例#16
0
void
SocketIpTosTag::Serialize (TagBuffer i) const
{
  i.WriteU8 (m_ipTos);
}
示例#17
0
void
SocketIpTosTag::Deserialize (TagBuffer i)
{
  m_ipTos = i.ReadU8();
}
示例#18
0
void
LtePhyTag::Deserialize (TagBuffer i)
{
  m_cellId = i.ReadU16 ();
}
示例#19
0
void
SocketIpv6TclassTag::Deserialize (TagBuffer i)
{
  m_ipv6Tclass = i.ReadU8();
}
示例#20
0
void 
SocketIpTtlTag::Serialize (TagBuffer i) const
{ 
  NS_LOG_FUNCTION (this << &i);
  i.WriteU8 (m_ttl);
}