stub_analytics_plugin  1.6
Network Optix Video Analytics SDK
engine.h
1 #pragma once
2 
3 #include <string>
4 #include <map>
5 #include <mutex>
6 
7 #include <nx/sdk/helpers/ref_countable.h>
8 #include <nx/sdk/uuid.h>
9 #include <nx/sdk/helpers/log_utils.h>
10 #include <nx/sdk/i_string_map.h>
11 #include <nx/sdk/analytics/i_engine.h>
12 
13 namespace nx {
14 namespace sdk {
15 namespace analytics {
16 
28 class Engine: public RefCountable<IEngine>
29 {
30 protected:
31  LogUtils logUtils;
32 
33 protected:
38  Engine(
39  IPlugin* plugin,
40  bool enableOutput,
41  const std::string& printPrefix = "");
42 
43  virtual std::string manifest() const = 0;
44 
49  virtual void settingsReceived() {}
50 
56  std::string getParamValue(const char* paramName);
57 
68  virtual void executeAction(
69  const std::string& /*actionId*/,
70  Uuid /*objectId*/,
71  Uuid /*deviceId*/,
72  int64_t /*timestampUs*/,
73  const std::map<std::string, std::string>& /*params*/,
74  std::string* /*outActionUrl*/,
75  std::string* /*outMessageToUser*/,
76  Error* /*error*/)
77  {
78  }
79 
84  void pushPluginEvent(
85  nx::sdk::IPluginEvent::Level level,
86  std::string caption,
87  std::string description);
88 
93  template<typename DerivedPlugin>
94  DerivedPlugin* pluginCasted()
95  {
96  const auto plugin = dynamic_cast<DerivedPlugin*>(m_plugin);
97  assertPluginCasted(plugin);
98  return plugin;
99  }
100 
101  IEngine::IHandler* handler() const { return m_handler; }
102 
103 public:
104  virtual ~Engine() override;
105 
106  virtual IPlugin* plugin() const override { return m_plugin; }
107 
108 //-------------------------------------------------------------------------------------------------
109 // Not intended to be used by a descendant.
110 
111 public:
112  virtual void setSettings(const nx::sdk::IStringMap* settings) override;
113  virtual nx::sdk::IStringMap* pluginSideSettings() const override;
114  virtual const IString* manifest(Error* error) const override;
115 
116  virtual void executeAction(IAction* action, Error* outError) override;
117  virtual nx::sdk::Error setHandler(IEngine::IHandler* handler) override;
118  virtual bool isCompatible(const nx::sdk::IDeviceInfo* deviceInfo) const override;
119 
120 private:
121  void assertPluginCasted(void* plugin) const;
122 
123 private:
124  mutable std::mutex m_mutex;
125  IPlugin* const m_plugin;
126  std::map<std::string, std::string> m_settings;
127  IEngine::IHandler* m_handler = nullptr;
128 };
129 
130 } // namespace analytics
131 } // namespace sdk
132 } // namespace nx
Definition: i_string_map.h:8
virtual void settingsReceived()
Definition: engine.h:49
Definition: i_plugin.h:17
DerivedPlugin * pluginCasted()
Definition: engine.h:94
Definition: uuid.h:17
Definition: i_device_info.h:12
Definition: i_plugin.h:17
Definition: debug.cpp:13
Definition: log_utils.h:24
std::string getParamValue(const char *paramName)
Definition: engine.cpp:52
Engine(IPlugin *plugin, bool enableOutput, const std::string &printPrefix="")
Definition: engine.cpp:41
void pushPluginEvent(nx::sdk::IPluginEvent::Level level, std::string caption, std::string description)
Definition: engine.cpp:59
Definition: i_engine.h:35
virtual void executeAction(const std::string &, Uuid, Uuid, int64_t, const std::map< std::string, std::string > &, std::string *, std::string *, Error *)
Definition: engine.h:68
Definition: engine.h:28
Definition: ref_countable.h:79