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 <string>
6 #include <map>
7 #include <mutex>
8 
9 #include <nx/sdk/i_string_map.h>
10 #include <nx/sdk/analytics/i_engine.h>
11 
12 #include <nx/sdk/result.h>
13 #include <nx/sdk/uuid.h>
14 
15 #include <nx/sdk/helpers/ref_countable.h>
16 #include <nx/sdk/ptr.h>
17 #include <nx/sdk/helpers/log_utils.h>
18 
19 namespace nx {
20 namespace sdk {
21 namespace analytics {
22 
34 class Engine: public RefCountable<IEngine>
35 {
36 protected:
37  LogUtils logUtils;
38 
39 protected:
43  Engine(bool enableOutput);
44 
45  virtual std::string manifestString() const = 0;
46 
52  virtual Result<const ISettingsResponse*> settingsReceived() { return nullptr; }
53 
63  std::string settingValue(const std::string& settingName) const;
64 
76  const std::string& actionId,
77  Uuid objectTrackId,
78  Uuid deviceId,
79  int64_t timestampUs,
80  Ptr<IObjectTrackInfo> trackInfo,
81  const std::map<std::string, std::string>& params);
82 
89  IPluginDiagnosticEvent::Level level,
90  std::string caption,
91  std::string description);
92 
93  IHandler* handler() const { return m_handler.get(); }
94 
95 public:
96  virtual ~Engine() override;
97 
98 //-------------------------------------------------------------------------------------------------
99 // Not intended to be used by a descendant.
100 
101 public:
102  virtual void setEngineInfo(const IEngineInfo* engineInfo) override;
103  virtual void setHandler(IEngine::IHandler* handler) override;
104  virtual bool isCompatible(const IDeviceInfo* deviceInfo) const override;
105 
106 protected:
107  virtual void doSetSettings(
108  Result<const ISettingsResponse*>* outResult, const IStringMap* settings) override;
109 
110  virtual void getPluginSideSettings(Result<const ISettingsResponse*>* outResult) const override;
111 
112  virtual void getManifest(Result<const IString*>* outResult) const override;
113 
114  virtual void doExecuteAction(
115  Result<IAction::Result>* outResult, const IAction* action) override;
116 
117 private:
118  mutable std::mutex m_mutex;
119  std::map<std::string, std::string> m_settings;
120  Ptr<IEngine::IHandler> m_handler;
121 };
122 
123 } // namespace analytics
124 } // namespace sdk
125 } // namespace nx
Definition: i_string_map.h:10
Engine(bool enableOutput)
Definition: engine.cpp:32
Definition: ptr.h:18
std::string settingValue(const std::string &settingName) const
Definition: engine.cpp:39
Definition: uuid.h:22
Definition: i_device_info.h:14
Definition: result.h:47
Definition: apple_utils.h:6
Definition: log_utils.h:26
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:50
void pushPluginDiagnosticEvent(IPluginDiagnosticEvent::Level level, std::string caption, std::string description)
Definition: engine.cpp:61
virtual Result< const ISettingsResponse * > settingsReceived()
Definition: engine.h:52
Definition: engine.h:34
Definition: ref_countable.h:84