#include <cc/command_interpreter.h>
#include <config/hooked_command_mgr.h>
#include <config/config_log.h>
+#include <hooks/callout_handle.h>
#include <hooks/hooks_manager.h>
#include <hooks/server_hooks.h>
#include <boost/pointer_cast.hpp>
namespace config {
HookedCommandMgr::HookedCommandMgr()
- : BaseCommandMgr(), callout_handle_(HooksManager::createCalloutHandle()) {
+ : BaseCommandMgr() {
}
bool
ConstElementPtr hook_response;
if (HooksManager::commandHandlersPresent(cmd_name)) {
- callout_handle_ = HooksManager::createCalloutHandle();
+ CalloutHandlePtr callout_handle = HooksManager::createCalloutHandle();
// Set status to normal.
- callout_handle_->setStatus(CalloutHandle::NEXT_STEP_CONTINUE);
+ callout_handle->setStatus(CalloutHandle::NEXT_STEP_CONTINUE);
// Delete previously set arguments.
- callout_handle_->deleteAllArguments();
+ callout_handle->deleteAllArguments();
ConstElementPtr command = original_cmd ? original_cmd :
createCommand(cmd_name, params);
// And pass it to the hook library.
- callout_handle_->setArgument("command", command);
- callout_handle_->setArgument("response", hook_response);
+ callout_handle->setArgument("command", command);
+ callout_handle->setArgument("response", hook_response);
- HooksManager::callCommandHandlers(cmd_name, *callout_handle_);
+ HooksManager::callCommandHandlers(cmd_name, *callout_handle);
// The callouts should set the response.
- callout_handle_->getArgument("response", hook_response);
+ callout_handle->getArgument("response", hook_response);
answer = boost::const_pointer_cast<Element>(hook_response);
HookedCommandMgr::handleCommand(const std::string& cmd_name,
const ConstElementPtr& params,
const ConstElementPtr& original_cmd) {
- if (!callout_handle_) {
- isc_throw(Unexpected, "callout handle not configured for the Command "
- "Manager: this is a programming error");
- }
// The 'list-commands' is a special case. Hook libraries do not implement
// this command. We determine what commands are supported by the hook
#include <cc/data.h>
#include <config/base_command_mgr.h>
-#include <hooks/callout_handle.h>
namespace isc {
namespace config {
protected:
- /// @brief Returns callout handle to the derived class.
- ///
- /// @return const pointer to the callout handle.
- const isc::hooks::CalloutHandlePtr& getCalloutHandle() const {
- return (callout_handle_);
- }
-
/// @brief Handles the command within the hooks libraries.
///
/// This method checks if the hooks libraries are installed which implement
const isc::data::ConstElementPtr& params,
const isc::data::ConstElementPtr& original_cmd);
- /// @brief Pointer to a callout handle used by this class.
- isc::hooks::CalloutHandlePtr callout_handle_;
};
} // end of namespace isc::config