dox for candidate queue
This commit is contained in:
@@ -45,7 +45,6 @@ CandidateQueue::Clear (void)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
CandidateQueue::Push (SPFVertex *vNew)
|
||||
{
|
||||
@@ -109,7 +108,6 @@ CandidateQueue::Size (void)
|
||||
return m_candidates.size ();
|
||||
}
|
||||
|
||||
|
||||
SPFVertex *
|
||||
CandidateQueue::Find (const Ipv4Address addr)
|
||||
{
|
||||
|
||||
@@ -23,19 +23,112 @@
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
/**
|
||||
* \brief a Candidate Queue used in static routing.
|
||||
*
|
||||
* The CandidateQueue is used in the OSPF shortest path computations. It
|
||||
* is a priority queue used to store candidates for the shortest path to a
|
||||
* given network.
|
||||
*
|
||||
* The queue holds Shortest Path First Vertex pointers and orders them
|
||||
* according to the lowest value of the field m_distanceFromRoot. Remaining
|
||||
* vertices are ordered according to increasing distance. This implements a
|
||||
* priority queue.
|
||||
*
|
||||
* Although a STL priority_queue almost does what we want, the requirement
|
||||
* for a Find () operation, the dynamic nature of the data and the derived
|
||||
* requirement for a Reorder () operation led us to implement this simple
|
||||
* enhanced priority queue.
|
||||
*/
|
||||
class CandidateQueue
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Create an empty SPF Candidate Queue.
|
||||
*
|
||||
* @see SPFVertex
|
||||
*/
|
||||
CandidateQueue ();
|
||||
/**
|
||||
* Destroy an SPF Candidate Queue and release any resources held by the
|
||||
* contents.
|
||||
*
|
||||
* @see SPFVertex
|
||||
*/
|
||||
virtual ~CandidateQueue ();
|
||||
|
||||
/**
|
||||
* Empty the Candidate Queue and release all of the resources associated
|
||||
* with the Shortest Path First Vertex pointers in the queue.
|
||||
*
|
||||
* @see SPFVertex
|
||||
*/
|
||||
void Clear (void);
|
||||
void Push (SPFVertex *v);
|
||||
/**
|
||||
* Push a Shortest Path First Vertex pointer onto the queue according to the
|
||||
* priority scheme.
|
||||
*
|
||||
* On completion, the top of the queue will hold the Shortest Path First
|
||||
* Vertex pointer that points to a vertex having lowest value of the field
|
||||
* m_distanceFromRoot. Remaining vertices are ordered according to
|
||||
* increasing distance.
|
||||
*
|
||||
* @see SPFVertex
|
||||
* @param vNew The Shortest Path First Vertex to add to the queue.
|
||||
*/
|
||||
void Push (SPFVertex *vNew);
|
||||
/**
|
||||
* Pop the Shortest Path First Vertex pointer at the top of the queue and
|
||||
* release the resources associated with the vertex.
|
||||
*
|
||||
* @see SPFVertex
|
||||
* @see Top ()
|
||||
*/
|
||||
void Pop (void);
|
||||
/**
|
||||
* Return the Shortest Path First Vertex pointer at the top of the queue.
|
||||
* This method does not pop the SPFVertex* off of the queue, it simply
|
||||
* returns the pointer.
|
||||
*
|
||||
* @see SPFVertex
|
||||
* @see Pop ()
|
||||
* @returns The Shortest Path First Vertex pointer at the top of the queue.
|
||||
*/
|
||||
SPFVertex* Top (void);
|
||||
/**
|
||||
* Test the Candidate Queue to determine if it is empty.
|
||||
*
|
||||
* @returns True if the queue is empty, false otherwise.
|
||||
*/
|
||||
bool Empty (void);
|
||||
/**
|
||||
* Return the number of Shortest Path First Vertex pointers presently
|
||||
* stored in the Candidate Queue.
|
||||
*
|
||||
* @see SPFVertex
|
||||
* @returns The number of SPFVertex* pointers in the Candidate Queue.
|
||||
*/
|
||||
uint32_t Size (void);
|
||||
/**
|
||||
* Searches the Candidate Queue for a Shortest Path First Vertex pointer
|
||||
* that points to a vertex having the given IP address.
|
||||
*
|
||||
* @see SPFVertex
|
||||
* @param addr The IP address to search for.
|
||||
* @returns The SPFVertex* pointer corresponding to the given IP address.
|
||||
*/
|
||||
SPFVertex* Find (const Ipv4Address addr);
|
||||
/**
|
||||
* Reorders the Candidate Queue according to the priority scheme. On
|
||||
* completion, the top of the queue will hold the Shortest Path First
|
||||
* Vertex pointer that points to a vertex having lowest value of the field
|
||||
* m_distanceFromRoot. Remaining vertices are ordered according to
|
||||
* increasing distance.
|
||||
*
|
||||
* This method is provided in case the values of m_distanceFromRoot change
|
||||
* during the routing calculations.
|
||||
*
|
||||
* @see SPFVertex
|
||||
*/
|
||||
void Reorder (void);
|
||||
|
||||
protected:
|
||||
@@ -43,6 +136,18 @@ protected:
|
||||
CandidateList_t m_candidates;
|
||||
|
||||
private:
|
||||
/**
|
||||
* Candidate Queue copy construction is disallowed (not implemented) to
|
||||
* prevent the compiler from slipping in incorrect versions that don't
|
||||
* properly deal with deep copies.
|
||||
*/
|
||||
CandidateQueue (CandidateQueue& sr);
|
||||
/**
|
||||
* Candidate Queue assignment operator is disallowed (not implemented) to
|
||||
* prevent the compiler from slipping in incorrect versions that don't
|
||||
* properly deal with deep copies.
|
||||
*/
|
||||
CandidateQueue& operator= (CandidateQueue& sr);
|
||||
};
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
@@ -282,6 +282,14 @@ protected:
|
||||
Ipv4Address m_routerId;
|
||||
|
||||
private:
|
||||
/**
|
||||
* Static Router copy construction is disallowed.
|
||||
*/
|
||||
StaticRouter (StaticRouter& sr);
|
||||
/**
|
||||
* Static Router copy assignment operator is disallowed.
|
||||
*/
|
||||
StaticRouter& operator= (StaticRouter& sr);
|
||||
};
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
Reference in New Issue
Block a user