nx_cloud_storage_sdk  1.0
Cloud Storage 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 <camera/camera_plugin.h>
6 #include <nx/sdk/i_device_info.h>
7 #include <nx/sdk/i_list.h>
8 #include <nx/sdk/i_plugin.h>
9 #include <nx/sdk/interface.h>
10 #include <nx/sdk/ptr.h>
11 #include <nx/sdk/result.h>
12 
13 #include "i_device_agent.h"
14 #include "i_time_periods.h"
15 
16 namespace nx::sdk::cloud_storage {
17 
18 enum class MetadataType
19 {
20  motion,
21  analytics,
22  bookmark,
23 };
24 
26 {
27  int64_t totalSpace = -1;
28  int64_t freeSpace = -1;
29 };
30 
40 class IEngine: public Interface<IEngine>
41 {
42 public:
43  static auto interfaceId() { return makeId("nx::sdk::archive::IEngine"); }
44 
45  protected: virtual void doObtainDeviceAgent(
46  Result<IDeviceAgent*>* outResult, const IDeviceInfo* deviceInfo) = 0;
47 
51  public: virtual Result<IDeviceAgent*> obtainDeviceAgent(const IDeviceInfo* deviceInfo)
52  {
53  Result<IDeviceAgent*> result;
54  doObtainDeviceAgent(&result, deviceInfo);
55  return result;
56  }
57 
58  protected: virtual void doQueryBookmarks(const char* filter, Result<IString*>* outResult) = 0;
59 
65  public: Result<IString*> queryBookmarks(const char* filter)
66  {
67  Result<IString*> result;
68  doQueryBookmarks(filter, &result);
69  return result;
70  }
71 
72  public: virtual ErrorCode deleteBookmark(const char* bookmarkId) = 0;
73 
74  protected: virtual void doQueryMotionTimePeriods(
75  const char* filter, Result<IString*>* outResult) = 0;
76 
82  public: Result<IString*> queryMotionTimePeriods(const char* filter)
83  {
84  Result<IString*> result;
85  doQueryMotionTimePeriods(filter, &result);
86  return result;
87  }
88 
89  protected: virtual void doQueryAnalytics(const char* filter, Result<IString*>* outResult) = 0;
90 
96  public: Result<IString*> queryAnalytics(const char* filter)
97  {
98  Result<IString*> result;
99  doQueryAnalytics(filter, &result);
100  return result;
101  }
102 
103  protected: virtual void doQueryAnalyticsTimePeriods(
104  const char* filter, Result<IString*>* outResult) = 0;
105 
111  public: Result<IString*> queryAnalyticsTimePeriods(const char* filter)
112  {
113  Result<IString*> result;
114  doQueryAnalyticsTimePeriods(filter, &result);
115  return result;
116  }
117 
123  public: virtual ErrorCode saveMetadata(
124  const char* deviceId, int64_t timestampUs, MetadataType type, const char* data) = 0;
125 
130  public: virtual ErrorCode saveBestShotImage(const char* data) = 0;
131 
136  public: Result<IString*> fetchBestShotImage(const char* objectTrackId) const
137  {
138  Result<IString*> result;
139  doFetchBestShotImage(objectTrackId, &result);
140  return result;
141  }
142 
143  protected: virtual void doFetchBestShotImage(
144  const char* objectTrackId, Result<IString*>* outResult) const = 0;
145 
150  public: virtual void startNotifications() = 0;
151 
156  public: virtual void stopNotifications() = 0;
157 
162  public: virtual bool isOnline() const = 0;
163 
167  public: virtual ErrorCode storageSpace(StorageSpace* storageSpace) const = 0;
168 };
169 
170 } // namespace nx::sdk::cloud_storage
Definition: i_engine.h:25
Result< IString * > queryAnalyticsTimePeriods(const char *filter)
Definition: i_engine.h:111
Definition: interface.h:48
Result< IString * > queryBookmarks(const char *filter)
Definition: i_engine.h:65
Result< IString * > queryMotionTimePeriods(const char *filter)
Definition: i_engine.h:82
virtual void startNotifications()=0
virtual Result< IDeviceAgent * > obtainDeviceAgent(const IDeviceInfo *deviceInfo)
Definition: i_engine.h:51
Definition: i_engine.h:40
virtual ErrorCode saveBestShotImage(const char *data)=0
virtual bool isOnline() const =0
virtual ErrorCode saveMetadata(const char *deviceId, int64_t timestampUs, MetadataType type, const char *data)=0
virtual void stopNotifications()=0
virtual ErrorCode storageSpace(StorageSpace *storageSpace) const =0
Definition: i_device_info.h:13
Result< IString * > fetchBestShotImage(const char *objectTrackId) const
Definition: i_engine.h:136
Definition: result.h:48
Definition: algorithm.cpp:8
static constexpr const InterfaceId * makeId(const char(&charArray)[len])
Definition: i_ref_countable.h:76
Result< IString * > queryAnalytics(const char *filter)
Definition: i_engine.h:96