Kea  1.9.9-git
master_loader_callbacks.h
Go to the documentation of this file.
1 // Copyright (C) 2012-2020 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 MASTER_LOADER_CALLBACKS_H
8 #define MASTER_LOADER_CALLBACKS_H
9 
10 #include <exceptions/exceptions.h>
11 
12 #include <boost/shared_ptr.hpp>
13 #include <functional>
14 #include <string>
15 
16 namespace isc {
17 namespace dns {
18 class Name;
19 class RRClass;
20 class RRType;
21 class RRTTL;
22 namespace rdata {
23 class Rdata;
24 typedef boost::shared_ptr<Rdata> RdataPtr;
25 }
26 
38 typedef std::function<void(const Name& name, const RRClass& rrclass,
39  const RRType& rrtype, const RRTTL& rrttl,
40  const rdata::RdataPtr& rdata)>
42 
50 public:
61  typedef std::function<void(const std::string& source_name,
62  size_t source_line,
63  const std::string& reason)> IssueCallback;
64 
72  MasterLoaderCallbacks(const IssueCallback& error,
73  const IssueCallback& warning) :
74  error_(error),
75  warning_(warning)
76  {
77  if (!error_ || !warning_) {
79  "Empty function passed as callback");
80  }
81  }
82 
94  void error(const std::string& source_name, size_t source_line,
95  const std::string& reason) const
96  {
97  error_(source_name, source_line, reason);
98  }
99 
111  void warning(const std::string& source_name, size_t source_line,
112  const std::string& reason) const
113  {
114  warning_(source_name, source_line, reason);
115  }
116 
126 
127 private:
128  const IssueCallback error_, warning_;
129 };
130 
131 }
132 }
133 
134 #endif // MASTER_LOADER_CALLBACKS_H
The Name class encapsulates DNS names.
Definition: name.h:223
A generic exception that is thrown if a parameter given to a method or function is considered invalid...
The Rdata class is an abstract base class that provides a set of common interfaces to manipulate conc...
Definition: rdata.h:123
static MasterLoaderCallbacks getNullCallbacks()
Return a callbacks instance with null callbacks.
std::function< void(const std::string &source_name, size_t source_line, const std::string &reason)> IssueCallback
Type of one callback to report problems.
The RRClass class encapsulates DNS resource record classes.
Definition: rrclass.h:98
void warning(const std::string &source_name, size_t source_line, const std::string &reason) const
Call callback for potential problems.
MasterLoaderCallbacks(const IssueCallback &error, const IssueCallback &warning)
Constructor.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
The RRTTL class encapsulates TTLs used in DNS resource records.
Definition: rrttl.h:55
Defines the logger used by the top-level component of kea-dhcp-ddns.
The RRType class encapsulates DNS resource record types.
Definition: rrtype.h:106
std::function< void(const Name &name, const RRClass &rrclass, const RRType &rrtype, const RRTTL &rrttl, const rdata::RdataPtr &rdata)> AddRRCallback
Type of callback to add a RR.
Set of issue callbacks for a loader.
boost::shared_ptr< Rdata > RdataPtr
The RdataPtr type is a pointer-like type, pointing to an object of some concrete derived class of Rda...
void error(const std::string &source_name, size_t source_line, const std::string &reason) const
Call callback for serious errors.