]> granicus.if.org Git - icinga2/blob - lib/cli/consolecommand.hpp
add some object locking to the Dump method (which could theoreticylly suffer from...
[icinga2] / lib / cli / consolecommand.hpp
1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
2
3 #ifndef CONSOLECOMMAND_H
4 #define CONSOLECOMMAND_H
5
6 #include "cli/clicommand.hpp"
7 #include "base/exception.hpp"
8 #include "base/scriptframe.hpp"
9
10 namespace icinga
11 {
12
13 /**
14  * The "console" CLI command.
15  *
16  * @ingroup cli
17  */
18 class ConsoleCommand final : public CLICommand
19 {
20 public:
21         DECLARE_PTR_TYPEDEFS(ConsoleCommand);
22
23         static void StaticInitialize();
24
25         String GetDescription() const override;
26         String GetShortDescription() const override;
27         ImpersonationLevel GetImpersonationLevel() const override;
28         void InitParameters(boost::program_options::options_description& visibleDesc,
29                 boost::program_options::options_description& hiddenDesc) const override;
30         int Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const override;
31
32         static int RunScriptConsole(ScriptFrame& scriptFrame, const String& addr = String(),
33                 const String& session = String(), const String& commandOnce = String(), const String& commandOnceFileName = String(),
34                 bool syntaxOnly = false);
35
36 private:
37         mutable boost::mutex m_Mutex;
38         mutable boost::condition_variable m_CV;
39
40         static void ExecuteScriptCompletionHandler(boost::mutex& mutex, boost::condition_variable& cv,
41                 bool& ready, const boost::exception_ptr& eptr, const Value& result, Value& resultOut,
42                 boost::exception_ptr& eptrOut);
43         static void AutocompleteScriptCompletionHandler(boost::mutex& mutex, boost::condition_variable& cv,
44                 bool& ready, const boost::exception_ptr& eptr, const Array::Ptr& result, Array::Ptr& resultOut);
45
46 #ifdef HAVE_EDITLINE
47         static char *ConsoleCompleteHelper(const char *word, int state);
48 #endif /* HAVE_EDITLINE */
49
50         static void BreakpointHandler(ScriptFrame& frame, ScriptError *ex, const DebugInfo& di);
51
52 };
53
54 }
55
56 #endif /* CONSOLECOMMAND_H */