nx_metadata_sdk  1.0
Metadata SDK
i_device_agent.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_string_map.h>
9 #include <nx/sdk/i_string.h>
10 #include <nx/sdk/i_plugin_diagnostic_event.h>
11 #include <nx/sdk/i_settings_response.h>
12 
13 #include <nx/sdk/analytics/i_metadata_types.h>
14 #include <nx/sdk/analytics/i_metadata_packet.h>
15 
16 namespace nx {
17 namespace sdk {
18 namespace analytics {
19 
20 class IEngine; //< Forward declaration for the parent object.
21 
33 class IDeviceAgent: public Interface<IDeviceAgent>
34 {
35 public:
36  static auto interfaceId() { return makeId("nx::sdk::analytics::IDeviceAgent"); }
37 
38  class IHandler0: public Interface<IHandler0>
39  {
40  public:
41  static auto interfaceId() { return makeId("nx::sdk::analytics::IDeviceAgent::IHandler"); }
42 
43  virtual ~IHandler0() = default;
44  virtual void handleMetadata(IMetadataPacket* metadataPacket) = 0;
45  virtual void handlePluginDiagnosticEvent(IPluginDiagnosticEvent* event) = 0;
46  };
47 
52  class IHandler: public Interface<IHandler, IHandler0>
53  {
54  public:
55  static auto interfaceId() { return makeId("nx::sdk::analytics::IDeviceAgent::IHandler1"); }
56 
58  virtual void pushManifest(const IString* manifest) = 0;
59  };
60 
62  protected: virtual void doSetSettings(
63  Result<const ISettingsResponse*>* outResult, const IStringMap* settings) = 0;
64 
87  {
89  doSetSettings(&result, settings);
90  return result;
91  }
92 
94  protected: virtual void getPluginSideSettings(
95  Result<const ISettingsResponse*>* outResult) const = 0;
108  {
110  getPluginSideSettings(&result);
111  return result;
112  }
113 
115  protected: virtual void getManifest(Result<const IString*>* outResult) const = 0;
124  {
125  Result<const IString*> result;
126  getManifest(&result);
127  return result;
128  }
129 
136  virtual void setHandler(IHandler* handler) = 0;
137 
139  protected: virtual void doSetNeededMetadataTypes(
140  Result<void>* outResult, const IMetadataTypes* neededMetadataTypes) = 0;
147  public: Result<void> setNeededMetadataTypes(const IMetadataTypes* neededMetadataTypes)
148  {
149  Result<void> result;
150  doSetNeededMetadataTypes(&result, neededMetadataTypes);
151  return result;
152  }
153 };
154 using IDeviceAgent0 = IDeviceAgent;
155 
156 } // namespace analytics
157 } // namespace sdk
158 } // namespace nx
Definition: i_plugin_diagnostic_event.h:14
Definition: i_string_map.h:10
Definition: i_metadata_packet.h:16
Definition: i_device_agent.h:38
Definition: interface.h:49
Definition: i_device_agent.h:52
virtual void setHandler(IHandler *handler)=0
Result< const ISettingsResponse * > pluginSideSettings() const
Definition: i_device_agent.h:107
Definition: i_metadata_types.h:13
Definition: result.h:81
virtual void doSetNeededMetadataTypes(Result< void > *outResult, const IMetadataTypes *neededMetadataTypes)=0
Definition: i_string.h:10
Result< const IString * > manifest() const
Definition: i_device_agent.h:123
virtual void pushManifest(const IString *manifest)=0
Result< void > setNeededMetadataTypes(const IMetadataTypes *neededMetadataTypes)
Definition: i_device_agent.h:147
Definition: result.h:47
virtual void getManifest(Result< const IString *> *outResult) const =0
Definition: apple_utils.h:6
Definition: i_device_agent.h:33
virtual void doSetSettings(Result< const ISettingsResponse *> *outResult, const IStringMap *settings)=0
virtual void getPluginSideSettings(Result< const ISettingsResponse *> *outResult) const =0
Result< const ISettingsResponse * > setSettings(const IStringMap *settings)
Definition: i_device_agent.h:86
static constexpr const InterfaceId * makeId(const char(&charArray)[len])
Definition: i_ref_countable.h:77