stub_analytics_plugin  1.6
Network Optix Video Analytics SDK
common_engine.h
1 #pragma once
2 
3 #include <string>
4 #include <map>
5 #include <mutex>
6 
7 #include <plugins/plugin_tools.h>
8 #include <nx/sdk/utils.h>
9 #include <nx/sdk/settings.h>
10 #include <nx/sdk/analytics/engine.h>
11 #include <nx/sdk/analytics/objects_metadata_packet.h>
12 
13 namespace nx {
14 namespace sdk {
15 namespace analytics {
16 
28 class CommonEngine: public nxpt::CommonRefCounter<Engine>
29 {
30 protected:
31  nx::sdk::Utils utils;
32 
33 protected:
39  Plugin* 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  nxpl::NX_GUID /*objectId*/,
71  nxpl::NX_GUID /*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  assetPluginCasted(plugin);
98  return plugin;
99  }
100 
101  nx::sdk::analytics::Engine::IHandler* handler() { return m_handler; }
102 
103 public:
104  virtual ~CommonEngine() override;
105 
106  virtual Plugin* plugin() const override { return m_plugin; }
107 
108 //-------------------------------------------------------------------------------------------------
109 // Not intended to be used by a descendant.
110 
111 public:
112  virtual void* queryInterface(const nxpl::NX_GUID& interfaceId) override;
113  virtual void setSettings(const nx::sdk::Settings* settings) override;
114  virtual nx::sdk::Settings* pluginSideSettings() const override;
115  virtual const IString* manifest(Error* error) const override;
116 
117  virtual void executeAction(Action* action, Error* outError) override;
118  virtual nx::sdk::Error setHandler(nx::sdk::analytics::Engine::IHandler* handler) override;
119 
120 private:
121  void assertPluginCasted(void* plugin) const;
122 
123 private:
124  mutable std::mutex m_mutex;
125  Plugin* const m_plugin;
126  std::map<std::string, std::string> m_settings;
127  nx::sdk::analytics::Engine::IHandler* m_handler = nullptr;
128 };
129 
130 } // namespace analytics
131 } // namespace sdk
132 } // namespace nx
DerivedPlugin * pluginCasted()
Definition: common_engine.h:94
virtual void settingsReceived()
Definition: common_engine.h:49
Definition: common_engine.h:28
virtual void executeAction(const std::string &, nxpl::NX_GUID, nxpl::NX_GUID, int64_t, const std::map< std::string, std::string > &, std::string *, std::string *, Error *)
Definition: common_engine.h:68
Definition: utils.h:25
void pushPluginEvent(nx::sdk::IPluginEvent::Level level, std::string caption, std::string description)
Definition: common_engine.cpp:58
GUID of plugin interface.
Definition: plugin_api.h:21
Definition: plugin_tools.h:221
Definition: debug.cpp:14
CommonEngine(Plugin *plugin, bool enableOutput, const std::string &printPrefix="")
Definition: common_engine.cpp:40
std::string getParamValue(const char *paramName)
Definition: common_engine.cpp:51
Definition: settings.h:15
Definition: plugin.h:27