src/topology-read/model/rocketfuel-topology-reader.cc
author Peter D. Barnes, Jr. <barnes26@llnl.gov>
Wed, 05 Mar 2014 17:06:59 -0800
changeset 10652 dc18deba4502
parent 10437 0571abffdfe1
child 10967 597a9ec89e60
permissions -rw-r--r--
[doxygen] Revert r10410, r10411, r10412
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
     2
/*
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
     3
 * Copyright (c) 2010 Hajime Tazaki
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
     4
 *
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
     8
 *
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    12
 * GNU General Public License for more details.
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    13
 *
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    17
 *
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    18
 * Author: Hajime Tazaki (tazaki@sfc.wide.ad.jp)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    19
 */
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    20
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    21
#include <fstream>
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    22
#include <cstdlib>
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    23
#include <iostream>
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    24
#include <sstream>
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    25
#include <regex.h>
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    26
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    27
#include "ns3/log.h"
7704
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7235
diff changeset
    28
#include "ns3/unused.h"
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    29
#include "rocketfuel-topology-reader.h"
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    30
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    31
namespace ns3 {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    32
10652
dc18deba4502 [doxygen] Revert r10410, r10411, r10412
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10437
diff changeset
    33
NS_LOG_COMPONENT_DEFINE ("RocketfuelTopologyReader");
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    34
10652
dc18deba4502 [doxygen] Revert r10410, r10411, r10412
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10437
diff changeset
    35
NS_OBJECT_ENSURE_REGISTERED (RocketfuelTopologyReader);
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    36
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    37
TypeId RocketfuelTopologyReader::GetTypeId (void)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    38
{
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    39
  static TypeId tid = TypeId ("ns3::RocketfuelTopologyReader")
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    40
    .SetParent<Object> ()
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    41
  ;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    42
  return tid;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    43
}
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    44
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    45
RocketfuelTopologyReader::RocketfuelTopologyReader ()
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    46
{
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
    47
  m_linksNumber = 0;
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
    48
  m_nodesNumber = 0;
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    49
  NS_LOG_FUNCTION (this);
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    50
}
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    51
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    52
RocketfuelTopologyReader::~RocketfuelTopologyReader ()
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    53
{
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    54
  NS_LOG_FUNCTION (this);
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    55
}
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    56
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    57
/* uid @loc [+] [bb] (num_neigh) [&ext] -> <nuid-1> <nuid-2> ... {-euid} ... =name[!] rn */
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    58
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
    59
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    60
#define REGMATCH_MAX 16
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    61
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    62
#define START "^"
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    63
#define END "$"
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    64
#define SPACE "[ \t]+"
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    65
#define MAYSPACE "[ \t]*"
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    66
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    67
#define ROCKETFUEL_MAPS_LINE \
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    68
  START "(-*[0-9]+)" SPACE "(@[?A-Za-z0-9,+]+)" SPACE \
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    69
  "(\\+)*" MAYSPACE "(bb)*" MAYSPACE \
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    70
  "\\(([0-9]+)\\)" SPACE "(&[0-9]+)*" MAYSPACE \
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    71
  "->" MAYSPACE "(<[0-9 \t<>]+>)*" MAYSPACE \
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    72
  "(\\{-[0-9\\{\\} \t-]+\\})*" SPACE \
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    73
  "=([A-Za-z0-9.!-]+)" SPACE "r([0-9])" \
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    74
  MAYSPACE END
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    75
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    76
#define ROCKETFUEL_WEIGHTS_LINE \
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    77
  START "([^ \t]+)" SPACE "([^ \t]+)" SPACE "([0-9.]+)" MAYSPACE END
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
    78
10437
0571abffdfe1 topology-read doxygen fix
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10417
diff changeset
    79
/**
0571abffdfe1 topology-read doxygen fix
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10417
diff changeset
    80
 * \brief Print node info
0571abffdfe1 topology-read doxygen fix
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10417
diff changeset
    81
 * \param uid node ID
0571abffdfe1 topology-read doxygen fix
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10417
diff changeset
    82
 * \param loc node location
0571abffdfe1 topology-read doxygen fix
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10417
diff changeset
    83
 * \param dns is a DNS node ?
0571abffdfe1 topology-read doxygen fix
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10417
diff changeset
    84
 * \param bb is a BB node ?
0571abffdfe1 topology-read doxygen fix
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10417
diff changeset
    85
 * \param neighListSize size of neighbor list
0571abffdfe1 topology-read doxygen fix
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10417
diff changeset
    86
 * \param name node name
0571abffdfe1 topology-read doxygen fix
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10417
diff changeset
    87
 * \param radius node radius
0571abffdfe1 topology-read doxygen fix
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10417
diff changeset
    88
 */
10417
b232a4710812 revert (45c8fceae24e) log printing due to the failure in optimized/static build.
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents: 10411
diff changeset
    89
static inline void
b232a4710812 revert (45c8fceae24e) log printing due to the failure in optimized/static build.
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents: 10411
diff changeset
    90
PrintNodeInfo (std::string & uid, std::string & loc, bool dns, bool bb,
b232a4710812 revert (45c8fceae24e) log printing due to the failure in optimized/static build.
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents: 10411
diff changeset
    91
               std::vector <std::string>::size_type neighListSize,
b232a4710812 revert (45c8fceae24e) log printing due to the failure in optimized/static build.
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents: 10411
diff changeset
    92
               std::string & name, int radius)
b232a4710812 revert (45c8fceae24e) log printing due to the failure in optimized/static build.
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents: 10411
diff changeset
    93
{
b232a4710812 revert (45c8fceae24e) log printing due to the failure in optimized/static build.
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents: 10411
diff changeset
    94
  /* uid @loc [+] [bb] (num_neigh) [&ext] -> <nuid-1> <nuid-2> ... {-euid} ... =name[!] rn */
b232a4710812 revert (45c8fceae24e) log printing due to the failure in optimized/static build.
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents: 10411
diff changeset
    95
  NS_LOG_INFO ("Load Node[" << uid << "]: location: " << loc << " dns: " << dns
b232a4710812 revert (45c8fceae24e) log printing due to the failure in optimized/static build.
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents: 10411
diff changeset
    96
                            << " bb: " << bb << " neighbors: " << neighListSize
b232a4710812 revert (45c8fceae24e) log printing due to the failure in optimized/static build.
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents: 10411
diff changeset
    97
                            << "(" << "%d" << ") externals: \"%s\"(%d) "
b232a4710812 revert (45c8fceae24e) log printing due to the failure in optimized/static build.
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents: 10411
diff changeset
    98
                            << "name: " << name << " radius: " << radius);
b232a4710812 revert (45c8fceae24e) log printing due to the failure in optimized/static build.
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents: 10411
diff changeset
    99
}
b232a4710812 revert (45c8fceae24e) log printing due to the failure in optimized/static build.
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents: 10411
diff changeset
   100
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   101
NodeContainer
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   102
RocketfuelTopologyReader::GenerateFromMapsFile (int argc, char *argv[])
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   103
{
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   104
  std::string uid;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   105
  std::string loc;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   106
  std::string ptr;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   107
  std::string name;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   108
  std::string nuid;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   109
  bool dns = false;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   110
  bool bb = false;
7061
15f40cfaf3b3 build fixes for gcc 4.6
Andrey Mazo <mazo@iitp.ru>
parents: 6972
diff changeset
   111
  int num_neigh_s = 0;
15f40cfaf3b3 build fixes for gcc 4.6
Andrey Mazo <mazo@iitp.ru>
parents: 6972
diff changeset
   112
  unsigned int num_neigh = 0;
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   113
  int radius = 0;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   114
  std::vector <std::string> neigh_list;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   115
  NodeContainer nodes;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   116
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   117
  uid = argv[0];
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   118
  loc = argv[1];
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   119
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   120
  if (argv[2])
7154
d21858aeb227 TopologyReade: ran check-style.py and fixed documentation
Tommaso Pecorella
parents: 7061
diff changeset
   121
    {
d21858aeb227 TopologyReade: ran check-style.py and fixed documentation
Tommaso Pecorella
parents: 7061
diff changeset
   122
      dns = true;
d21858aeb227 TopologyReade: ran check-style.py and fixed documentation
Tommaso Pecorella
parents: 7061
diff changeset
   123
    }
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   124
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   125
  if (argv[3])
7154
d21858aeb227 TopologyReade: ran check-style.py and fixed documentation
Tommaso Pecorella
parents: 7061
diff changeset
   126
    {
d21858aeb227 TopologyReade: ran check-style.py and fixed documentation
Tommaso Pecorella
parents: 7061
diff changeset
   127
      bb = true;
d21858aeb227 TopologyReade: ran check-style.py and fixed documentation
Tommaso Pecorella
parents: 7061
diff changeset
   128
    }
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   129
7061
15f40cfaf3b3 build fixes for gcc 4.6
Andrey Mazo <mazo@iitp.ru>
parents: 6972
diff changeset
   130
  num_neigh_s = ::atoi (argv[4]);
15f40cfaf3b3 build fixes for gcc 4.6
Andrey Mazo <mazo@iitp.ru>
parents: 6972
diff changeset
   131
  if (num_neigh_s < 0)
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   132
    {
7061
15f40cfaf3b3 build fixes for gcc 4.6
Andrey Mazo <mazo@iitp.ru>
parents: 6972
diff changeset
   133
      num_neigh = 0;
15f40cfaf3b3 build fixes for gcc 4.6
Andrey Mazo <mazo@iitp.ru>
parents: 6972
diff changeset
   134
      NS_LOG_WARN ("Negative number of neighbors given");
15f40cfaf3b3 build fixes for gcc 4.6
Andrey Mazo <mazo@iitp.ru>
parents: 6972
diff changeset
   135
    }
15f40cfaf3b3 build fixes for gcc 4.6
Andrey Mazo <mazo@iitp.ru>
parents: 6972
diff changeset
   136
  else
15f40cfaf3b3 build fixes for gcc 4.6
Andrey Mazo <mazo@iitp.ru>
parents: 6972
diff changeset
   137
    {
15f40cfaf3b3 build fixes for gcc 4.6
Andrey Mazo <mazo@iitp.ru>
parents: 6972
diff changeset
   138
      num_neigh = num_neigh_s;
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   139
    }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   140
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   141
  /* neighbors */
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   142
  if (argv[6])
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   143
    {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   144
      char *nbr;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   145
      char *stringp = argv[6];
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   146
      while ((nbr = strsep (&stringp, " \t")) != NULL)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   147
        {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   148
          nbr[strlen (nbr) - 1] = '\0';
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   149
          neigh_list.push_back (nbr + 1);
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   150
        }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   151
    }
7061
15f40cfaf3b3 build fixes for gcc 4.6
Andrey Mazo <mazo@iitp.ru>
parents: 6972
diff changeset
   152
  if (num_neigh != neigh_list.size ())
15f40cfaf3b3 build fixes for gcc 4.6
Andrey Mazo <mazo@iitp.ru>
parents: 6972
diff changeset
   153
    {
15f40cfaf3b3 build fixes for gcc 4.6
Andrey Mazo <mazo@iitp.ru>
parents: 6972
diff changeset
   154
      NS_LOG_WARN ("Given number of neighbors = " << num_neigh << " != size of neighbors list = " << neigh_list.size ());
15f40cfaf3b3 build fixes for gcc 4.6
Andrey Mazo <mazo@iitp.ru>
parents: 6972
diff changeset
   155
    }
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   156
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   157
  /* externs */
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   158
  if (argv[7])
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   159
    {
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   160
      // euid = argv[7];
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   161
    }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   162
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   163
  /* name */
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   164
  if (argv[8])
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   165
    {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   166
      name = argv[8];
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   167
    }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   168
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   169
  radius = ::atoi (&argv[9][1]);
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   170
  if (radius > 0)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   171
    {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   172
      return nodes;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   173
    }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   174
10417
b232a4710812 revert (45c8fceae24e) log printing due to the failure in optimized/static build.
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents: 10411
diff changeset
   175
  PrintNodeInfo (uid, loc, dns, bb, neigh_list.size (), name, radius);
7230
dae74efe7d78 rocketfuel-topology-reader.cc:87:8: error: variable ‘dns’ set but not used
John Abraham<john.abraham@gatech.edu>
parents: 7154
diff changeset
   176
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   177
  // Create node and link
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   178
  if (!uid.empty ())
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   179
    {
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   180
      if (m_nodeMap[uid] == 0)
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   181
        {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   182
          Ptr<Node> tmpNode = CreateObject<Node> ();
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   183
          m_nodeMap[uid] = tmpNode;
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   184
          nodes.Add (tmpNode);
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   185
          m_nodesNumber++;
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   186
        }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   187
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   188
      for (uint32_t i = 0; i < neigh_list.size (); ++i)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   189
        {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   190
          nuid = neigh_list[i];
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   191
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   192
          if (nuid.empty ())
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   193
            {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   194
              return nodes;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   195
            }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   196
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   197
          if (m_nodeMap[nuid] == 0)
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   198
            {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   199
              Ptr<Node> tmpNode = CreateObject<Node> ();
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   200
              m_nodeMap[nuid] = tmpNode;
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   201
              nodes.Add (tmpNode);
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   202
              m_nodesNumber++;
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   203
            }
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   204
          NS_LOG_INFO (m_linksNumber << ":" << m_nodesNumber << " From: " << uid << " to: " << nuid);
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   205
          Link link (m_nodeMap[uid], uid, m_nodeMap[nuid], nuid);
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   206
          AddLink (link);
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   207
          m_linksNumber++;
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   208
        }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   209
    }
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   210
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   211
  NS_LOG_INFO ("Rocketfuel topology created with " << m_nodesNumber << " nodes and " << m_linksNumber << " links");
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   212
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   213
  return nodes;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   214
}
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   215
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   216
NodeContainer
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   217
RocketfuelTopologyReader::GenerateFromWeightsFile (int argc, char *argv[])
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   218
{
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   219
  /* uid @loc [+] [bb] (num_neigh) [&ext] -> <nuid-1> <nuid-2> ... {-euid} ... =name[!] rn */
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   220
  std::string sname;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   221
  std::string tname;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   222
  char *endptr;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   223
  NodeContainer nodes;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   224
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   225
  sname = argv[0];
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   226
  tname = argv[1];
7235
9799258e196e Bug 1119 - ns2-mobility-helper.cc:402: error: ignoring return value
John Abraham<john.abraham@gatech.edu>
parents: 7230
diff changeset
   227
  double v = strtod (argv[2], &endptr); // weight
7704
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7235
diff changeset
   228
  NS_UNUSED (v); // suppress "set but not used" compiler warning in optimized builds
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   229
  if (*endptr != '\0')
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   230
    {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   231
      NS_LOG_WARN ("invalid weight: " << argv[2]);
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   232
      return nodes;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   233
    }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   234
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   235
  // Create node and link
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   236
  if (!sname.empty () && !tname.empty ())
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   237
    {
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   238
      if (m_nodeMap[sname] == 0)
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   239
        {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   240
          Ptr<Node> tmpNode = CreateObject<Node> ();
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   241
          m_nodeMap[sname] = tmpNode;
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   242
          nodes.Add (tmpNode);
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   243
          m_nodesNumber++;
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   244
        }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   245
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   246
      if (m_nodeMap[tname] == 0)
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   247
        {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   248
          Ptr<Node> tmpNode = CreateObject<Node> ();
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   249
          m_nodeMap[tname] = tmpNode;
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   250
          nodes.Add (tmpNode);
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   251
          m_nodesNumber++;
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   252
        }
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   253
      NS_LOG_INFO (m_linksNumber << ":" << m_nodesNumber << " From: " << sname << " to: " << tname);
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   254
      TopologyReader::ConstLinksIterator iter;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   255
      bool found = false;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   256
      for (iter = LinksBegin (); iter != LinksEnd (); iter++)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   257
        {
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   258
          if ((iter->GetFromNode () == m_nodeMap[tname])
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   259
              && (iter->GetToNode () == m_nodeMap[sname]))
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   260
            {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   261
              found = true;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   262
              break;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   263
            }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   264
        }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   265
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   266
      if (!found)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   267
        {
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   268
          Link link (m_nodeMap[sname], sname, m_nodeMap[tname], tname);
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   269
          AddLink (link);
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   270
          m_linksNumber++;
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   271
        }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   272
    }
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   273
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   274
  NS_LOG_INFO ("Rocketfuel topology created with " << m_nodesNumber << " nodes and " << m_linksNumber << " links");
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 9227
diff changeset
   275
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   276
  return nodes;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   277
}
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   278
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   279
enum RocketfuelTopologyReader::RF_FileType
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   280
RocketfuelTopologyReader::GetFileType (const char *line)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   281
{
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   282
  int ret;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   283
  regmatch_t regmatch[REGMATCH_MAX];
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   284
  regex_t regex;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   285
  char errbuf[512];
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   286
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   287
  // Check whether MAPS file or not
7154
d21858aeb227 TopologyReade: ran check-style.py and fixed documentation
Tommaso Pecorella
parents: 7061
diff changeset
   288
  ret = regcomp (&regex, ROCKETFUEL_MAPS_LINE, REG_EXTENDED | REG_NEWLINE);
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   289
  if (ret != 0)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   290
    {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   291
      regerror (ret, &regex, errbuf, sizeof (errbuf));
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   292
      return RF_UNKNOWN;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   293
    }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   294
  ret = regexec (&regex, line, REGMATCH_MAX, regmatch, 0);
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   295
  if (ret != REG_NOMATCH)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   296
    {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   297
      regfree (&regex);
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   298
      return RF_MAPS;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   299
    }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   300
  regfree (&regex);
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   301
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   302
  // Check whether Weights file or not
7154
d21858aeb227 TopologyReade: ran check-style.py and fixed documentation
Tommaso Pecorella
parents: 7061
diff changeset
   303
  ret = regcomp (&regex, ROCKETFUEL_WEIGHTS_LINE, REG_EXTENDED | REG_NEWLINE);
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   304
  if (ret != 0)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   305
    {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   306
      regerror (ret, &regex, errbuf, sizeof (errbuf));
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   307
      return RF_UNKNOWN;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   308
    }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   309
  ret = regexec (&regex, line, REGMATCH_MAX, regmatch, 0);
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   310
  if (ret != REG_NOMATCH)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   311
    {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   312
      regfree (&regex);
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   313
      return RF_WEIGHTS;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   314
    }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   315
  regfree (&regex);
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   316
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   317
  return RF_UNKNOWN;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   318
}
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   319
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   320
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   321
NodeContainer
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   322
RocketfuelTopologyReader::Read (void)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   323
{
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   324
  std::ifstream topgen;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   325
  topgen.open (GetFileName ().c_str ());
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   326
  NodeContainer nodes;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   327
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   328
  std::istringstream lineBuffer;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   329
  std::string line;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   330
  int lineNumber = 0;
6661
567a2a9fb792 Bug 1027 - RocketfuelTopologyReader is not working at all
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents: 6395
diff changeset
   331
  enum RF_FileType ftype = RF_UNKNOWN;
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   332
  char errbuf[512];
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   333
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   334
  if (!topgen.is_open ())
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   335
    {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   336
      NS_LOG_WARN ("Couldn't open the file " << GetFileName ());
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   337
      return nodes;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   338
    }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   339
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   340
  while (!topgen.eof ())
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   341
    {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   342
      int ret;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   343
      int argc;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   344
      char *argv[REGMATCH_MAX];
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   345
      char *buf;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   346
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   347
      lineNumber++;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   348
      line.clear ();
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   349
      lineBuffer.clear ();
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   350
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   351
      getline (topgen, line);
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   352
      buf = (char *)line.c_str ();
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   353
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   354
      if (lineNumber == 1)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   355
        {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   356
          ftype = GetFileType (buf);
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   357
          if (ftype == RF_UNKNOWN)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   358
            {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   359
              NS_LOG_INFO ("Unknown File Format (" << GetFileName () << ")");
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   360
              break;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   361
            }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   362
        }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   363
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   364
      regmatch_t regmatch[REGMATCH_MAX];
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   365
      regex_t regex;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   366
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   367
      if (ftype == RF_MAPS)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   368
        {
7154
d21858aeb227 TopologyReade: ran check-style.py and fixed documentation
Tommaso Pecorella
parents: 7061
diff changeset
   369
          ret = regcomp (&regex, ROCKETFUEL_MAPS_LINE, REG_EXTENDED | REG_NEWLINE);
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   370
          if (ret != 0)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   371
            {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   372
              regerror (ret, &regex, errbuf, sizeof (errbuf));
6391
e3ee8d166f32 fix rocket-fuel example valgrind issue
Josh Pelkey <jpelkey@gatech.edu>
parents: 6374
diff changeset
   373
              regfree (&regex);
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   374
              break;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   375
            }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   376
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   377
          ret = regexec (&regex, buf, REGMATCH_MAX, regmatch, 0);
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   378
          if (ret == REG_NOMATCH)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   379
            {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   380
              NS_LOG_WARN ("match failed (maps file): %s" << buf);
6391
e3ee8d166f32 fix rocket-fuel example valgrind issue
Josh Pelkey <jpelkey@gatech.edu>
parents: 6374
diff changeset
   381
              regfree (&regex);
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   382
              break;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   383
            }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   384
        }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   385
      else if (ftype == RF_WEIGHTS)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   386
        {
7154
d21858aeb227 TopologyReade: ran check-style.py and fixed documentation
Tommaso Pecorella
parents: 7061
diff changeset
   387
          ret = regcomp (&regex, ROCKETFUEL_WEIGHTS_LINE, REG_EXTENDED | REG_NEWLINE);
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   388
          if (ret != 0)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   389
            {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   390
              regerror (ret, &regex, errbuf, sizeof (errbuf));
6391
e3ee8d166f32 fix rocket-fuel example valgrind issue
Josh Pelkey <jpelkey@gatech.edu>
parents: 6374
diff changeset
   391
              regfree (&regex);
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   392
              break;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   393
            }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   394
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   395
          ret = regexec (&regex, buf, REGMATCH_MAX, regmatch, 0);
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   396
          if (ret == REG_NOMATCH)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   397
            {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   398
              NS_LOG_WARN ("match failed (weights file): %s" << buf);
6391
e3ee8d166f32 fix rocket-fuel example valgrind issue
Josh Pelkey <jpelkey@gatech.edu>
parents: 6374
diff changeset
   399
              regfree (&regex);
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   400
              break;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   401
            }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   402
        }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   403
6391
e3ee8d166f32 fix rocket-fuel example valgrind issue
Josh Pelkey <jpelkey@gatech.edu>
parents: 6374
diff changeset
   404
      line = buf;
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   405
      argc = 0;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   406
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   407
      /* regmatch[0] is the entire strings that matched */
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   408
      for (int i = 1; i < REGMATCH_MAX; i++)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   409
        {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   410
          if (regmatch[i].rm_so == -1)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   411
            {
7154
d21858aeb227 TopologyReade: ran check-style.py and fixed documentation
Tommaso Pecorella
parents: 7061
diff changeset
   412
              argv[i - 1] = NULL;
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   413
            }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   414
          else
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   415
            {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   416
              line[regmatch[i].rm_eo] = '\0';
7154
d21858aeb227 TopologyReade: ran check-style.py and fixed documentation
Tommaso Pecorella
parents: 7061
diff changeset
   417
              argv[i - 1] = &line[regmatch[i].rm_so];
6374
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   418
              argc = i;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   419
            }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   420
        }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   421
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   422
      if (ftype == RF_MAPS)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   423
        {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   424
          nodes.Add (GenerateFromMapsFile (argc, argv));
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   425
        }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   426
      else if (ftype == RF_WEIGHTS)
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   427
        {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   428
          nodes.Add (GenerateFromWeightsFile (argc, argv));
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   429
        }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   430
      else
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   431
        {
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   432
          NS_LOG_WARN ("Unsupported file format (only Maps/Weights are supported)");
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   433
        }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   434
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   435
      regfree (&regex);
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   436
    }
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   437
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   438
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   439
  topgen.close ();
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   440
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   441
  return nodes;
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   442
}
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   443
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   444
} /* namespace ns3 */
787aef59db0b Bug 946 - Rocketfuel topology dataset support for topology reader
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents:
diff changeset
   445
6661
567a2a9fb792 Bug 1027 - RocketfuelTopologyReader is not working at all
Hajime Tazaki <tazaki@sfc.wide.ad.jp>
parents: 6395
diff changeset
   446