source: trunk/FACT++/src/StateMachineDimControl.h@ 18367

Last change on this file since 18367 was 18167, checked in by tbretz, 10 years ago
Print not only the identification of the script but also the user who sent the STOP command.
File size: 2.9 KB
Line 
1#ifndef FACT_StateMachineDimControl
2#define FACT_StateMachineDimControl
3
4#include <set>
5
6#include "DimState.h"
7#include "StateMachineDim.h"
8
9class Configuration;
10
11class StateMachineDimControl : public StateMachineDim
12{
13 std::mutex fMutex;
14
15 std::vector<DimDescriptions*> fDimDescriptionsList;
16
17 std::set<std::string> fServerList;
18 std::set<Service> fServiceList;
19 std::map<std::string, std::vector<std::string>> fCommandList;
20 std::map<std::string, State> fCurrentStateList;
21 std::map<std::pair<std::string, int32_t>, std::pair<std::string, std::string>> fStateDescriptionList;
22 std::map<std::string, std::vector<Description>> fServiceDescriptionList;
23
24 std::function<void(const std::string &, const State&)> fStateCallback;
25
26 DimVersion fDim;
27 DimDnsServiceList fDimList;
28
29 int fVerbosity;
30 bool fDebug;
31
32 std::string fUser;
33 std::string fScriptUser;
34
35 /// Default arguments provided to very java script
36 std::string fArgumentsJS;
37
38 std::function<int(const EventImp &)> fInterruptHandler;
39
40 std::string Line(const std::string &txt, char fill);
41
42public:
43 static bool fIsServer;
44
45 int ChangeState(int qos, const Time &time, int scriptdepth, std::string scriptfile, std::string user);
46 int ChangeState(int state);
47
48 int StartScript(const EventImp &imp, const std::string &cmd);
49 int StopScript(const EventImp &imp);
50 int InterruptScript(const EventImp &imp);
51
52 int HandleStateChange(const std::string &server, DimDescriptions *state);
53 int HandleDescriptions(DimDescriptions *state);
54 int HandleStates(const std::string &server, DimDescriptions *state);
55 int HandleServerAdd(const std::string &server);
56 int HandleServerRemove(const std::string &server);
57 int HandleAddService(const Service &svc);
58
59 bool HasServer(const std::string &server);
60
61 std::vector<std::string> GetServerList();
62 std::vector<std::string> GetCommandList(const std::string &server);
63 std::vector<std::string> GetCommandList();
64 std::vector<Description> GetDescription(const std::string &service);
65 std::vector<State> GetStates(const std::string &server);
66 std::set<Service> GetServiceList();
67
68 int PrintStates(std::ostream &out, const std::string &serv="");
69 int PrintDescription(std::ostream &out, bool iscmd, const std::string &serv="", const std::string &service="");
70
71 State GetServerState(const std::string &server);
72
73 bool SendDimCommand(const std::string &server, std::string str, std::ostream &lout);
74
75 void SetStateCallback(const std::function<void(const std::string &, const State &)> &func) { fStateCallback = func; }
76
77 void SetInterruptHandler(const std::function<int(const EventImp &)> &func=std::function<int(const EventImp &)>()) { fInterruptHandler = func; }
78
79public:
80 StateMachineDimControl(std::ostream &out=std::cout);
81 ~StateMachineDimControl();
82
83 int EvalOptions(Configuration &conf);
84};
85
86#endif
Note: See TracBrowser for help on using the repository browser.