simplify code logic
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Wed May 07 15:18:33 2008 -0700 (21 months ago)
changeset 3053a14d83bacc9c
parent 3052 f64799121881
child 3054 b152a62d2017
simplify code logic
src/common/packet-metadata.cc
src/common/packet-metadata.h
     1.1 --- a/src/common/packet-metadata.cc	Wed May 07 15:02:07 2008 -0700
     1.2 +++ b/src/common/packet-metadata.cc	Wed May 07 15:18:33 2008 -0700
     1.3 @@ -178,6 +178,14 @@
     1.4    value >>= 8;
     1.5    buffer[1] = value;
     1.6  }
     1.7 +void
     1.8 +PacketMetadata::Append32 (uint32_t value,  uint8_t *buffer)
     1.9 +{
    1.10 +  buffer[0] = value & 0xff;
    1.11 +  buffer[1] = (value >> 8) & 0xff;
    1.12 +  buffer[2] = (value >> 16) & 0xff;
    1.13 +  buffer[3] = (value >> 24) & 0xff;
    1.14 +}
    1.15  bool
    1.16  PacketMetadata::TryToAppend16 (uint16_t value,  uint8_t **pBuffer, uint8_t *end)
    1.17  {
    1.18 @@ -397,7 +405,7 @@
    1.19    NS_ASSERT (m_used != item->prev && m_used != item->next);
    1.20    uint32_t typeUidSize = GetUleb128Size (item->typeUid);
    1.21    uint32_t sizeSize = GetUleb128Size (item->size);
    1.22 -  uint32_t n = typeUidSize + sizeSize + 2 + 2 + 2;
    1.23 +  uint32_t n =  2 + 2 + typeUidSize + sizeSize + 2;
    1.24    if (m_used + n > m_data->m_size ||
    1.25        (m_head != 0xffff &&
    1.26         m_data->m_count != 1 &&
    1.27 @@ -426,43 +434,40 @@
    1.28    NS_ASSERT (m_data != 0);
    1.29    uint32_t typeUid = ((item->typeUid & 0x1) == 0x1)?item->typeUid:item->typeUid+1;
    1.30    NS_ASSERT (m_used != prev && m_used != next);
    1.31 - append:
    1.32 -  uint8_t *start = &m_data->m_data[m_used];
    1.33 -  uint8_t *end = &m_data->m_data[m_data->m_size];
    1.34 -  if (end - start >= 14 &&
    1.35 -      (m_head == 0xffff ||
    1.36 -       m_data->m_count == 1 ||
    1.37 -       m_used == m_data->m_dirtyEnd))
    1.38 +
    1.39 +  uint32_t typeUidSize = GetUleb128Size (typeUid);
    1.40 +  uint32_t sizeSize = GetUleb128Size (item->size);
    1.41 +  uint32_t fragStartSize = GetUleb128Size (extraItem->fragmentStart);
    1.42 +  uint32_t fragEndSize = GetUleb128Size (extraItem->fragmentEnd);
    1.43 +  uint32_t n = 2 + 2 + typeUidSize + sizeSize + 2 + fragStartSize + fragEndSize + 4;
    1.44 +
    1.45 +  if (m_used + n > m_data->m_size ||
    1.46 +      (m_head != 0xffff &&
    1.47 +       m_data->m_count != 1 &&
    1.48 +       m_used != m_data->m_dirtyEnd))
    1.49      {
    1.50 -      uint8_t *buffer = start;
    1.51 -
    1.52 -      Append16 (next, buffer);
    1.53 -      buffer += 2;
    1.54 -      Append16 (prev, buffer);
    1.55 -      buffer += 2;
    1.56 -      if (TryToAppend (typeUid, &buffer, end) &&
    1.57 -          TryToAppend (item->size, &buffer, end) &&
    1.58 -          TryToAppend16 (item->chunkUid, &buffer, end) &&
    1.59 -          TryToAppend (extraItem->fragmentStart, &buffer, end) &&
    1.60 -          TryToAppend (extraItem->fragmentEnd, &buffer, end) &&
    1.61 -          TryToAppend32 (extraItem->packetUid, &buffer, end))
    1.62 -        {
    1.63 -          uintptr_t written = buffer - start;
    1.64 -          NS_ASSERT (written <= 0xffff);
    1.65 -          NS_ASSERT (written >= 14);
    1.66 -          return written;
    1.67 -        }
    1.68 +      ReserveCopy (n);
    1.69      }
    1.70  
    1.71 -  uint32_t n = GetUleb128Size (typeUid);
    1.72 -  n += GetUleb128Size (item->size);
    1.73 -  n += 2;
    1.74 -  n += GetUleb128Size (extraItem->fragmentStart);
    1.75 -  n += GetUleb128Size (extraItem->fragmentEnd);
    1.76 -  n += 4;
    1.77 -  n += 2 + 2;
    1.78 -  ReserveCopy (n);
    1.79 -  goto append;
    1.80 +  uint8_t *buffer = &m_data->m_data[m_used];
    1.81 +
    1.82 +  Append16 (next, buffer);
    1.83 +  buffer += 2;
    1.84 +  Append16 (prev, buffer);
    1.85 +  buffer += 2;
    1.86 +  AppendValue (typeUid, buffer);
    1.87 +  buffer += typeUidSize;
    1.88 +  AppendValue (item->size, buffer);
    1.89 +  buffer += sizeSize;
    1.90 +  Append16 (item->chunkUid, buffer);
    1.91 +  buffer += 2;
    1.92 +  AppendValue (extraItem->fragmentStart, buffer);
    1.93 +  buffer += fragStartSize;
    1.94 +  AppendValue (extraItem->fragmentEnd, buffer);
    1.95 +  buffer += fragEndSize;
    1.96 +  Append32 (extraItem->packetUid, buffer);
    1.97 +
    1.98 +  return n;
    1.99  }
   1.100  
   1.101  void
     2.1 --- a/src/common/packet-metadata.h	Wed May 07 15:02:07 2008 -0700
     2.2 +++ b/src/common/packet-metadata.h	Wed May 07 15:18:33 2008 -0700
     2.3 @@ -252,6 +252,7 @@
     2.4    inline uint32_t GetUleb128Size (uint32_t value) const;
     2.5    uint32_t ReadUleb128 (const uint8_t **pBuffer) const;
     2.6    inline void Append16 (uint16_t value, uint8_t *buffer);
     2.7 +  inline void Append32 (uint32_t value, uint8_t *buffer);
     2.8    inline bool TryToAppend (uint32_t value, uint8_t **pBuffer, uint8_t *end);
     2.9    inline bool TryToAppend32 (uint32_t value, uint8_t **pBuffer, uint8_t *end);
    2.10    inline bool TryToAppend16 (uint16_t value, uint8_t **pBuffer, uint8_t *end);