dox for candidate queue

This commit is contained in:
Craig Dowell
2007-07-12 10:47:12 -07:00
parent 534ab7a030
commit 9f44a9d6a4
3 changed files with 115 additions and 4 deletions

View File

@@ -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)
{

View File

@@ -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

View File

@@ -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