face-traits.hpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
22 #ifndef NDN_MGMT_NFD_FACE_TRAITS_HPP
23 #define NDN_MGMT_NFD_FACE_TRAITS_HPP
24 
25 #include "../../encoding/tlv-nfd.hpp"
26 
27 namespace ndn {
28 namespace nfd {
29 
35 template<class C>
37 {
38 public:
39  class Error : public tlv::Error
40  {
41  public:
42  explicit
43  Error(const std::string& what)
44  : tlv::Error(what)
45  {
46  }
47  };
48 
50  : m_faceId(0)
54  , m_flags(0x0)
55  {
56  }
57 
58  virtual
59  ~FaceTraits() = default;
60 
61  uint64_t
62  getFaceId() const
63  {
64  return m_faceId;
65  }
66 
67  C&
68  setFaceId(uint64_t faceId)
69  {
70  wireReset();
71  m_faceId = faceId;
72  return static_cast<C&>(*this);
73  }
74 
75  const std::string&
76  getRemoteUri() const
77  {
78  return m_remoteUri;
79  }
80 
81  C&
82  setRemoteUri(const std::string& remoteUri)
83  {
84  wireReset();
85  m_remoteUri = remoteUri;
86  return static_cast<C&>(*this);
87  }
88 
89  const std::string&
90  getLocalUri() const
91  {
92  return m_localUri;
93  }
94 
95  C&
96  setLocalUri(const std::string& localUri)
97  {
98  wireReset();
99  m_localUri = localUri;
100  return static_cast<C&>(*this);
101  }
102 
103  FaceScope
104  getFaceScope() const
105  {
106  return m_faceScope;
107  }
108 
109  C&
111  {
112  wireReset();
113  m_faceScope = faceScope;
114  return static_cast<C&>(*this);
115  }
116 
119  {
120  return m_facePersistency;
121  }
122 
123  C&
125  {
126  wireReset();
127  m_facePersistency = facePersistency;
128  return static_cast<C&>(*this);
129  }
130 
131  LinkType
132  getLinkType() const
133  {
134  return m_linkType;
135  }
136 
137  C&
139  {
140  wireReset();
141  m_linkType = linkType;
142  return static_cast<C&>(*this);
143  }
144 
145  uint64_t
146  getFlags() const
147  {
148  return m_flags;
149  }
150 
151  C&
152  setFlags(uint64_t flags)
153  {
154  wireReset();
155  m_flags = flags;
156  return static_cast<C&>(*this);
157  }
158 
159  bool
160  getFlagBit(size_t bit) const
161  {
162  if (bit >= 64) {
163  BOOST_THROW_EXCEPTION(std::out_of_range("bit must be within range [0, 64)"));
164  }
165 
166  return m_flags & (1 << bit);
167  }
168 
169  C&
170  setFlagBit(size_t bit, bool value)
171  {
172  if (bit >= 64) {
173  BOOST_THROW_EXCEPTION(std::out_of_range("bit must be within range [0, 64)"));
174  }
175 
176  wireReset();
177 
178  if (value) {
179  m_flags |= (1 << bit);
180  }
181  else {
182  m_flags &= ~(1 << bit);
183  }
184 
185  return static_cast<C&>(*this);
186  }
187 
188 protected:
189  virtual void
190  wireReset() const = 0;
191 
192 protected:
193  uint64_t m_faceId;
194  std::string m_remoteUri;
195  std::string m_localUri;
199  uint64_t m_flags;
200 };
201 
202 } // namespace nfd
203 } // namespace ndn
204 
205 #endif // NDN_MGMT_NFD_FACE_TRAITS_HPP
LinkType getLinkType() const
Copyright (c) 2013-2016 Regents of the University of California.
Definition: common.hpp:74
uint64_t getFlags() const
std::string m_localUri
std::string m_remoteUri
FaceScope getFaceScope() const
FacePersistency m_facePersistency
C & setFaceId(uint64_t faceId)
Definition: face-traits.hpp:68
bool getFlagBit(size_t bit) const
C & setLocalUri(const std::string &localUri)
Definition: face-traits.hpp:96
virtual ~FaceTraits()=default
C & setRemoteUri(const std::string &remoteUri)
Definition: face-traits.hpp:82
uint64_t getFaceId() const
Definition: face-traits.hpp:62
C & setFaceScope(FaceScope faceScope)
const std::string & getLocalUri() const
Definition: face-traits.hpp:90
const std::string & getRemoteUri() const
Definition: face-traits.hpp:76
virtual void wireReset() const =0
FacePersistency getFacePersistency() const
providers getters and setters of face information fields
Definition: face-traits.hpp:36
C & setLinkType(LinkType linkType)
C & setFacePersistency(FacePersistency facePersistency)
C & setFlagBit(size_t bit, bool value)
Error(const std::string &what)
Definition: face-traits.hpp:43
C & setFlags(uint64_t flags)
represents an error in TLV encoding or decoding