ndn-cxx: NDN C++ Library 0.9.0-33-g832ea91d
Loading...
Searching...
No Matches
segmenter.hpp
Go to the documentation of this file.
1/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2013-2023 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
22#ifndef NDN_CXX_UTIL_SEGMENTER_HPP
23#define NDN_CXX_UTIL_SEGMENTER_HPP
24
26#include "ndn-cxx/util/span.hpp"
27
28namespace ndn {
29
34{
35public:
41 Segmenter(KeyChain& keyChain, const security::SigningInfo& signingInfo);
42
52 [[nodiscard]] std::vector<std::shared_ptr<Data>>
53 segment(span<const uint8_t> buffer,
54 const Name& dataName,
55 size_t maxSegmentSize,
56 time::milliseconds freshnessPeriod,
57 uint32_t contentType = tlv::ContentType_Blob);
58
68 [[nodiscard]] std::vector<std::shared_ptr<Data>>
69 segment(std::istream& input,
70 const Name& dataName,
71 size_t maxSegmentSize,
72 time::milliseconds freshnessPeriod,
73 uint32_t contentType = tlv::ContentType_Blob);
74
75private:
76 KeyChain& m_keyChain;
77 security::SigningInfo m_signingInfo;
78};
79
80} // namespace ndn
81
82#endif // NDN_CXX_UTIL_SEGMENTER_HPP
Represents an absolute name.
Definition name.hpp:45
Utility class to segment an object into multiple Data packets.
Definition segmenter.hpp:34
std::vector< std::shared_ptr< Data > > segment(span< const uint8_t > buffer, const Name &dataName, size_t maxSegmentSize, time::milliseconds freshnessPeriod, uint32_t contentType=tlv::ContentType_Blob)
Splits a blob of bytes into one or more Data packets (segments).
Definition segmenter.cpp:35
The main interface for signing key management.
Definition key-chain.hpp:87
Signing parameters passed to KeyChain.
::boost::chrono::milliseconds milliseconds
Definition time.hpp:52
@ ContentType_Blob
payload
Definition tlv.hpp:145
Definition data.cpp:25