nx_cloud_storage_sdk  1.0
Cloud Storage SDK
engine.h
1 #pragma once
2 
3 #include <mutex>
4 #include <string>
5 #include <thread>
6 #include <vector>
7 
8 #include <nx/sdk/cloud_storage/i_archive_update_handler.h>
9 #include <nx/sdk/cloud_storage/i_engine.h>
10 #include <nx/sdk/helpers/ref_countable.h>
11 #include <nx/sdk/i_utility_provider.h>
12 
13 #include "data_manager.h"
14 
16 
17 class Plugin;
18 
19 class Engine: public nx::sdk::RefCountable<nx::sdk::cloud_storage::IEngine>
20 {
21 public:
22  Engine(
23  const nx::sdk::cloud_storage::IArchiveUpdateHandler* deviceManagerHandler,
24  const std::shared_ptr<DataManager>& dataManager,
25  const std::string& pluginId);
26 
27  virtual ~Engine() override;
28  virtual void startNotifications() override;
29  virtual void stopNotifications() override;
30  virtual nx::sdk::ErrorCode saveMetadata(
31  const char* deviceId,
32  int64_t timeStampUs,
33  nx::sdk::cloud_storage::MetadataType type,
34  const char* data) override;
35 
36  virtual bool isOnline() const override;
37  virtual nx::sdk::ErrorCode storageSpace(
39 
40  virtual nx::sdk::ErrorCode saveBestShotImage(const char* data) override;
41 
42 protected:
43  virtual void doObtainDeviceAgent(
45  const nx::sdk::IDeviceInfo* deviceInfo) override;
46 
47  virtual void doQueryMotionTimePeriods(
48  const char* filter,
49  nx::sdk::Result<nx::sdk::IString*>* outResult) override;
50 
51  virtual void doQueryAnalytics(
52  const char* filter,
53  nx::sdk::Result<nx::sdk::IString*>* outResult) override;
54 
55  virtual void doQueryAnalyticsTimePeriods(
56  const char* filter,
57  nx::sdk::Result<nx::sdk::IString*>* outResult) override;
58 
59  virtual void doQueryBookmarks(
60  const char* filter,
61  nx::sdk::Result<nx::sdk::IString*>* outResult) override;
62 
63  virtual nx::sdk::ErrorCode deleteBookmark(const char* bookmarkId) override;
64  virtual void doFetchBestShotImage(
65  const char* objectTrackId, nx::sdk::Result<nx::sdk::IString*>* outResult) const override;
66 
67 private:
69  std::shared_ptr<DataManager> m_dataManager;
70  std::vector<nx::sdk::Ptr<nx::sdk::cloud_storage::IDeviceAgent>> m_deviceAgents;
71  std::string m_pluginId;
72  std::thread m_worker;
73  mutable std::mutex m_mutex;
74  bool m_needToStop = false;
75  std::optional<std::chrono::system_clock::time_point> m_lastReportTimePoint;
76  std::optional<std::chrono::system_clock::time_point> m_lastScanTimePoint;
77 
78  nx::sdk::cloud_storage::IDeviceAgent* findDeviceAgentById(
79  const std::string& id,
80  const std::vector<nx::sdk::Ptr<nx::sdk::cloud_storage::IDeviceAgent>>& deviceAgents);
81 };
82 
83 } // nx::vms_server_plugins::cloud_storage::stub
virtual bool isOnline() const override
Definition: engine.cpp:358
Definition: i_engine.h:25
Definition: i_archive_update_handler.h:39
Definition: data_manager.cpp:33
virtual nx::sdk::ErrorCode saveMetadata(const char *deviceId, int64_t timeStampUs, nx::sdk::cloud_storage::MetadataType type, const char *data) override
Definition: engine.cpp:317
virtual void stopNotifications() override
Definition: engine.cpp:42
Definition: i_device_info.h:13
virtual nx::sdk::ErrorCode storageSpace(nx::sdk::cloud_storage::StorageSpace *storageSpace) const override
Definition: engine.cpp:363
virtual nx::sdk::ErrorCode saveBestShotImage(const char *data) override
Definition: engine.cpp:370
Definition: i_device_agent.h:21
Definition: result.h:48
Definition: ref_countable.h:83
virtual void startNotifications() override
Definition: engine.cpp:56