blob: 95001e90d6857220879caa73538f362d592fd19b [file] [log] [blame]
Alexander Afanasyev6e3d1ac2014-07-21 12:47:49 -07001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
3 * Copyright (c) 2014, Regents of the University of California.
4 *
5 * This file is part of NDNS (Named Data Networking Domain Name Service).
6 * See AUTHORS.md for complete list of NDNS authors and contributors.
7 *
8 * NDNS is free software: you can redistribute it and/or modify it under the terms
9 * of the GNU General Public License as published by the Free Software Foundation,
10 * either version 3 of the License, or (at your option) any later version.
11 *
12 * NDNS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
13 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14 * PURPOSE. See the GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along with
17 * NDNS, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#ifndef NDNS_RR_HPP
21#define NDNS_RR_HPP
22
23#include "ndns-tlv.hpp"
24
25#include <ndn-cxx/encoding/block.hpp>
26#include <ndn-cxx/interest.hpp>
27
28namespace ndn {
29namespace ndns {
30
31enum RRType
32 {
33 NS,
34 TXT,
35 UNKNOWN
36 };
37
38class RR {
39public:
40 RR();
41 virtual ~RR();
42
43 const std::string&
44 getRrdata() const
45 {
46 return m_rrData;
47 }
48
49 void setRrdata(const std::string& rrdata)
50 {
51 this->m_rrData = rrdata;
52 }
53
54private:
55 template<bool T>
56 size_t
57 wireEncode(EncodingImpl<T> & block) const;
58
59public:
60
61 const Block&
62 wireEncode() const;
63
64 void
65 wireDecode(const Block& wire);
66
67
68 Interest
69 toWire() const;
70
71
72private:
73 uint32_t m_id;
74 std::string m_rrData;
75
76 mutable Block m_wire;
77};
78
79} // namespace ndns
80} // namespace ndn
81
82#endif // NDNS_RR_HPP