Kea 3.1.0
rrttl.h
Go to the documentation of this file.
1// Copyright (C) 2010-2024 Internet Systems Consortium, Inc. ("ISC")
2//
3// This Source Code Form is subject to the terms of the Mozilla Public
4// License, v. 2.0. If a copy of the MPL was not distributed with this
5// file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7#ifndef RRTTL_H
8#define RRTTL_H
9
10#include <dns/exceptions.h>
11#include <util/buffer.h>
12
13#include <boost/optional.hpp>
14
15#include <stdint.h>
16
17namespace isc {
18namespace dns {
19
20// forward declarations
22
27class InvalidRRTTL : public DNSTextError {
28public:
29 InvalidRRTTL(const char* file, size_t line, const char* what) :
30 DNSTextError(file, line, what) {}
31};
32
38public:
39 IncompleteRRTTL(const char* file, size_t line, const char* what) :
40 isc::dns::Exception(file, line, what) {}
41};
42
51class RRTTL {
52public:
58
59
64 explicit RRTTL(uint32_t ttlval) : ttlval_(ttlval) {
65 }
66
81 explicit RRTTL(const std::string& ttlstr);
82
93 explicit RRTTL(isc::util::InputBuffer& buff);
94
122 static RRTTL* createFromText(const std::string& ttlstr);
124
125
129
130
140 const std::string toText() const;
151 void toWire(AbstractMessageRenderer& renderer) const;
161 void toWire(isc::util::OutputBuffer& buff) const;
163
167
168
173 uint32_t getValue() const {
174 return (ttlval_);
175 }
176
177
185
186
191 bool equals(const RRTTL& other) const {
192 return (ttlval_ == other.ttlval_);
193 }
194
195 bool operator==(const RRTTL& other) const {
196 return (ttlval_ == other.ttlval_);
197 }
198
203 bool nequals(const RRTTL& other) const {
204 return (ttlval_ != other.ttlval_);
205 }
206
207 bool operator!=(const RRTTL& other) const {
208 return (ttlval_ != other.ttlval_);
209 }
210
217 bool leq(const RRTTL& other) const {
218 return (ttlval_ <= other.ttlval_);
219 }
220
222 bool operator<=(const RRTTL& other) const {
223 return (ttlval_ <= other.ttlval_);
224 }
225
233 bool geq(const RRTTL& other) const {
234 return (ttlval_ >= other.ttlval_);
235 }
236
238 bool operator>=(const RRTTL& other) const {
239 return (ttlval_ >= other.ttlval_);
240 }
241
249 bool lthan(const RRTTL& other) const {
250 return (ttlval_ < other.ttlval_);
251 }
252
254 bool operator<(const RRTTL& other) const {
255 return (ttlval_ < other.ttlval_);
256 }
257
265 bool gthan(const RRTTL& other) const {
266 return (ttlval_ > other.ttlval_);
267 }
268
270 bool operator>(const RRTTL& other) const {
271 return (ttlval_ > other.ttlval_);
272 }
273
274
278
279
285 static const RRTTL& MAX_TTL() {
286 static const RRTTL max_ttl(0x7fffffff);
287 return (max_ttl);
288 }
289
290
291private:
292 uint32_t ttlval_;
293};
294
309std::ostream&
310operator<<(std::ostream& os, const RRTTL& rrttl);
311}
312}
313#endif // RRTTL_H
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
The AbstractMessageRenderer class is an abstract base class that provides common interfaces for rende...
DNSTextError(const char *file, size_t line, const char *what)
Exception(const char *file, size_t line, const char *what)
IncompleteRRTTL(const char *file, size_t line, const char *what)
Definition rrttl.h:39
InvalidRRTTL(const char *file, size_t line, const char *what)
Definition rrttl.h:29
The RRTTL class encapsulates TTLs used in DNS resource records.
Definition rrttl.h:51
bool operator!=(const RRTTL &other) const
Same as nequals().
Definition rrttl.h:207
bool operator>(const RRTTL &other) const
Same as gthan()
Definition rrttl.h:270
void toWire(AbstractMessageRenderer &renderer) const
Render the RRTTL in the wire format.
Definition rrttl.cc:204
bool geq(const RRTTL &other) const
Greater-than or equal comparison for RRTTL against other.
Definition rrttl.h:233
static RRTTL * createFromText(const std::string &ttlstr)
A separate factory of RRTTL from text.
Definition rrttl.cc:176
bool equals(const RRTTL &other) const
Return true iff two RRTTLs are equal.
Definition rrttl.h:191
bool operator==(const RRTTL &other) const
Same as equals().
Definition rrttl.h:195
bool leq(const RRTTL &other) const
Less-than or equal comparison for RRTTL against other.
Definition rrttl.h:217
RRTTL(uint32_t ttlval)
Constructor from an integer TTL value.
Definition rrttl.h:64
bool operator>=(const RRTTL &other) const
Same as geq()
Definition rrttl.h:238
bool nequals(const RRTTL &other) const
Return true iff two RRTTLs are not equal.
Definition rrttl.h:203
bool gthan(const RRTTL &other) const
Greater-than comparison for RRTTL against other.
Definition rrttl.h:265
uint32_t getValue() const
Returns the TTL value as a 32-bit unsigned integer.
Definition rrttl.h:173
bool operator<(const RRTTL &other) const
Same as lthan()
Definition rrttl.h:254
static const RRTTL & MAX_TTL()
The TTL of the max allowable value, per RFC2181 Section 8.
Definition rrttl.h:285
bool lthan(const RRTTL &other) const
Less-than comparison for RRTTL against other.
Definition rrttl.h:249
const std::string toText() const
Convert the RRTTL to a string.
Definition rrttl.cc:192
bool operator<=(const RRTTL &other) const
Same as leq()
Definition rrttl.h:222
The InputBuffer class is a buffer abstraction for manipulating read-only data.
Definition buffer.h:81
The OutputBuffer class is a buffer abstraction for manipulating mutable data.
Definition buffer.h:346
ostream & operator<<(std::ostream &os, const EDNS &edns)
Insert the EDNS as a string into stream.
Definition edns.cc:163
Defines the logger used by the top-level component of kea-lfc.