A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
candidate-queue.h
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright 2007 University of Washington
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Craig Dowell (craigdo@ee.washington.edu)
19  */
20 
21 #ifndef CANDIDATE_QUEUE_H
22 #define CANDIDATE_QUEUE_H
23 
24 #include <stdint.h>
25 #include <list>
26 #include "ns3/ipv4-address.h"
27 
28 namespace ns3 {
29 
30 class SPFVertex;
31 
50 {
51 public:
58  CandidateQueue ();
59 
67  virtual ~CandidateQueue ();
68 
76  void Clear (void);
77 
91  void Push (SPFVertex *vNew);
92 
104  SPFVertex* Pop (void);
105 
118  SPFVertex* Top (void) const;
119 
126  bool Empty (void) const;
127 
136  uint32_t Size (void) const;
137 
147  SPFVertex* Find (const Ipv4Address addr) const;
148 
163  void Reorder (void);
164 
165 private:
173 
190  static bool CompareSPFVertex (const SPFVertex* v1, const SPFVertex* v2);
191 
192  typedef std::list<SPFVertex*> CandidateList_t;
193  CandidateList_t m_candidates;
194 
195  friend std::ostream& operator<< (std::ostream& os, const CandidateQueue& q);
196 };
197 
198 } // namespace ns3
199 
200 #endif /* CANDIDATE_QUEUE_H */
SPFVertex * Pop(void)
Pop the Shortest Path First Vertex pointer at the top of the queue.
SPFVertex * Top(void) const
Return the Shortest Path First Vertex pointer at the top of the queue.
Vertex used in shortest path first (SPF) computations. See RFC 2328, Section 16.
uint32_t Size(void) const
Return the number of Shortest Path First Vertex pointers presently stored in the Candidate Queue...
static bool CompareSPFVertex(const SPFVertex *v1, const SPFVertex *v2)
return true if v1 < v2
A Candidate Queue used in static routing.
void Clear(void)
Empty the Candidate Queue and release all of the resources associated with the Shortest Path First Ve...
void Push(SPFVertex *vNew)
Push a Shortest Path First Vertex pointer onto the queue according to the priority scheme...
CandidateQueue()
Create an empty SPF Candidate Queue.
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:38
SPFVertex * Find(const Ipv4Address addr) const
Searches the Candidate Queue for a Shortest Path First Vertex pointer that points to a vertex having ...
bool Empty(void) const
Test the Candidate Queue to determine if it is empty.
void Reorder(void)
Reorders the Candidate Queue according to the priority scheme.
CandidateQueue & operator=(CandidateQueue &sr)