Kea 1.5.0
netconf_controller.cc
Go to the documentation of this file.
1// Copyright (C) 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#include <config.h>
8
12
13using namespace isc::process;
14
15namespace isc {
16namespace netconf {
17
20const char* NetconfController::netconf_app_name_ = "Netconf";
21
23const char* NetconfController::netconf_bin_name_ = "kea-netconf";
24
27 // If the instance hasn't been created yet, create it. Note this method
28 // must use the base class singleton instance methods.
29 if (!getController()) {
30 DControllerBasePtr controller_ptr(new NetconfController());
31 setController(controller_ptr);
32 }
33
34 return (getController());
35}
36
37void
39 if (signum == SIGHUP) {
40 LOG_WARN(dctl_logger, DCTL_UNSUPPORTED_SIGNAL).arg(signum);
41 } else {
43 }
44}
45
47NetconfController::createProcess() {
48 // Instantiate and return an instance of the D2 application process. Note
49 // that the process is passed the controller's io_service.
50 return (new NetconfProcess(getAppName().c_str(), getIOService()));
51}
52
54NetconfController::parseFile(const std::string& name) {
55 ParserContext parser;
56 return (parser.parseFile(name, ParserContext::PARSER_NETCONF));
57}
58
59NetconfController::NetconfController()
60 : DControllerBase(netconf_app_name_, netconf_bin_name_) {
61}
62
64}
65
68 return (boost::dynamic_pointer_cast<NetconfProcess>(getProcess()));
69}
70
71} // namespace isc::netconf
72} // namespace isc
Process Controller for Netconf Process.
static process::DControllerBasePtr & instance()
Static singleton instance method.
NetconfProcessPtr getNetconfProcess()
Returns pointer to an instance of the underlying process object.
static const char * netconf_app_name_
Defines the application name, this is passed into base class and appears in log statements.
virtual ~NetconfController()
Destructor.
static const char * netconf_bin_name_
Defines the executable name.
virtual void processSignal(int signum)
Redefined application-level signal processing method.
isc::data::ConstElementPtr parseFile(const std::string &name)
Parses the configuration file using Netconf::ParserContext (bison)
Kea Netconf Application Process.
Parser context is a wrapper around flex/bison instances dedicated to Netconf-agent config file parser...
isc::data::ElementPtr parseFile(const std::string &filename, ParserType parser_type)
Run the parser on the file specified.
@ PARSER_NETCONF
This parser will expect the content as Netconf config wrapped in a map (that's the regular config fil...
Application Controller.
Definition: d_controller.h:104
asiolink::IOServicePtr & getIOService()
Getter for fetching the controller's IOService.
Definition: d_controller.h:412
static DControllerBasePtr & getController()
Static getter which returns the singleton instance.
Definition: d_controller.h:420
virtual void processSignal(int signum)
Application-level signal processing method.
static void setController(const DControllerBasePtr &controller)
Static setter which sets the singleton instance.
Definition: d_controller.cc:39
DProcessBasePtr getProcess()
Fetches the current process.
Definition: d_controller.h:565
std::string getAppName() const
Fetches the name of the application under control.
Definition: d_controller.h:224
Application Process Interface.
Definition: d_process.h:67
#define LOG_WARN(LOGGER, MESSAGE)
Macro to conveniently test warn output and log it.
Definition: macros.h:26
boost::shared_ptr< const Element > ConstElementPtr
Definition: data.h:23
boost::shared_ptr< NetconfProcess > NetconfProcessPtr
Defines a shared pointer to NetconfProcess.
isc::log::Logger dctl_logger("dctl")
Defines the logger used within libkea-process library.
Definition: d_log.h:18
boost::shared_ptr< DControllerBase > DControllerBasePtr
Definition: d_controller.h:79
Defines the logger used by the top-level component of kea-dhcp-ddns.