NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.3: NDN, CCN, CCNx, content centric networks
API Documentation
face-uri.hpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
28 #ifndef NDN_UTIL_FACE_URI_HPP
29 #define NDN_UTIL_FACE_URI_HPP
30 
31 #include "../common.hpp"
32 #include <boost/asio/ip/udp.hpp>
33 #include <boost/asio/ip/tcp.hpp>
34 #include <boost/asio/local/stream_protocol.hpp>
35 #include "ethernet.hpp"
36 #include "time.hpp"
37 
38 namespace ndn {
39 namespace util {
40 
44 class FaceUri
45 {
46 public:
47  class Error : public std::invalid_argument
48  {
49  public:
50  explicit
51  Error(const std::string& what)
52  : std::invalid_argument(what)
53  {
54  }
55  };
56 
57  FaceUri();
58 
64  explicit
65  FaceUri(const std::string& uri);
66 
67  // This overload is needed so that calls with string literal won't be
68  // resolved to boost::asio::local::stream_protocol::endpoint overload.
69  explicit
70  FaceUri(const char* uri);
71 
73  bool
74  parse(const std::string& uri);
75 
76 public: // scheme-specific construction
78  explicit
79  FaceUri(const boost::asio::ip::udp::endpoint& endpoint);
80 
82  explicit
83  FaceUri(const boost::asio::ip::tcp::endpoint& endpoint);
84 
86  FaceUri(const boost::asio::ip::tcp::endpoint& endpoint, const std::string& scheme);
87 
88 #ifdef BOOST_ASIO_HAS_LOCAL_SOCKETS
89  explicit
91  FaceUri(const boost::asio::local::stream_protocol::endpoint& endpoint);
92 #endif // BOOST_ASIO_HAS_LOCAL_SOCKETS
93 
95  static FaceUri
96  fromFd(int fd);
97 
99  explicit
100  FaceUri(const ethernet::Address& address);
101 
103  static FaceUri
104  fromDev(const std::string& ifname);
105 
107  static FaceUri
108  fromUdpDev(const boost::asio::ip::udp::endpoint& endpoint, const std::string& ifname);
109 
110 public: // getters
112  const std::string&
113  getScheme() const
114  {
115  return m_scheme;
116  }
117 
119  const std::string&
120  getHost() const
121  {
122  return m_host;
123  }
124 
126  const std::string&
127  getPort() const
128  {
129  return m_port;
130  }
131 
133  const std::string&
134  getPath() const
135  {
136  return m_path;
137  }
138 
140  std::string
141  toString() const;
142 
143 public: // EqualityComparable concept
144  bool
145  operator==(const FaceUri& rhs) const;
146 
147  bool
148  operator!=(const FaceUri& rhs) const;
149 
150 public: // canonical FaceUri
153  static bool
154  canCanonize(const std::string& scheme);
155 
161  bool
162  isCanonical() const;
163 
164  typedef function<void(const FaceUri&)> CanonizeSuccessCallback;
165  typedef function<void(const std::string& reason)> CanonizeFailureCallback;
166 
176  void
177  canonize(const CanonizeSuccessCallback& onSuccess,
178  const CanonizeFailureCallback& onFailure,
179  boost::asio::io_service& io, const time::nanoseconds& timeout) const;
180 
181 private:
182  std::string m_scheme;
183  std::string m_host;
185  bool m_isV6;
186  std::string m_port;
187  std::string m_path;
188 
189  friend std::ostream& operator<<(std::ostream& os, const FaceUri& uri);
190 };
191 
192 std::ostream&
193 operator<<(std::ostream& os, const FaceUri& uri);
194 
195 } // namespace util
196 } // namespace ndn
197 
198 #endif // NDN_UTIL_FACE_URI_HPP
Copyright (c) 2011-2015 Regents of the University of California.
bool parse(const std::string &uri)
exception-safe parsing
Definition: face-uri.cpp:63
static bool canCanonize(const std::string &scheme)
Definition: face-uri.cpp:546
represents an Ethernet hardware address
Definition: ethernet.hpp:53
represents the underlying protocol and address used by a Face
Definition: face-uri.hpp:44
bool isCanonical() const
determine whether this FaceUri is in canonical form
Definition: face-uri.cpp:552
std::string toString() const
write as a string
Definition: face-uri.cpp:195
STL namespace.
function< void(const FaceUri &)> CanonizeSuccessCallback
Definition: face-uri.hpp:164
bool operator!=(const FaceUri &rhs) const
Definition: face-uri.cpp:189
const std::string & getScheme() const
get scheme (protocol)
Definition: face-uri.hpp:113
friend std::ostream & operator<<(std::ostream &os, const FaceUri &uri)
Definition: face-uri.cpp:203
const std::string & getPort() const
get port
Definition: face-uri.hpp:127
Error(const std::string &what)
Definition: face-uri.hpp:51
void canonize(const CanonizeSuccessCallback &onSuccess, const CanonizeFailureCallback &onFailure, boost::asio::io_service &io, const time::nanoseconds &timeout) const
asynchronously convert this FaceUri to canonical form
Definition: face-uri.cpp:563
static FaceUri fromDev(const std::string &ifname)
create dev FaceUri from network device name
Definition: face-uri.cpp:160
bool operator==(const FaceUri &rhs) const
Definition: face-uri.cpp:179
const std::string & getHost() const
get host (domain)
Definition: face-uri.hpp:120
static FaceUri fromUdpDev(const boost::asio::ip::udp::endpoint &endpoint, const std::string &ifname)
create udp4 or udp6 NIC-associated FaceUri from endpoint and network device name
Definition: face-uri.cpp:169
const std::string & getPath() const
get path
Definition: face-uri.hpp:134
function< void(const std::string &reason)> CanonizeFailureCallback
Definition: face-uri.hpp:165
static FaceUri fromFd(int fd)
create fd FaceUri from file descriptor
Definition: face-uri.cpp:144