ns-3
ns3::HeapScheduler Class Reference

a binary heap event scheduler More...

#include <heap-scheduler.h>

Inheritance diagram for ns3::HeapScheduler:
Collaboration diagram for ns3::HeapScheduler:

List of all members.

Public Member Functions

virtual void Insert (const Event &ev)
virtual bool IsEmpty (void) const
virtual Event PeekNext (void) const
virtual Event RemoveNext (void)
virtual void Remove (const Event &ev)

Static Public Member Functions

static TypeId GetTypeId (void)
 This method returns the TypeId associated to ns3::HeapScheduler.

Detailed Description

a binary heap event scheduler

This code started as a c++ translation of a java-based code written in 2005 to implement a heap sort. So, this binary heap is really a pretty straightforward implementation of the classic data structure. Not much to say about it.

What is smart about this code ?

  • it does not use the index 0 in the array to avoid having to convert C-style array indexes (which start at zero) and heap-style indexes (which start at 1). This is why all indexes start at 1, and that the index of the root is 1.
  • It uses a slightly non-standard while loop for top-down heapify to move one if statement out of the loop.

Member Function Documentation

TypeId ns3::HeapScheduler::GetTypeId ( void  )
static

This method returns the TypeId associated to ns3::HeapScheduler.

No Attributes defined for this type.
No TraceSources defined for this type.

Reimplemented from ns3::Scheduler.

References ns3::TypeId::SetParent().

void ns3::HeapScheduler::Insert ( const Event ev)
virtual
Parameters:
evevent to store in the event list

Implements ns3::Scheduler.

bool ns3::HeapScheduler::IsEmpty ( void  ) const
virtual
Returns:
true if the event list is empty and false otherwise.

Implements ns3::Scheduler.

Scheduler::Event ns3::HeapScheduler::PeekNext ( void  ) const
virtual
Returns:
a pointer to the next earliest event. The caller takes ownership of the returned pointer.

This method cannot be invoked if the list is empty.

Implements ns3::Scheduler.

void ns3::HeapScheduler::Remove ( const Event ev)
virtual
Parameters:
evthe event to remove

This methods cannot be invoked if the list is empty.

Implements ns3::Scheduler.

References NS_ASSERT.

Scheduler::Event ns3::HeapScheduler::RemoveNext ( void  )
virtual

This method cannot be invoked if the list is empty. Remove the next earliest event from the event list.

Implements ns3::Scheduler.


The documentation for this class was generated from the following files: