A Discrete-Event Network Simulator
API
topology-reader.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2010 Universita' di Firenze, Italy
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: Tommaso Pecorella (tommaso.pecorella@unifi.it)
19  * Author: Valerio Sartini (valesar@gmail.com)
20  */
21 
22 #ifndef TOPOLOGY_READER_H
23 #define TOPOLOGY_READER_H
24 
25 #include <string>
26 #include <map>
27 #include <list>
28 
29 #include "ns3/object.h"
30 #include "ns3/node-container.h"
31 
32 
33 namespace ns3 {
34 
43 class TopologyReader : public Object
44 {
45 
46 public:
54  class Link
55  {
56 public:
60  typedef std::map<std::string, std::string>::const_iterator ConstAttributesIterator;
61 
69  Link ( Ptr<Node> fromPtr, const std::string &fromName, Ptr<Node> toPtr, const std::string &toName );
70 
75  Ptr<Node> GetFromNode (void) const;
80  std::string GetFromNodeName (void) const;
85  Ptr<Node> GetToNode (void) const;
90  std::string GetToNodeName (void) const;
96  std::string GetAttribute (const std::string &name) const;
104  bool GetAttributeFailSafe (const std::string &name, std::string &value) const;
110  void SetAttribute (const std::string &name, const std::string &value);
121 
122 private:
123  Link ();
124  std::string m_fromName;
126  std::string m_toName;
128  std::map<std::string, std::string> m_linkAttr;
129  };
130 
134  typedef std::list< Link >::const_iterator ConstLinksIterator;
135 
140  static TypeId GetTypeId (void);
141 
142  TopologyReader ();
143  virtual ~TopologyReader ();
144 
156  virtual NodeContainer Read (void) = 0;
157 
162  void SetFileName (const std::string &fileName);
163 
168  std::string GetFileName (void) const;
169 
174  ConstLinksIterator LinksBegin (void) const;
175 
180  ConstLinksIterator LinksEnd (void) const;
181 
186  int LinksSize (void) const;
187 
192  bool LinksEmpty (void) const;
193 
198  void AddLink (Link link);
199 
200 private:
201 
215 
219  std::string m_fileName;
220 
224  std::list<Link> m_linksList;
225 
226  // end class TopologyReader
227 };
228 
229 // end namespace ns3
230 };
231 
232 
233 #endif /* TOPOLOGY_READER_H */
static TypeId GetTypeId(void)
Get the type ID.
std::list< Link > m_linksList
The container of the links between the nodes.
TopologyReader & operator=(const TopologyReader &)
Copy constructor.
void AddLink(Link link)
Adds a link to the topology.
Interface for input file readers management.
ConstLinksIterator LinksEnd(void) const
Returns an iterator to the the last link in this block.
bool LinksEmpty(void) const
Checks if the block contains any links.
void SetFileName(const std::string &fileName)
Sets the input file name.
int LinksSize(void) const
Returns the number of links in this block.
std::list< Link >::const_iterator ConstLinksIterator
Constant iterator to the list of the links.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
keep track of a set of node pointers.
std::string m_fileName
The name of the input file.
std::string GetFileName(void) const
Returns the input file name.
virtual NodeContainer Read(void)=0
Main topology reading function.
A base class which provides memory management and object aggregation.
Definition: object.h:87
a unique identifier for an interface.
Definition: type-id.h:58
ConstLinksIterator LinksBegin(void) const
Returns an iterator to the the first link in this block.