blob: 7d6b5aee3ef19237dc46e81443b870200021bc75 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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
|