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_active_setting_changed_action.h>
13 #include <nx/sdk/i_active_setting_changed_response.h>
14 #include <nx/sdk/i_settings_response.h>
15 
16 #include "i_device_agent.h"
17 #include "i_engine_info.h"
18 #include "i_action.h"
19 
20 namespace nx {
21 namespace sdk {
22 namespace analytics {
23 
24 class IPlugin; //< Forward declaration for the parent object.
25 
26 class IEngine0: public Interface<IEngine0>
27 {
28 public:
29  static auto interfaceId() { return makeId("nx::sdk::analytics::IEngine"); }
30 
31  class IHandler: public Interface<IHandler>
32  {
33  public:
34  static auto interfaceId() { return makeId("nx::sdk::analytics::IEngine::IHandler"); }
35 
36  virtual ~IHandler() = default;
37  virtual void handlePluginDiagnosticEvent(IPluginDiagnosticEvent* event) = 0;
38  };
39 
44  virtual void setEngineInfo(const IEngineInfo* engineInfo) = 0;
45 
47  protected: virtual void doSetSettings(
48  Result<const ISettingsResponse*>* outResult, const IStringMap* settings) = 0;
65  {
67  doSetSettings(&result, settings);
68  return result;
69  }
70 
72  protected: virtual void getPluginSideSettings(
73  Result<const ISettingsResponse*>* outResult) const = 0;
86  {
88  getPluginSideSettings(&result);
89  return result;
90  }
91 
93  protected: virtual void getManifest(Result<const IString*>* outResult) const = 0;
107  {
108  Result<const IString*> result;
109  getManifest(&result);
110  return result;
111  }
112 
117  virtual bool isCompatible(const IDeviceInfo* deviceInfo) const = 0;
118 
120  protected: virtual void doObtainDeviceAgent(
121  Result<IDeviceAgent*>* outResult, const IDeviceInfo* deviceInfo) = 0;
133  {
134  Result<IDeviceAgent*> result;
135  doObtainDeviceAgent(&result, deviceInfo);
136  return result;
137  }
138 
140  protected: virtual void doExecuteAction(
141  Result<IAction::Result>* outResult, const IAction* action) = 0;
150  {
152  doExecuteAction(&result, action);
153  return result;
154  }
155 
160  virtual void setHandler(IHandler* handler) = 0;
161 };
162 
176 class IEngine: public Interface<IEngine, IEngine0>
177 {
178 public:
179  static auto interfaceId() { return makeId("nx::sdk::analytics::IEngine1"); }
180 
182  protected: virtual void doGetSettingsOnActiveSettingChange(
184  const IActiveSettingChangedAction* activeSettingChangeAction) = 0;
197  const IActiveSettingChangedAction* activeSettingChangeAction)
198  {
200  doGetSettingsOnActiveSettingChange(&result, activeSettingChangeAction);
201  return result;
202  }
203 };
204 using IEngine1 = IEngine;
205 
206 } // namespace analytics
207 } // namespace sdk
208 } // namespace nx
Definition: i_plugin_diagnostic_event.h:14
Result< IAction::Result > executeAction(const IAction *action)
Definition: i_engine.h:149
virtual void setEngineInfo(const IEngineInfo *engineInfo)=0
Definition: i_string_map.h:10
virtual void doExecuteAction(Result< IAction::Result > *outResult, const IAction *action)=0
Definition: i_active_setting_changed_action.h:15
virtual void doSetSettings(Result< const ISettingsResponse *> *outResult, const IStringMap *settings)=0
virtual void doGetSettingsOnActiveSettingChange(Result< const IActiveSettingChangedResponse *> *outResult, const IActiveSettingChangedAction *activeSettingChangeAction)=0
Definition: interface.h:49
Definition: i_action.h:20
Result< const ISettingsResponse * > setSettings(const IStringMap *settings)
Definition: i_engine.h:64
Result< const IString * > manifest() const
Definition: i_engine.h:106
virtual void getPluginSideSettings(Result< const ISettingsResponse *> *outResult) const =0
virtual void setHandler(IHandler *handler)=0
Definition: i_engine.h:176
Definition: i_device_info.h:14
Definition: result.h:47
Definition: apple_utils.h:6
Definition: i_engine_info.h:12
Result< const IActiveSettingChangedResponse * > getSettingsOnActiveSettingChange(const IActiveSettingChangedAction *activeSettingChangeAction)
Definition: i_engine.h:196
virtual void doObtainDeviceAgent(Result< IDeviceAgent *> *outResult, const IDeviceInfo *deviceInfo)=0
virtual void getManifest(Result< const IString *> *outResult) const =0
Result< IDeviceAgent * > obtainDeviceAgent(const IDeviceInfo *deviceInfo)
Definition: i_engine.h:132
virtual bool isCompatible(const IDeviceInfo *deviceInfo) const =0
Definition: i_engine.h:26
static constexpr const InterfaceId * makeId(const char(&charArray)[len])
Definition: i_ref_countable.h:77
Result< const ISettingsResponse * > pluginSideSettings() const
Definition: i_engine.h:85