blob: f40c9108546f81f94d954787163761b97d4ef404 [file] [log] [blame]
Junxiao Shid6dcd2c2014-02-16 14:49:54 -07001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
Alexander Afanasyev9bcbc7c2014-04-06 19:37:37 -07003 * Copyright (c) 2014 Regents of the University of California,
4 * Arizona Board of Regents,
5 * Colorado State University,
6 * University Pierre & Marie Curie, Sorbonne University,
7 * Washington University in St. Louis,
8 * Beijing Institute of Technology
9 *
10 * This file is part of NFD (Named Data Networking Forwarding Daemon).
11 * See AUTHORS.md for complete list of NFD authors and contributors.
12 *
13 * NFD is free software: you can redistribute it and/or modify it under the terms
14 * of the GNU General Public License as published by the Free Software Foundation,
15 * either version 3 of the License, or (at your option) any later version.
16 *
17 * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
18 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
19 * PURPOSE. See the GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License along with
22 * NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
23 **/
Junxiao Shid6dcd2c2014-02-16 14:49:54 -070024
Alexander Afanasyev613e2a92014-04-15 13:36:58 -070025#ifndef NFD_DAEMON_FACE_NDNLP_PARSE_HPP
26#define NFD_DAEMON_FACE_NDNLP_PARSE_HPP
Junxiao Shid6dcd2c2014-02-16 14:49:54 -070027
28#include "common.hpp"
29#include "ndnlp-tlv.hpp"
30
31namespace nfd {
32namespace ndnlp {
33
34struct ParseError : public std::runtime_error
35{
36 ParseError(const std::string& what)
37 : std::runtime_error(what)
38 {
39 }
40};
41
42/** \brief represents a NdnlpData packet
Junxiao Shidf3b4382014-02-23 11:28:21 -070043 *
Junxiao Shid6dcd2c2014-02-16 14:49:54 -070044 * NdnlpData ::= NDNLP-DATA-TYPE TLV-LENGTH
45 * NdnlpSequence
46 * NdnlpFragIndex?
47 * NdnlpFragCount?
48 * NdnlpPayload
49 */
50class NdnlpData
51{
52public:
53 /** \brief parse a NdnlpData packet
Junxiao Shidf3b4382014-02-23 11:28:21 -070054 *
Junxiao Shid6dcd2c2014-02-16 14:49:54 -070055 * \exception ParseError packet is malformated
56 */
57 void
58 wireDecode(const Block& wire);
Junxiao Shidf3b4382014-02-23 11:28:21 -070059
Junxiao Shid6dcd2c2014-02-16 14:49:54 -070060public:
61 uint64_t m_seq;
62 uint16_t m_fragIndex;
63 uint16_t m_fragCount;
64 Block m_payload;
65};
66
67} // namespace ndnlp
68} // namespace nfd
69
Alexander Afanasyev613e2a92014-04-15 13:36:58 -070070#endif // NFD_DAEMON_FACE_NDNLP_PARSE_HPP