blob: 6411a399f544bc79b7da1e4c6ef2c31c7e8de341 [file] [log] [blame]
Alexander Afanasyev0fb80b92013-07-20 08:20:50 -07001/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2013 University of California, Los Angeles
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: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
19 * : Saran Tarnoi <saran.tarnoi@gmail.com>
20 */
21
22#ifndef NDN_LINK_CONTROL_HELPER_H
23#define NDN_LINK_CONTROL_HELPER_H
24
25#include "ns3/ptr.h"
26#include "ns3/node.h"
27
28namespace ns3 {
29namespace ndn {
30
31/**
Alexander Afanasyev79206512013-07-27 16:49:12 -070032 * @ingroup ndn-helpers
Alexander Afanasyevbe55cf62014-12-20 17:51:09 -080033 * @brief Helper class to control the up or down statuss of an NDN link connecting two specific
34 * nodes
Alexander Afanasyev0fb80b92013-07-20 08:20:50 -070035 */
Alexander Afanasyevbe55cf62014-12-20 17:51:09 -080036class LinkControlHelper {
Alexander Afanasyev0fb80b92013-07-20 08:20:50 -070037public:
38 /**
39 * @brief Fail NDN link between two nodes
40 *
41 * The helper will attempt to find NDN link between node1 and
42 * node2 and set NDN face to DOWN state
43 *
44 * Note that only PointToPointChannels are supported by this helper method
45 *
46 * @param node1 one node
47 * @param node2 another node
48 */
49 static void
Alexander Afanasyevbe55cf62014-12-20 17:51:09 -080050 FailLink(Ptr<Node> node1, Ptr<Node> node2);
Alexander Afanasyev0fb80b92013-07-20 08:20:50 -070051
52 /**
53 * @brief Fail NDN link between two nodes
54 *
55 * The helper will attempt to find NDN link between node1 and
56 * node2 and set NDN face to DOWN state
57 *
58 * Note that only PointToPointChannels are supported by this helper method
59 *
60 * This variant uses node names registered by Names class
61 *
62 * @param node1 one node's name
63 * @param node2 another node's name
64 */
65 static void
Alexander Afanasyevbe55cf62014-12-20 17:51:09 -080066 FailLinkByName(const std::string& node1, const std::string& node2);
Alexander Afanasyev0fb80b92013-07-20 08:20:50 -070067
68 /**
69 * @brief Re-enable NDN link between two nodes
70 *
71 * The helper will attempt to find NDN link between node1 and
72 * node2 and set NDN face to UP state
73 *
74 * Note that only PointToPointChannels are supported by this helper method
75 *
76 * @param node1 one node
77 * @param node2 another node
78 */
79 static void
Alexander Afanasyevbe55cf62014-12-20 17:51:09 -080080 UpLink(Ptr<Node> node1, Ptr<Node> node2);
81
Alexander Afanasyev0fb80b92013-07-20 08:20:50 -070082 /**
83 * @brief Re-enable NDN link between two nodes
84 *
85 * The helper will attempt to find NDN link between node1 and
86 * node2 and set NDN face to UP state
87 *
88 * Note that only PointToPointChannels are supported by this helper method
89 *
90 * This variant uses node names registered by Names class
91 *
92 * @param node1 one node's name
93 * @param node2 another node's name
94 */
95 static void
Alexander Afanasyevbe55cf62014-12-20 17:51:09 -080096 UpLinkByName(const std::string& node1, const std::string& node2);
Alexander Afanasyev0fb80b92013-07-20 08:20:50 -070097}; // end: LinkControlHelper
98
Alexander Afanasyev0fb80b92013-07-20 08:20:50 -070099} // ndn
100} // ns3
101
102#endif // NDN_LINK_CONTROL_HELPER_H