nx_metadata_sdk  1.0
Metadata SDK
i_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 <nx/sdk/interface.h>
6 #include <nx/sdk/result.h>
7 
8 #include <nx/sdk/i_device_info.h>
9 #include <nx/sdk/i_string.h>
10 #include <nx/sdk/i_plugin_diagnostic_event.h>
11 
12 #include <nx/sdk/i_settings_response.h>
13 
14 #include "i_device_agent.h"
15 #include "i_engine_info.h"
16 #include "i_action.h"
17 
18 namespace nx {
19 namespace sdk {
20 namespace analytics {
21 
22 class IPlugin; //< Forward declaration for the parent object.
23 
37 class IEngine: public Interface<IEngine>
38 {
39 public:
40  static auto interfaceId() { return makeId("nx::sdk::analytics::IEngine"); }
41 
42  class IHandler: public Interface<IHandler>
43  {
44  public:
45  static auto interfaceId() { return makeId("nx::sdk::analytics::IEngine::IHandler"); }
46 
47  virtual ~IHandler() = default;
48  virtual void handlePluginDiagnosticEvent(IPluginDiagnosticEvent* event) = 0;
49  };
50 
55  virtual void setEngineInfo(const IEngineInfo* engineInfo) = 0;
56 
58  protected: virtual void doSetSettings(
59  Result<const ISettingsResponse*>* outResult, const IStringMap* settings) = 0;
76  {
78  doSetSettings(&result, settings);
79  return result;
80  }
81 
83  protected: virtual void getPluginSideSettings(
84  Result<const ISettingsResponse*>* outResult) const = 0;
97  {
99  getPluginSideSettings(&result);
100  return result;
101  }
102 
104  protected: virtual void getManifest(Result<const IString*>* outResult) const = 0;
118  {
119  Result<const IString*> result;
120  getManifest(&result);
121  return result;
122  }
123 
128  virtual bool isCompatible(const IDeviceInfo* deviceInfo) const = 0;
129 
131  protected: virtual void doObtainDeviceAgent(
132  Result<IDeviceAgent*>* outResult, const IDeviceInfo* deviceInfo) = 0;
143  {
144  Result<IDeviceAgent*> result;
145  doObtainDeviceAgent(&result, deviceInfo);
146  return result;
147  }
148 
150  protected: virtual void doExecuteAction(
151  Result<IAction::Result>* outResult, const IAction* action) = 0;
160  {
162  doExecuteAction(&result, action);
163  return result;
164  }
165 
170  virtual void setHandler(IHandler* handler) = 0;
171 };
172 
173 } // namespace analytics
174 } // namespace sdk
175 } // namespace nx
Definition: i_plugin_diagnostic_event.h:14
Definition: i_string_map.h:10
Definition: interface.h:28
Definition: i_action.h:20
virtual void getManifest(Result< const IString *> *outResult) const =0
virtual void setEngineInfo(const IEngineInfo *engineInfo)=0
virtual void doObtainDeviceAgent(Result< IDeviceAgent *> *outResult, const IDeviceInfo *deviceInfo)=0
virtual void setHandler(IHandler *handler)=0
Definition: i_engine.h:37
Result< IAction::Result > executeAction(const IAction *action)
Definition: i_engine.h:159
Definition: i_device_info.h:14
virtual bool isCompatible(const IDeviceInfo *deviceInfo) const =0
Result< const ISettingsResponse * > pluginSideSettings() const
Definition: i_engine.h:96
Definition: result.h:47
Definition: apple_utils.h:6
Definition: i_engine_info.h:12
Result< const ISettingsResponse * > setSettings(const IStringMap *settings)
Definition: i_engine.h:75
virtual void getPluginSideSettings(Result< const ISettingsResponse *> *outResult) const =0
virtual void doSetSettings(Result< const ISettingsResponse *> *outResult, const IStringMap *settings)=0
Result< IDeviceAgent * > obtainDeviceAgent(const IDeviceInfo *deviceInfo)
Definition: i_engine.h:142
Definition: i_engine.h:42
static constexpr const InterfaceId * makeId(const char(&charArray)[len])
Definition: i_ref_countable.h:77
Result< const IString * > manifest() const
Definition: i_engine.h:117
virtual void doExecuteAction(Result< IAction::Result > *outResult, const IAction *action)=0