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 #include "ns3/object.h"
29 #include "ns3/node.h"
30 
31 
32 namespace ns3 {
33 
34 class NodeContainer;
35 
44 class TopologyReader : public Object
45 {
46 
47 public:
55  class Link
56  {
57 public:
61  typedef std::map<std::string, std::string>::const_iterator ConstAttributesIterator;
62 
70  Link ( Ptr<Node> fromPtr, const std::string &fromName, Ptr<Node> toPtr, const std::string &toName );
71 
76  Ptr<Node> GetFromNode (void) const;
81  std::string GetFromNodeName (void) const;
86  Ptr<Node> GetToNode (void) const;
91  std::string GetToNodeName (void) const;
97  std::string GetAttribute (const std::string &name) const;
105  bool GetAttributeFailSafe (const std::string &name, std::string &value) const;
111  void SetAttribute (const std::string &name, const std::string &value);
122 
123 private:
124  Link ();
125  std::string m_fromName;
127  std::string m_toName;
129  std::map<std::string, std::string> m_linkAttr;
130  };
131 
135  typedef std::list< Link >::const_iterator ConstLinksIterator;
136 
141  static TypeId GetTypeId (void);
142 
143  TopologyReader ();
144  virtual ~TopologyReader ();
145 
157  virtual NodeContainer Read (void) = 0;
158 
163  void SetFileName (const std::string &fileName);
164 
169  std::string GetFileName (void) const;
170 
175  ConstLinksIterator LinksBegin (void) const;
176 
181  ConstLinksIterator LinksEnd (void) const;
182 
187  int LinksSize (void) const;
188 
193  bool LinksEmpty (void) const;
194 
199  void AddLink (Link link);
200 
201 private:
202 
216 
220  std::string m_fileName;
221 
225  std::list<Link> m_linksList;
226 
227  // end class TopologyReader
228 };
229 
230 // end namespace ns3
231 };
232 
233 
234 #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.