nx_metadata_sdk  1.0
Metadata SDK
i_device_manager.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 #include <nx/sdk/i_device_info.h>
8 
9 #include <nx/sdk/i_plugin.h>
10 #include <nx/sdk/ptr.h>
11 #include <nx/sdk/result.h>
12 #include <nx/sdk/i_list.h>
13 #include <camera/camera_plugin.h>
14 
15 #include "i_device.h"
16 
17 namespace nx {
18 namespace sdk {
19 namespace archive {
20 
21 enum class ArchiveAction
22 {
23  add,
24  remove,
25 };
26 
28 class IDeviceManager: public Interface<IDeviceManager>
29 {
30 public:
31  static auto interfaceId() { return makeId("nx::sdk::archive::IDeviceManager"); }
32 
38  class IDeviceManagerHandler: public Interface<IDeviceManagerHandler>
39  {
40  public:
41  static constexpr auto interfaceId()
42  {
43  return makeId("nx::sdk::archive::IDeviceManager::IDeviceManagerHandler");
44  }
45 
46  virtual void onDeviceArchiveAltered(
47  const char* pluginId,
48  IDevice* device,
49  int streamIndex,
50  nxcip::TimePeriods* timePeriods,
51  ArchiveAction archiveAction) const = 0;
52 
53  };
54 
56  protected: virtual void doAddDevice(
57  Result<IDevice*>* outResult, const IDeviceInfo* deviceInfo) = 0;
58  public: virtual Result<IDevice*> addDevice(const IDeviceInfo* deviceInfo)
59  {
60  Result<IDevice*> result;
61  doAddDevice(&result, deviceInfo);
62  return result;
63  }
64 
69  virtual void startNotifications() = 0;
70 };
71 
72 } // namespace archive
73 } // namespace sdk
74 } // namespace nx
virtual void doAddDevice(Result< IDevice *> *outResult, const IDeviceInfo *deviceInfo)=0
Definition: interface.h:49
Definition: i_device_manager.h:28
Definition: i_device_info.h:14
Definition: result.h:47
Definition: apple_utils.h:6
static constexpr const InterfaceId * makeId(const char(&charArray)[len])
Definition: i_ref_countable.h:77
virtual void startNotifications()=0
Definition: i_device.h:23