nx_metadata_sdk  1.0
Metadata SDK
i_plugin.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/i_plugin.h>
7 #include <nx/sdk/result.h>
8 
9 #include "i_device_manager.h"
10 
11 namespace nx {
12 namespace sdk {
13 namespace archive {
14 
25 class IPlugin: public Interface<IPlugin, nx::sdk::IPlugin>
26 {
27 public:
28  static constexpr auto interfaceId() { return makeId("nx::sdk::archive::IPlugin"); }
29 
31  protected: virtual void doCreateDeviceManager(
32  const char* url,
33  const IDeviceManager::IDeviceManagerHandler* deviceManagerHandler,
34  Result<IDeviceManager*>* outResult) = 0;
35 
40  const char* url,
41  const IDeviceManager::IDeviceManagerHandler* deviceManagerHandler)
42  {
44  doCreateDeviceManager(url, deviceManagerHandler, &result);
45  return result;
46  }
47 
53  virtual const char* id() const = 0;
54 };
55 
56 } // namespace archive
57 } // namespace sdk
58 } // namespace nx
Definition: i_plugin.h:25
Definition: interface.h:49
virtual void doCreateDeviceManager(const char *url, const IDeviceManager::IDeviceManagerHandler *deviceManagerHandler, Result< IDeviceManager *> *outResult)=0
Result< IDeviceManager * > createDeviceManager(const char *url, const IDeviceManager::IDeviceManagerHandler *deviceManagerHandler)
Definition: i_plugin.h:39
virtual const char * id() const =0
Definition: result.h:47
Definition: apple_utils.h:6
static constexpr const InterfaceId * makeId(const char(&charArray)[len])
Definition: i_ref_countable.h:77