nack.hpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2013-2017 Regents of the University of California.
4  *
5  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
6  *
7  * ndn-cxx library is free software: you can redistribute it and/or modify it under the
8  * terms of the GNU Lesser General Public License as published by the Free Software
9  * Foundation, either version 3 of the License, or (at your option) any later version.
10  *
11  * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
12  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13  * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
14  *
15  * You should have received copies of the GNU General Public License and GNU Lesser
16  * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
17  * <http://www.gnu.org/licenses/>.
18  *
19  * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
20  *
21  * @author Eric Newberry <enewberry@email.arizona.edu>
22  */
23 
24 #ifndef NDN_CXX_LP_NACK_HPP
25 #define NDN_CXX_LP_NACK_HPP
26 
27 #include "../common.hpp"
28 #include "../interest.hpp"
29 #include "../packet-base.hpp"
30 
31 #include "nack-header.hpp"
32 
33 namespace ndn {
34 namespace lp {
35 
40 class Nack : public PacketBase
41 {
42 public:
43  Nack();
44 
45  explicit
46  Nack(const Interest& interest);
47 
48  explicit
49  Nack(Interest&& interest);
50 
51 public: // getter/setter
52  const Interest&
53  getInterest() const
54  {
55  return m_interest;
56  }
57 
58  Interest&
60  {
61  return m_interest;
62  }
63 
64  const NackHeader&
65  getHeader() const
66  {
67  return m_header;
68  }
69 
70  NackHeader&
72  {
73  return m_header;
74  }
75 
76  Nack&
77  setHeader(const NackHeader& header)
78  {
79  m_header = header;
80  return *this;
81  }
82 
83  Nack&
85  {
86  m_header = header;
87  return *this;
88  }
89 
90 public: // NackHeader proxy
92  getReason() const
93  {
94  return m_header.getReason();
95  }
96 
97  Nack&
99  {
100  m_header.setReason(reason);
101  return *this;
102  }
103 
104 private:
105  Interest m_interest;
106  NackHeader m_header;
107 };
108 
109 } // namespace lp
110 } // namespace ndn
111 
112 #endif // NDN_CXX_LP_NACK_HPP
Copyright (c) 2013-2017 Regents of the University of California.
Definition: common.hpp:66
const NackHeader & getHeader() const
Definition: nack.hpp:65
NackHeader & setReason(NackReason reason)
set reason code
Nack & setHeader(const NackHeader &header)
Definition: nack.hpp:77
const Interest & getInterest() const
Definition: nack.hpp:53
represents an Interest packet
Definition: interest.hpp:42
NackReason
indicates the reason type of a network NACK
Definition: nack-header.hpp:39
Nack & setHeader(NackHeader &&header)
Definition: nack.hpp:84
represents a Network Nack
Definition: nack.hpp:40
NackReason getReason() const
Definition: nack.hpp:92
NackHeader & getHeader()
Definition: nack.hpp:71
base class to allow simple management of packet tags
Definition: packet-base.hpp:31
NackReason getReason() const
Nack & setReason(NackReason reason)
Definition: nack.hpp:98
Interest & getInterest()
Definition: nack.hpp:59
represents a Network NACK header
Definition: nack-header.hpp:59