src/helper/csma-star-helper.h
author Josh Pelkey <jpelkey@gatech.edu>
Tue, 24 Nov 2009 10:16:58 -0500
changeset 5776 aae948449722
child 5859 41cff0992d09
permissions -rw-r--r--
Moved net-anim from contrib
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     2
/*
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     3
 * This program is free software; you can redistribute it and/or modify
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     4
 * it under the terms of the GNU General Public License version 2 as
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     5
 * published by the Free Software Foundation;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     6
 *
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     7
 * This program is distributed in the hope that it will be useful,
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    10
 * GNU General Public License for more details.
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    11
 *
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    12
 * You should have received a copy of the GNU General Public License
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    13
 * along with this program; if not, write to the Free Software
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    14
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    15
 */
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    16
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    17
// Define an object to create a dumbbell topology.
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    18
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    19
#ifndef CSMA_STAR_HELPER_H
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    20
#define CSMA_STAR_HELPER_H
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    21
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    22
#include <string>
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    23
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    24
#include "csma-helper.h"
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    25
#include "ipv4-address-helper.h"
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    26
#include "internet-stack-helper.h"
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    27
#include "ipv4-interface-container.h"
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    28
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    29
namespace ns3 {
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    30
  
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    31
class CsmaStarHelper
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    32
{
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    33
public:
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    34
  CsmaStarHelper (uint32_t numSpokes, 
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    35
                  CsmaHelper csmaHelper);
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    36
  ~CsmaStarHelper ();
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    37
public:
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    38
  Ptr<Node> GetHub () const;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    39
  Ptr<Node> GetSpoke (uint32_t) const;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    40
  NetDeviceContainer GetHubDevices () const;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    41
  NetDeviceContainer GetSpokeDevices () const;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    42
  Ipv4Address GetHubIpv4Address (uint32_t) const;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    43
  Ipv4Address GetSpokeIpv4Address (uint32_t) const;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    44
  uint32_t SpokeCount () const;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    45
  void InstallStack (InternetStackHelper stack);
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    46
  void AssignIpv4Addresses (Ipv4AddressHelper address);
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    47
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    48
private:
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    49
  NodeContainer m_hub;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    50
  NetDeviceContainer m_hubDevices;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    51
  NodeContainer m_spokes;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    52
  NetDeviceContainer m_spokeDevices;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    53
  Ipv4InterfaceContainer m_hubInterfaces;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    54
  Ipv4InterfaceContainer m_spokeInterfaces;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    55
};
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    56
}
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    57
#endif
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    58
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    59