some more cleanup
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Sat May 31 10:57:49 2008 -0700 (20 months ago)
changeset 320096e015d15aeb
parent 3199 03265a7051b6
child 3201 c0e113ac69d8
some more cleanup
src/common/packet-metadata.cc
src/common/packet-metadata.h
     1.1 --- a/src/common/packet-metadata.cc	Sat May 31 10:47:24 2008 -0700
     1.2 +++ b/src/common/packet-metadata.cc	Sat May 31 10:57:49 2008 -0700
     1.3 @@ -186,101 +186,6 @@
     1.4    buffer[2] = (value >> 16) & 0xff;
     1.5    buffer[3] = (value >> 24) & 0xff;
     1.6  }
     1.7 -bool
     1.8 -PacketMetadata::TryToAppend16 (uint16_t value,  uint8_t **pBuffer, uint8_t *end)
     1.9 -{
    1.10 -  uint8_t *start = *pBuffer;
    1.11 -  if (start + 1 < end)
    1.12 -    {
    1.13 -      start[0] = value & 0xff;
    1.14 -      start[1] = value >> 8;
    1.15 -      *pBuffer = start + 2;
    1.16 -      return true;
    1.17 -    }
    1.18 -  return false;
    1.19 -}
    1.20 -bool
    1.21 -PacketMetadata::TryToAppend32 (uint32_t value,  uint8_t **pBuffer, uint8_t *end)
    1.22 -{
    1.23 -  uint8_t *start = *pBuffer;
    1.24 -  if (start + 3 < end)
    1.25 -    {
    1.26 -      start[0] = value & 0xff;
    1.27 -      start[1] = (value >> 8) & 0xff;
    1.28 -      start[2] = (value >> 16) & 0xff;
    1.29 -      start[3] = (value >> 24) & 0xff;
    1.30 -      *pBuffer = start + 4;
    1.31 -      return true;
    1.32 -    }
    1.33 -  return false;
    1.34 -}
    1.35 -bool
    1.36 -PacketMetadata::TryToAppend (uint32_t value, uint8_t **pBuffer, uint8_t *end)
    1.37 -{
    1.38 -  uint8_t *start = *pBuffer;
    1.39 -  if (value < 0x80 && start < end)
    1.40 -    {
    1.41 -      start[0] = value;
    1.42 -      *pBuffer = start + 1;
    1.43 -      return true;
    1.44 -    }
    1.45 -  if (value < 0x4000 && start + 1 < end)
    1.46 -    {
    1.47 -      uint8_t byte = value & (~0x80);
    1.48 -      start[0] = 0x80 | byte;
    1.49 -      value >>= 7;
    1.50 -      start[1] = value;
    1.51 -      *pBuffer = start + 2;
    1.52 -      return true;
    1.53 -    }
    1.54 -  if (value < 0x200000 && start + 2 < end)
    1.55 -    {
    1.56 -      uint8_t byte = value & (~0x80);
    1.57 -      start[0] = 0x80 | byte;
    1.58 -      value >>= 7;
    1.59 -      byte = value & (~0x80);
    1.60 -      start[1] = 0x80 | byte;
    1.61 -      value >>= 7;
    1.62 -      byte = value & (~0x80);
    1.63 -      start[2] = value;
    1.64 -      *pBuffer = start + 3;
    1.65 -      return true;
    1.66 -    }
    1.67 -  if (value < 0x10000000 && start + 3 < end)
    1.68 -    {
    1.69 -      uint8_t byte = value & (~0x80);
    1.70 -      start[0] = 0x80 | byte;
    1.71 -      value >>= 7;
    1.72 -      byte = value & (~0x80);
    1.73 -      start[1] = 0x80 | byte;
    1.74 -      value >>= 7;
    1.75 -      byte = value & (~0x80);
    1.76 -      start[2] = 0x80 | byte;
    1.77 -      value >>= 7;
    1.78 -      start[3] = value;
    1.79 -      *pBuffer = start + 4;
    1.80 -      return true;
    1.81 -    }
    1.82 -  if (start + 4 < end)
    1.83 -    {
    1.84 -      uint8_t byte = value & (~0x80);
    1.85 -      start[0] = 0x80 | byte;
    1.86 -      value >>= 7;
    1.87 -      byte = value & (~0x80);
    1.88 -      start[1] = 0x80 | byte;
    1.89 -      value >>= 7;
    1.90 -      byte = value & (~0x80);
    1.91 -      start[2] = 0x80 | byte;
    1.92 -      value >>= 7;
    1.93 -      byte = value & (~0x80);
    1.94 -      start[3] = 0x80 | byte;
    1.95 -      value >>= 7;
    1.96 -      start[4] = value;
    1.97 -      *pBuffer = start + 5;
    1.98 -      return true;
    1.99 -    }
   1.100 -  return false;
   1.101 -}
   1.102  
   1.103  void
   1.104  PacketMetadata::AppendValueExtra (uint32_t value, uint8_t *buffer)
   1.105 @@ -481,9 +386,6 @@
   1.106   * \param extraItem the extra item data to write
   1.107   * \param available the number of bytes which can 
   1.108   *        be written without having to rewrite the buffer entirely.
   1.109 - *
   1.110 - * XXX: should rewrite the code below to avoid using 
   1.111 - * TryToAppend calls.
   1.112   */
   1.113  void
   1.114  PacketMetadata::ReplaceTail (PacketMetadata::SmallItem *item, 
   1.115 @@ -507,27 +409,35 @@
   1.116        available = m_data->m_size - m_tail;
   1.117      }
   1.118  
   1.119 -  if (available >= 14 &&
   1.120 +  uint32_t typeUid = ((item->typeUid & 0x1) == 0x1)?item->typeUid:item->typeUid+1;
   1.121 +  uint32_t typeUidSize = GetUleb128Size (typeUid);
   1.122 +  uint32_t sizeSize = GetUleb128Size (item->size);
   1.123 +  uint32_t fragStartSize = GetUleb128Size (extraItem->fragmentStart);
   1.124 +  uint32_t fragEndSize = GetUleb128Size (extraItem->fragmentEnd);
   1.125 +  uint32_t n = 2 + 2 + typeUidSize + sizeSize + 2 + fragStartSize + fragEndSize + 4;
   1.126 +
   1.127 +  if (available >= n &&
   1.128        m_data->m_count == 1)
   1.129      {
   1.130        uint8_t *buffer = &m_data->m_data[m_tail];
   1.131 -      uint8_t *end = buffer + available;
   1.132 -
   1.133        Append16 (item->next, buffer);
   1.134        buffer += 2;
   1.135        Append16 (item->prev, buffer);
   1.136        buffer += 2;
   1.137 -      if (TryToAppend (item->typeUid, &buffer, end) &&
   1.138 -          TryToAppend (item->size, &buffer, end) &&
   1.139 -          TryToAppend16 (item->chunkUid, &buffer, end) &&
   1.140 -          TryToAppend (extraItem->fragmentStart, &buffer, end) &&
   1.141 -          TryToAppend (extraItem->fragmentEnd, &buffer, end) &&
   1.142 -          TryToAppend32 (extraItem->packetUid, &buffer, end))
   1.143 -        {
   1.144 -          m_used = buffer - &m_data->m_data[0];
   1.145 -          m_data->m_dirtyEnd = m_used;
   1.146 -          return;
   1.147 -        }
   1.148 +      AppendValue (typeUid, buffer);
   1.149 +      buffer += typeUidSize;
   1.150 +      AppendValue (item->size, buffer);
   1.151 +      buffer += sizeSize;
   1.152 +      Append16 (item->chunkUid, buffer);
   1.153 +      buffer += 2;
   1.154 +      AppendValue (extraItem->fragmentStart, buffer);
   1.155 +      buffer += fragStartSize;
   1.156 +      AppendValue (extraItem->fragmentEnd, buffer);
   1.157 +      buffer += fragEndSize;
   1.158 +      Append32 (extraItem->packetUid, buffer);
   1.159 +      m_used = buffer - &m_data->m_data[0];
   1.160 +      m_data->m_dirtyEnd = m_used;
   1.161 +      return;
   1.162      }
   1.163    
   1.164    // create a copy of the packet.
     2.1 --- a/src/common/packet-metadata.h	Sat May 31 10:47:24 2008 -0700
     2.2 +++ b/src/common/packet-metadata.h	Sat May 31 10:57:49 2008 -0700
     2.3 @@ -254,9 +254,6 @@
     2.4    uint32_t ReadUleb128 (const uint8_t **pBuffer) const;
     2.5    inline void Append16 (uint16_t value, uint8_t *buffer);
     2.6    inline void Append32 (uint32_t value, uint8_t *buffer);
     2.7 -  inline bool TryToAppend (uint32_t value, uint8_t **pBuffer, uint8_t *end);
     2.8 -  inline bool TryToAppend32 (uint32_t value, uint8_t **pBuffer, uint8_t *end);
     2.9 -  inline bool TryToAppend16 (uint16_t value, uint8_t **pBuffer, uint8_t *end);
    2.10    inline void AppendValue (uint32_t value, uint8_t *buffer);
    2.11    void AppendValueExtra (uint32_t value, uint8_t *buffer);
    2.12    inline void Reserve (uint32_t n);