nx_metadata_sdk  1.0
Metadata SDK
engine.h
1 // Copyright 2018-present Network Optix, Inc. Licensed under MPL 2.0: www.mozilla.org/MPL/2.0/
2 
3 #pragma once
4 
5 #include <map>
6 #include <mutex>
7 #include <string>
8 
9 #include <nx/sdk/analytics/i_engine.h>
10 #include <nx/sdk/helpers/log_utils.h>
11 #include <nx/sdk/helpers/ref_countable.h>
12 #include <nx/sdk/i_string_map.h>
13 #include <nx/sdk/ptr.h>
14 #include <nx/sdk/result.h>
15 #include <nx/sdk/uuid.h>
16 
17 namespace nx::sdk::analytics {
18 
30 class Engine: public RefCountable<IEngine>
31 {
32 protected:
33  LogUtils logUtils;
34 
35 protected:
40  Engine(bool enableOutput, const std::string& pluginInstanceId = "");
41 
42  virtual std::string manifestString() const = 0;
43 
49  virtual Result<const ISettingsResponse*> settingsReceived() { return nullptr; }
50 
60  std::string settingValue(const std::string& settingName) const;
61 
70  std::map<std::string, std::string> currentSettings() const;
71 
83  const std::string& actionId,
84  Uuid objectTrackId,
85  Uuid deviceId,
86  int64_t timestampUs,
87  Ptr<IObjectTrackInfo> trackInfo,
88  const std::map<std::string, std::string>& params);
89 
96  IPluginDiagnosticEvent::Level level,
97  std::string caption,
98  std::string description) const;
99 
100  IHandler* handler() const { return m_handler.get(); }
101 
102  virtual void doGetSettingsOnActiveSettingChange(
104  const IActiveSettingChangedAction* activeSettingChangedAction) override;
105 
106 public:
107  virtual ~Engine() override;
108 
109 //-------------------------------------------------------------------------------------------------
110 // Not intended to be used by a descendant.
111 
112 public:
113  virtual void setEngineInfo(const IEngineInfo* engineInfo) override;
114  virtual void setHandler(IEngine::IHandler* handler) override;
115  virtual bool isCompatible(const IDeviceInfo* deviceInfo) const override;
116 
117 protected:
118  virtual void doSetSettings(
119  Result<const ISettingsResponse*>* outResult, const IStringMap* settings) override;
120 
121  virtual void getPluginSideSettings(Result<const ISettingsResponse*>* outResult) const override;
122 
123  virtual void getManifest(Result<const IString*>* outResult) const override;
124 
125  virtual void doExecuteAction(
126  Result<IAction::Result>* outResult, const IAction* action) override;
127 
128 private:
129  mutable std::mutex m_mutex;
130  std::map<std::string, std::string> m_settings;
131  Ptr<IEngine::IHandler> m_handler;
132  std::string m_pluginInstanceId;
133 };
134 
135 } // namespace nx::sdk::analytics
Definition: i_string_map.h:9
Definition: i_active_setting_changed_action.h:14
void pushPluginDiagnosticEvent(IPluginDiagnosticEvent::Level level, std::string caption, std::string description) const
Definition: engine.cpp:70
std::map< std::string, std::string > currentSettings() const
Definition: engine.cpp:54
Definition: ptr.h:18
std::string settingValue(const std::string &settingName) const
Definition: engine.cpp:43
Engine(bool enableOutput, const std::string &pluginInstanceId="")
Definition: engine.cpp:34
Definition: consuming_device_agent.cpp:22
Definition: uuid.h:22
Definition: i_device_info.h:13
Definition: result.h:48
Definition: log_utils.h:25
virtual Result< IAction::Result > executeAction(const std::string &actionId, Uuid objectTrackId, Uuid deviceId, int64_t timestampUs, Ptr< IObjectTrackInfo > trackInfo, const std::map< std::string, std::string > &params)
Definition: engine.cpp:59
virtual Result< const ISettingsResponse * > settingsReceived()
Definition: engine.h:49
Definition: engine.h:30
Definition: ref_countable.h:83