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/i_active_setting_changed_action.h>
6 #include <nx/sdk/i_active_setting_changed_response.h>
7 #include <nx/sdk/i_device_info.h>
8 #include <nx/sdk/i_plugin_diagnostic_event.h>
9 #include <nx/sdk/i_settings_response.h>
10 #include <nx/sdk/i_string.h>
11 #include <nx/sdk/interface.h>
12 #include <nx/sdk/result.h>
13 
14 #include "i_action.h"
15 #include "i_device_agent.h"
16 #include "i_engine_info.h"
17 
18 namespace nx::sdk::analytics {
19 
20 class IPlugin; //< Forward declaration for the parent object.
21 
22 class IEngine0: public Interface<IEngine0>
23 {
24 public:
25  static auto interfaceId() { return makeId("nx::sdk::analytics::IEngine"); }
26 
27  class IHandler: public Interface<IHandler>
28  {
29  public:
30  static auto interfaceId() { return makeId("nx::sdk::analytics::IEngine::IHandler"); }
31 
32  virtual ~IHandler() = default;
33  virtual void handlePluginDiagnosticEvent(IPluginDiagnosticEvent* event) = 0;
34  };
35 
40  virtual void setEngineInfo(const IEngineInfo* engineInfo) = 0;
41 
43  protected: virtual void doSetSettings(
44  Result<const ISettingsResponse*>* outResult, const IStringMap* settings) = 0;
61  {
63  doSetSettings(&result, settings);
64  return result;
65  }
66 
68  protected: virtual void getPluginSideSettings(
69  Result<const ISettingsResponse*>* outResult) const = 0;
82  {
84  getPluginSideSettings(&result);
85  return result;
86  }
87 
89  protected: virtual void getManifest(Result<const IString*>* outResult) const = 0;
103  {
104  Result<const IString*> result;
105  getManifest(&result);
106  return result;
107  }
108 
113  virtual bool isCompatible(const IDeviceInfo* deviceInfo) const = 0;
114 
116  protected: virtual void doObtainDeviceAgent(
117  Result<IDeviceAgent*>* outResult, const IDeviceInfo* deviceInfo) = 0;
129  {
130  Result<IDeviceAgent*> result;
131  doObtainDeviceAgent(&result, deviceInfo);
132  return result;
133  }
134 
136  protected: virtual void doExecuteAction(
137  Result<IAction::Result>* outResult, const IAction* action) = 0;
146  {
148  doExecuteAction(&result, action);
149  return result;
150  }
151 
156  virtual void setHandler(IHandler* handler) = 0;
157 };
158 
172 class IEngine: public Interface<IEngine, IEngine0>
173 {
174 public:
175  static auto interfaceId() { return makeId("nx::sdk::analytics::IEngine1"); }
176 
178  protected: virtual void doGetSettingsOnActiveSettingChange(
180  const IActiveSettingChangedAction* activeSettingChangedAction) = 0;
193  const IActiveSettingChangedAction* activeSettingChangedAction)
194  {
196  doGetSettingsOnActiveSettingChange(&result, activeSettingChangedAction);
197  return result;
198  }
199 };
200 using IEngine1 = IEngine;
201 
202 } // namespace nx::sdk::analytics
Definition: i_plugin_diagnostic_event.h:13
Result< IAction::Result > executeAction(const IAction *action)
Definition: i_engine.h:145
virtual void setEngineInfo(const IEngineInfo *engineInfo)=0
Definition: i_string_map.h:9
virtual void doExecuteAction(Result< IAction::Result > *outResult, const IAction *action)=0
Definition: i_active_setting_changed_action.h:14
virtual void doSetSettings(Result< const ISettingsResponse *> *outResult, const IStringMap *settings)=0
Definition: interface.h:48
Definition: i_action.h:17
Result< const ISettingsResponse * > setSettings(const IStringMap *settings)
Definition: i_engine.h:60
Result< const IString * > manifest() const
Definition: i_engine.h:102
virtual void getPluginSideSettings(Result< const ISettingsResponse *> *outResult) const =0
virtual void setHandler(IHandler *handler)=0
Definition: i_engine.h:172
Definition: consuming_device_agent.cpp:22
Definition: i_device_info.h:13
Definition: result.h:48
Definition: i_engine_info.h:10
Result< const IActiveSettingChangedResponse * > getSettingsOnActiveSettingChange(const IActiveSettingChangedAction *activeSettingChangedAction)
Definition: i_engine.h:192
virtual void doObtainDeviceAgent(Result< IDeviceAgent *> *outResult, const IDeviceInfo *deviceInfo)=0
virtual void doGetSettingsOnActiveSettingChange(Result< const IActiveSettingChangedResponse *> *outResult, const IActiveSettingChangedAction *activeSettingChangedAction)=0
virtual void getManifest(Result< const IString *> *outResult) const =0
Result< IDeviceAgent * > obtainDeviceAgent(const IDeviceInfo *deviceInfo)
Definition: i_engine.h:128
virtual bool isCompatible(const IDeviceInfo *deviceInfo) const =0
Definition: i_engine.h:22
static constexpr const InterfaceId * makeId(const char(&charArray)[len])
Definition: i_ref_countable.h:76
Result< const ISettingsResponse * > pluginSideSettings() const
Definition: i_engine.h:81