Kea  1.5.0
base_command_mgr.h
Go to the documentation of this file.
1 // Copyright (C) 2017-2018 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 BASE_COMMAND_MGR_H
8 #define BASE_COMMAND_MGR_H
9 
10 #include <cc/data.h>
11 #include <exceptions/exceptions.h>
12 #include <boost/function.hpp>
13 #include <map>
14 #include <string>
15 
16 namespace isc {
17 namespace config {
18 
21 public:
22  InvalidCommandHandler(const char* file, size_t line, const char* what) :
23  isc::Exception(file, line, what) { };
24 };
25 
27 class InvalidCommandName : public Exception {
28 public:
29  InvalidCommandName(const char* file, size_t line, const char* what) :
30  isc::Exception(file, line, what) { };
31 };
32 
73 public:
74 
82  typedef boost::function<isc::data::ConstElementPtr (const std::string& name,
84 
95  typedef boost::function<isc::data::ConstElementPtr (const std::string& name,
96  const isc::data::ConstElementPtr& params,
98 
103  BaseCommandMgr();
104 
106  virtual ~BaseCommandMgr() { };
107 
119 
124  void registerCommand(const std::string& cmd, CommandHandler handler);
125 
136  void registerExtendedCommand(const std::string& cmd,
137  ExtendedCommandHandler handler);
138 
142  void deregisterCommand(const std::string& cmd);
143 
148  void deregisterAll();
149 
150 protected:
151 
168  handleCommand(const std::string& cmd_name,
169  const isc::data::ConstElementPtr& params,
170  const isc::data::ConstElementPtr& original_cmd);
171 
172  struct HandlersPair {
175  };
176 
178  typedef std::map<std::string, HandlersPair> HandlerContainer;
179 
182 
183 private:
184 
196  listCommandsHandler(const std::string& name,
197  const isc::data::ConstElementPtr& params);
198 };
199 
200 } // end of namespace isc::config
201 } // end of namespace isc
202 
203 #endif
InvalidCommandHandler(const char *file, size_t line, const char *what)
void deregisterAll()
Auxiliary method that removes all installed commands.
std::map< std::string, HandlersPair > HandlerContainer
Type of the container for command handlers.
boost::function< isc::data::ConstElementPtr(const std::string &name, const isc::data::ConstElementPtr &params, const isc::data::ConstElementPtr &original)> ExtendedCommandHandler
Defines extended command handler type.
virtual ~BaseCommandMgr()
Destructor.
HandlerContainer handlers_
Container for command handlers.
void registerCommand(const std::string &cmd, CommandHandler handler)
Registers specified command handler for a given command.
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
void registerExtendedCommand(const std::string &cmd, ExtendedCommandHandler handler)
Registers specified command handler for a given command.
void deregisterCommand(const std::string &cmd)
Deregisters specified command handler.
boost::shared_ptr< const Element > ConstElementPtr
Definition: data.h:23
boost::function< isc::data::ConstElementPtr(const std::string &name, const isc::data::ConstElementPtr &params)> CommandHandler
Defines command handler type.
InvalidCommandName(const char *file, size_t line, const char *what)
Commands Manager, responsible for processing external commands.
Exception indicating that the command name is not valid.
This is a base class for exceptions thrown from the DNS library module.
Defines the logger used by the top-level component of kea-dhcp-ddns.
isc::data::ConstElementPtr processCommand(const isc::data::ConstElementPtr &cmd)
Triggers command processing.
Exception indicating that the handler specified is not valid.
virtual isc::data::ConstElementPtr handleCommand(const std::string &cmd_name, const isc::data::ConstElementPtr &params, const isc::data::ConstElementPtr &original_cmd)
Handles the command having a given name and arguments.