View | Details | Raw Unified | Return to bug 80
Collapse All | Expand All

(-)a/src/common/packet-metadata.cc (-8 / +12 lines)
 Lines 34-40   bool PacketMetadata::m_metadataSkipped = Link Here 
34
bool PacketMetadata::m_metadataSkipped = false;
34
bool PacketMetadata::m_metadataSkipped = false;
35
uint32_t PacketMetadata::m_maxSize = 0;
35
uint32_t PacketMetadata::m_maxSize = 0;
36
uint16_t PacketMetadata::m_chunkUid = 0;
36
uint16_t PacketMetadata::m_chunkUid = 0;
37
PacketMetadata::DataFreeList PacketMetadata::m_freeList;
37
PacketMetadata::DataFreeList *PacketMetadata::m_freeList = 0;
38
bool g_optOne = false;
38
bool g_optOne = false;
39
39
40
PacketMetadata::DataFreeList::~DataFreeList ()
40
PacketMetadata::DataFreeList::~DataFreeList ()
 Lines 619-632   PacketMetadata::Create (uint32_t size) Link Here 
619
PacketMetadata::Create (uint32_t size)
619
PacketMetadata::Create (uint32_t size)
620
{
620
{
621
  NS_LOG_LOGIC ("create size="<<size<<", max="<<m_maxSize);
621
  NS_LOG_LOGIC ("create size="<<size<<", max="<<m_maxSize);
622
  if (!m_freeList)
623
    {
624
      m_freeList = new PacketMetadata::DataFreeList;
625
    }
622
  if (size > m_maxSize)
626
  if (size > m_maxSize)
623
    {
627
    {
624
      m_maxSize = size;
628
      m_maxSize = size;
625
    }
629
    }
626
  while (!m_freeList.empty ()) 
630
  while (!m_freeList->empty ()) 
627
    {
631
    {
628
      struct PacketMetadata::Data *data = m_freeList.back ();
632
      struct PacketMetadata::Data *data = m_freeList->back ();
629
      m_freeList.pop_back ();
633
      m_freeList->pop_back ();
630
      if (data->m_size >= size) 
634
      if (data->m_size >= size) 
631
        {
635
        {
632
          NS_LOG_LOGIC ("create found size="<<data->m_size);
636
          NS_LOG_LOGIC ("create found size="<<data->m_size);
 Lines 643-658   void Link Here 
643
void
647
void
644
PacketMetadata::Recycle (struct PacketMetadata::Data *data)
648
PacketMetadata::Recycle (struct PacketMetadata::Data *data)
645
{
649
{
646
  NS_LOG_LOGIC ("recycle size="<<data->m_size<<", list="<<m_freeList.size ());
650
  NS_LOG_LOGIC ("recycle size="<<data->m_size<<", list="<<m_freeList->size ());
647
  NS_ASSERT (data->m_count == 0);
651
  NS_ASSERT (data->m_count == 0);
648
  if (m_freeList.size () > 1000 ||
652
  if (m_freeList->size () > 1000 ||
649
      data->m_size < m_maxSize) 
653
      data->m_size < m_maxSize) 
650
    {
654
    {
651
      PacketMetadata::Deallocate (data);
655
      PacketMetadata::Deallocate (data);
652
    } 
656
    } 
653
  else 
657
  else 
654
    {
658
    {
655
      m_freeList.push_back (data);
659
      m_freeList->push_back (data);
656
    }
660
    }
657
}
661
}
658
662
(-)a/src/common/packet-metadata.h (-1 / +1 lines)
 Lines 232-238   private: Link Here 
232
  static struct PacketMetadata::Data *Allocate (uint32_t n);
232
  static struct PacketMetadata::Data *Allocate (uint32_t n);
233
  static void Deallocate (struct PacketMetadata::Data *data);
233
  static void Deallocate (struct PacketMetadata::Data *data);
234
  
234
  
235
  static DataFreeList m_freeList;
235
  static DataFreeList *m_freeList;
236
  static bool m_enable;
236
  static bool m_enable;
237
237
238
  // set to true when adding metadata to a packet is skipped because
238
  // set to true when adding metadata to a packet is skipped because

Return to bug 80