Conscience Core
ConscienceServerCommandHandler.h
Go to the documentation of this file.
1 #ifndef ConscienceServerCommandHandler_hpp
2 #define ConscienceServerCommandHandler_hpp
3 
7 #include "ConscienceCore/Communication/CscMessageHandler.h"
8 
12 #include "server/EngineInfos.h"
14 
15 using std::vector, std::string, std::unique_ptr, std::shared_ptr, std::exception, conscience_utils::logging::CscLogger, conscience_core::bridging::ConscienceEncoder;
16 using namespace conscience_core::core_objects;
17 using namespace conscience_core::ai;
18 using namespace conscience_server;
19 using namespace conscience_core::communication;
20 using namespace conscience_server::entities;
21 using namespace conscience_core::mjpg_streamer;
22 
23 namespace conscience_server {
24 
26  bool valid;
28  vector<string> responseArgs;
29 
30  string toCommunicationString() const {
31  string fullResponse = responseCommandName;
32  for (int i = 0; i < responseArgs.size(); i++) {
33  fullResponse += ";" + responseArgs.at(i);
34  }
35  return fullResponse;
36  }
37 };
38 
39 typedef function<ConscienceServerCommandResponse(const vector<string> *arguments, ptr<CscMessagingRequestContext> requestContext)> ServerApiCallHandler;
40 
41 class ServiceExecutionException : public exception {
42 public:
43  ServiceExecutionException(string message) throw()
44  : message(message) {
45  }
46  const char *what() const throw() {
47  string what = "engine service execution failed: " + message;
48  return what.c_str();
49  }
50 
51  string getMessage() const {
52  return message;
53  }
54 
55 private:
56  string message;
57 };
58 
60 public:
61  ConscienceServerCommandHandler(const EngineInfos *const engineInfos, CscMJPGStreamer *mjpgStreamer);
62 
63  virtual optional<CscMessageHandlerResult> handleMessage(const string &messageSubject, const vector<string> &args, optional<int> knowledgeId, ptr<CscMessagingRequestContext> context) override;
64 
65  virtual optional<string> handleLowLevelMessage(const string &message) override;
66 
67  void setServerEntities(ServerEntities *serverEntities);
68 
69 private:
70 
71  static ConscienceServerCommandResponse getEngineInfosResponse(const EngineInfos *engineInfos);
72 
73  ConscienceServerCommandResponse handleGetEngineInfos(const vector<string> *commandArguments);
74 
75  ConscienceServerCommandResponse handleGetRegisteredEntitiesSerialNumbers(const vector<string> *commandArguments);
76 
77  ConscienceServerCommandResponse handleGetStatusAiObjectives(const vector<string> *commandArguments);
78 
79  ConscienceServerCommandResponse handleGetCurrentEnvironment(const vector<string> *commandArguments);
80 
81  ConscienceServerCommandResponse handleSetEngineLogLevel(const vector<string> *commandArguments);
82 
83  ConscienceServerCommandResponse handleSetLoggerLogLevel(const vector<string> *commandArguments);
84 
85  ConscienceServerCommandResponse handleExecuteEnvironmentInteractionCommand(const vector<string> *commandArguments);
86 
87  ConscienceServerCommandResponse handleGetListLastExecutedCommand(const vector<string> *commandArguments);
88 
89  ConscienceServerCommandResponse handleGetLastDetectedObjectDistance(const vector<string> *commandArguments);
90 
91  ConscienceServerCommandResponse handleGetLastProcessedImage(const vector<string> *commandArguments);
92 
93  ConscienceServerCommandResponse handleSetEntityMJPGStreamQuality(const vector<string> *commandArguments);
94 
95  ConscienceServerCommandResponse handleDumpEnvironmentSimulator(const vector<string> *commandArguments);
96 
97  ConscienceServerCommandResponse handleGetLastEntityReflexionResult(const vector<string> *commandArguments);
98 
99  ConscienceServerCommandResponse handleIsEntityRunningCommand(const vector<string> *commandArguments);
100 
101  ConscienceServerCommandResponse handleGetEntities(const vector<string> *commandArguments);
102 
103  ConscienceServerCommandResponse handleGetEntitiesActivities(const vector<string> *commandArguments, ptr<CscMessagingRequestContext> requestContext);
104 
105  CscMJPGStreamer *mjpgStreamer = nullptr;
106  ConscienceEncoder *conscienceEncoder = nullptr;
107  ServerEntities *serverEntities = nullptr;
108  const EngineInfos *const engineInfos = nullptr;
109  const ptr<CscEntityReflexions> entityReflexions = CscEntityReflexions::getInstance();
110 
111  unique_ptr<CscLogger> logger = CscLogger::getForCategory("ConscienceServerCommandHandler");
112 
113  map<string, ServerApiCallHandler> handlers;
114  void initHandlers();
115 
116  ptr<CscEntityReflexion> getEntityReflexion(const string &serialNumber) const;
117 };
118 }
119 
120 #endif
conscience_core::core_objects
Definition: CscEntityReflexion.h:33
conscience_server::ServiceExecutionException::getMessage
string getMessage() const
Definition: ConscienceServerCommandHandler.h:51
conscience_core::ai
Definition: alerts.cpp:12
conscience_server::ConscienceServerCommandResponse::responseArgs
vector< string > responseArgs
Definition: ConscienceServerCommandHandler.h:28
conscience_server::ConscienceServerCommandHandler
Definition: ConscienceServerCommandHandler.h:59
conscience_server::entities::ServerEntities
Definition: ServerEntities.h:44
conscience_core::mjpg_streamer::CscMJPGStreamer
Definition: CscMJPGStreamer.h:23
conscience_core::bridging::commands::entityReflexions
static ptr< CscEntityReflexions > entityReflexions
Definition: CommandCommons.h:17
conscience_server::ServiceExecutionException::what
const char * what() const
Definition: ConscienceServerCommandHandler.h:46
conscience_server::entities
Definition: ServerEntities.cpp:36
CscEntityReflexion.h
CscEntityReflexions.h
logger
static std::unique_ptr< CscLogger > logger
Definition: gltfHelpers.cpp:6
EngineInfos.h
conscience_server
Definition: CscVocalPhoneCallEmitter.cpp:17
conscience_core::mjpg_streamer
Definition: CscMJPGStreamer.cpp:32
CscMJPGStreamer.h
conscience_core::bridging::ConscienceEncoder
Definition: ConscienceEncoder.h:46
CscEnvironmentSimulator.h
conscience_core::communication
Definition: CscEntityClient.h:6
conscience_server::ConscienceServerCommandResponse
Definition: ConscienceServerCommandHandler.h:25
conscience_server::ServiceExecutionException
Definition: ConscienceServerCommandHandler.h:41
conscience_core::communication::CscMessageHandler
Definition: CscMessageHandler.h:32
conscience_server::EngineInfos
Definition: EngineInfos.h:17
conscience_utils::logging::CscLogger
Definition: conscience_log.h:121
ServerEntities.h
conscience_server::ConscienceServerCommandResponse::toCommunicationString
string toCommunicationString() const
Definition: ConscienceServerCommandHandler.h:30
conscience_server::ConscienceServerCommandResponse::responseCommandName
string responseCommandName
Definition: ConscienceServerCommandHandler.h:27
conscience_server::ConscienceServerCommandResponse::valid
bool valid
Definition: ConscienceServerCommandHandler.h:26
ConscienceEncoder.h
conscience_core::bridging::commands::environment_objects::optional< string >
const ptr< CscObjectModel > const string const CscPoint3d const CscPoint3d optional< string >
Definition: environmentObjectsCommands.h:373
ptr
std::shared_ptr< T > ptr
Definition: CscCommon.h:29
CscCommandsProcessor.h
conscience_server::ServerApiCallHandler
function< ConscienceServerCommandResponse(const vector< string > *arguments, ptr< CscMessagingRequestContext > requestContext)> ServerApiCallHandler
Definition: ConscienceServerCommandHandler.h:39
conscience_server::ServiceExecutionException::ServiceExecutionException
ServiceExecutionException(string message)
Definition: ConscienceServerCommandHandler.h:43
i
int i
Definition: HybridAStar.cpp:191