summaryrefslogtreecommitdiffstats
path: root/src/bin/agent/ca_controller.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/agent/ca_controller.h')
-rw-r--r--src/bin/agent/ca_controller.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/src/bin/agent/ca_controller.h b/src/bin/agent/ca_controller.h
new file mode 100644
index 0000000..7d6b5ae
--- /dev/null
+++ b/src/bin/agent/ca_controller.h
@@ -0,0 +1,85 @@
+// Copyright (C) 2016-2017 Internet Systems Consortium, Inc. ("ISC")
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef CTRL_AGENT_CONTROLLER_H
+#define CTRL_AGENT_CONTROLLER_H
+
+#include <agent/ca_process.h>
+#include <process/d_controller.h>
+
+namespace isc {
+namespace agent {
+
+/// @brief Process Controller for Control Agent Process.
+///
+/// This class is the Control Agent specific derivation of the DControllerBase.
+/// It creates and manages an instance of the Control Agent application process,
+/// CtrlAgentProcess.
+class CtrlAgentController : public process::DControllerBase {
+public:
+
+ /// @brief Static singleton instance method.
+ ///
+ /// This method returns the base class singleton instance member.
+ /// It instantiates the singleton and sets the base class instance
+ /// member upon first invocation.
+ ///
+ /// @return returns the pointer reference to the singleton instance.
+ static process::DControllerBasePtr& instance();
+
+ /// @brief Destructor
+ virtual ~CtrlAgentController();
+
+ /// @brief Returns pointer to an instance of the underlying process object.
+ CtrlAgentProcessPtr getCtrlAgentProcess();
+
+ /// @brief Defines the application name, this is passed into base class
+ /// and appears in log statements.
+ static const char* agent_app_name_;
+
+ /// @brief Defines the executable name. This is passed into the base class
+ /// by convention this should match the executable name.
+ static const char* agent_bin_name_;
+
+ /// @brief Parses the configuration file using Agent::ParserContext (bison)
+ ///
+ /// @param name name of the text file to be parsed
+ /// @return Element tree structure representing parsed configuration
+ isc::data::ConstElementPtr
+ parseFile(const std::string& name);
+
+ /// @brief Register commands.
+ void registerCommands();
+
+ /// @brief Deregister commands.
+ void deregisterCommands();
+
+private:
+
+ /// @brief Creates an instance of the Control Agent application
+ /// process.
+ ///
+ /// This method is invoked during the process initialization step of
+ /// the controller launch.
+ ///
+ /// @return returns a DProcessBase* to the application process created.
+ /// Note the caller is responsible for destructing the process. This
+ /// is handled by the base class, which wraps this pointer with a smart
+ /// pointer.
+ virtual process::DProcessBase* createProcess();
+
+ /// @brief Constructor is declared private to maintain the integrity of
+ /// the singleton instance.
+ CtrlAgentController();
+};
+
+// @Defines a shared pointer to CtrlAgentController
+typedef boost::shared_ptr<CtrlAgentController> CtrlAgentControllerPtr;
+
+} // namespace isc::agent
+} // namespace isc
+
+#endif // CTRL_AGENT_CONTROLLER_H