blob: 72cfa1c44f4ae02758a87f67342e8dfc034bb9c9 [file] [log] [blame]
Junxiao Shi7357ef22016-09-07 02:39:37 +00001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
Alexander Afanasyevadc71842017-01-26 22:17:58 -05002/*
Alexander Afanasyeve6835fe2017-01-19 20:05:01 -08003 * Copyright (c) 2013-2017 Regents of the University of California.
Junxiao Shi7357ef22016-09-07 02:39:37 +00004 *
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_MGMT_NFD_COMMAND_OPTIONS_HPP
23#define NDN_MGMT_NFD_COMMAND_OPTIONS_HPP
24
25#include "../../security/signing-info.hpp"
26
Junxiao Shi7357ef22016-09-07 02:39:37 +000027namespace ndn {
Junxiao Shi7357ef22016-09-07 02:39:37 +000028namespace nfd {
29
30/** \ingroup management
31 * \brief contains options for ControlCommand execution
32 * \note This type is intentionally copyable
33 */
34class CommandOptions
35{
36public:
37 /** \brief constructs CommandOptions
38 * \post getTimeout() == DEFAULT_TIMEOUT
39 * \post getPrefix() == DEFAULT_PREFIX
40 * \post getSigningInfo().getSignerType() == SIGNER_TYPE_NULL
41 */
42 CommandOptions();
43
44 /** \return command timeout
45 */
46 const time::milliseconds&
47 getTimeout() const
48 {
49 return m_timeout;
50 }
51
52 /** \brief sets command timeout
53 * \param timeout the new command timeout, must be positive
54 * \throw std::out_of_range if timeout is non-positive
55 * \return self
56 */
57 CommandOptions&
58 setTimeout(const time::milliseconds& timeout);
59
60 /** \return command prefix
61 */
62 const Name&
63 getPrefix() const
64 {
65 return m_prefix;
66 }
67
68 /** \brief sets command prefix
69 * \return self
70 */
71 CommandOptions&
72 setPrefix(const Name& prefix);
73
74 /** \return signing parameters
75 */
76 const security::SigningInfo&
77 getSigningInfo() const
78 {
79 return m_signingInfo;
80 }
81
82 /** \brief sets signing parameters
83 * \return self
84 */
85 CommandOptions&
86 setSigningInfo(const security::SigningInfo& signingInfo);
87
Junxiao Shi7357ef22016-09-07 02:39:37 +000088public:
89 /** \brief gives the default command timeout: 10000ms
90 */
91 static const time::milliseconds DEFAULT_TIMEOUT;
92
93 /** \brief gives the default command prefix: ndn:/localhost/nfd
94 */
95 static const Name DEFAULT_PREFIX;
96
97private:
98 time::milliseconds m_timeout;
99 Name m_prefix;
100 security::SigningInfo m_signingInfo;
101};
102
103} // namespace nfd
104} // namespace ndn
105
106#endif // NDN_MGMT_NFD_COMMAND_OPTIONS_HPP