stub_analytics_plugin  1.6
Network Optix Video Analytics SDK
plugin.h
1 #pragma once
2 
3 #include <string>
4 #include <functional>
5 
6 #include <nx/sdk/i_utility_provider.h>
7 #include <nx/sdk/error.h>
8 #include <nx/sdk/analytics/i_plugin.h>
9 #include <nx/sdk/helpers/ref_countable.h>
10 #include <nx/sdk/helpers/ptr.h>
11 
12 #include "engine.h"
13 
14 namespace nx {
15 namespace sdk {
16 namespace analytics {
17 
22 class Plugin: public RefCountable<IPlugin>
23 {
24 public:
25  using CreateEngine = std::function<IEngine*(IPlugin* plugin)>;
26 
32  Plugin(
33  std::string libName,
34  std::string pluginManifest,
35  CreateEngine createEngine);
36 
37  virtual ~Plugin() override;
38 
39  const Ptr<IUtilityProvider>& utilityProvider() const { return m_utilityProvider; }
40 
41 //-------------------------------------------------------------------------------------------------
42 // Not intended to be used by a descendant.
43 
44 public:
45  virtual const char* name() const override;
46  virtual void setUtilityProvider(IUtilityProvider* utilityProvider) override;
47  virtual const IString* manifest(Error* outError) const override;
48  virtual IEngine* createEngine(Error* outError) override;
49 
50 private:
51  const std::string m_name;
52  const std::string m_jsonManifest;
53 
54  CreateEngine m_createEngine;
55  Ptr<IUtilityProvider> m_utilityProvider;
56 };
57 
58 } // namespace analytics
59 } // namespace sdk
60 } // namespace nx
virtual const char * name() const override
Definition: plugin.cpp:30
Definition: ptr.h:16
virtual void setUtilityProvider(IUtilityProvider *utilityProvider) override
Definition: plugin.cpp:35
Definition: i_engine.h:31
Definition: i_string.h:8
Definition: i_utility_provider.h:16
Definition: debug.cpp:12
Plugin(std::string libName, std::string pluginManifest, CreateEngine createEngine)
Definition: plugin.cpp:13
Definition: ref_countable.h:79
Definition: plugin.h:22