blob: 5a59381d623e84defd6c9ecece3ee2f834d34831 [file] [log] [blame]
Ilya Moiseenko25f7d4d2011-09-29 18:41:06 -07001/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
Alexander Afanasyev45b92d42011-08-14 23:11:38 -07002/*
Ilya Moiseenko25f7d4d2011-09-29 18:41:06 -07003 * Copyright (c) 2011 University of California, Los Angeles
Alexander Afanasyev45b92d42011-08-14 23:11:38 -07004 *
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 *
Ilya Moiseenko25f7d4d2011-09-29 18:41:06 -070018 * Author: Ilya Moiseenko <iliamo@cs.ucla.edu>
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070019 */
Ilya Moiseenko25f7d4d2011-09-29 18:41:06 -070020
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070021#ifndef CCNX_FORWARDING_HELPER_H
22#define CCNX_FORWARDING_HELPER_H
23
24#include "ns3/ptr.h"
25#include "ns3/nstime.h"
26#include "ns3/output-stream-wrapper.h"
Ilya Moiseenko25f7d4d2011-09-29 18:41:06 -070027#include "ns3/ccnx.h"
28#include "ns3/ccnx-flooding-strategy.h"
Ilya Moiseenko9181afd2011-10-28 13:06:14 -070029#include "ns3/ccnx-pit.h"
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070030
31namespace ns3 {
32
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070033class Node;
34
35/**
Alexander Afanasyev0ab833e2011-08-18 15:49:13 -070036 * \ingroup ccnx-helpers
37 *
Alexander Afanasyevc74a6022011-08-15 20:01:35 -070038 * \brief a factory to create ns3::CcnxForwardingStrategy objects
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070039 *
Alexander Afanasyev0ab833e2011-08-18 15:49:13 -070040 * \todo Document this class
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070041 */
42class CcnxForwardingHelper
43{
44public:
Ilya Moiseenko25f7d4d2011-09-29 18:41:06 -070045 /*
Alexander Afanasyev11453142011-11-25 16:13:33 -080046 * \brief Default constructor
Ilya Moiseenko25f7d4d2011-09-29 18:41:06 -070047 */
48 CcnxForwardingHelper();
Ilya Moiseenko25f7d4d2011-09-29 18:41:06 -070049
Alexander Afanasyev11453142011-11-25 16:13:33 -080050 // /**
51 // * \brief prints the forwarding tables of all nodes at a particular time.
52 // * \param printTime the time at which the forwarding table is supposed to be printed.
53 // * \param stream The output stream object to use
54 // *
55 // * This method calls the PrintForwardingTable() method of the
56 // * CcnxForwardingStrategy stored in the Ccnx object, for all nodes at the
57 // * specified time; the output format is forwarding protocol-specific.
58 // */
59 // void PrintForwardingTableAllAt (Time printTime, Ptr<OutputStreamWrapper> stream) const;
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070060
Alexander Afanasyev11453142011-11-25 16:13:33 -080061 // /**
62 // * \brief prints the forwarding tables of all nodes at regular intervals specified by user.
63 // * \param printInterval the time interval for which the forwarding table is supposed to be printed.
64 // * \param stream The output stream object to use
65 // *
66 // * This method calls the PrintForwardingTable() method of the
67 // * CcnxForwardingStrategy stored in the Ccnx object, for all nodes at the
68 // * specified time interval; the output format is forwarding protocol-specific.
69 // */
70 // void PrintForwardingTableAllEvery (Time printInterval, Ptr<OutputStreamWrapper> stream) const;
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070071
Alexander Afanasyev11453142011-11-25 16:13:33 -080072 // /**
73 // * \brief prints the forwarding tables of a node at a particular time.
74 // * \param printTime the time at which the forwarding table is supposed to be printed.
75 // * \param node The node ptr for which we need the forwarding table to be printed
76 // * \param stream The output stream object to use
77 // *
78 // * This method calls the PrintForwardingTable() method of the
79 // * CcnxForwardingStrategy stored in the Ccnx object, for the selected node
80 // * at the specified time; the output format is forwarding protocol-specific.
81 // */
82 // void PrintForwardingTableAt (Time printTime, Ptr<Node> node, Ptr<OutputStreamWrapper> stream) const;
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070083
Alexander Afanasyev11453142011-11-25 16:13:33 -080084 // /**
85 // * \brief prints the forwarding tables of a node at regular intervals specified by user.
86 // * \param printInterval the time interval for which the forwarding table is supposed to be printed.
87 // * \param node The node ptr for which we need the forwarding table to be printed
88 // * \param stream The output stream object to use
89 // *
90 // * This method calls the PrintForwardingTable() method of the
91 // * CcnxForwardingStrategy stored in the Ccnx object, for the selected node
92 // * at the specified interval; the output format is forwarding protocol-specific.
93 // */
94 // void PrintForwardingTableEvery (Time printInterval, Ptr<Node> node, Ptr<OutputStreamWrapper> stream) const;
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070095
96private:
Alexander Afanasyev11453142011-11-25 16:13:33 -080097 // void Print (Ptr<Node> node, Ptr<OutputStreamWrapper> stream) const;
98 // void PrintEvery (Time printInterval, Ptr<Node> node, Ptr<OutputStreamWrapper> stream) const;
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070099};
100
101} // namespace ns3
102
103
104#endif /* CCNX_FORWARDING_HELPER_H */