nx_server_plugin_sdk  1.0
Server Plugin SDK
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 <mutex>
6 #include <string>
7 #include <thread>
8 #include <vector>
9 
10 #include <nx/sdk/cloud_storage/i_async_operation_handler.h>
11 #include <nx/sdk/cloud_storage/i_engine.h>
12 #include <nx/sdk/helpers/ref_countable.h>
13 #include <nx/sdk/i_utility_provider.h>
14 
15 #include "data_manager.h"
16 
18 
19 class Integration;
20 
21 class Engine: public nx::sdk::RefCountable<nx::sdk::cloud_storage::IEngine>
22 {
23 public:
24  Engine(
25  const nx::sdk::cloud_storage::IAsyncOperationHandler* asyncOperationHandler,
26  const std::shared_ptr<DataManager>& dataManager,
27  const std::string& integrationId);
28 
29  virtual ~Engine() override;
30  virtual void startAsyncTasks(const char* lastSequenceId) override;
31  virtual void stopAsyncTasks() override;
32  virtual nx::sdk::ErrorCode saveMetadata(
33  const char* deviceId,
34  nx::sdk::cloud_storage::MetadataType type,
35  const char* data) override;
36 
37  virtual bool isOnline() const override;
38  virtual nx::sdk::ErrorCode storageSpace(
40 
41  virtual void flushMetadata(nx::sdk::cloud_storage::MetadataType type) override;
42 
43  bool isStopped() const;
44 
45 protected:
46  virtual void doObtainDeviceAgent(
48  const nx::sdk::IDeviceInfo* deviceInfo) override;
49 
50  virtual void doQueryMotionTimePeriods(
51  const char* filter,
52  nx::sdk::Result<nx::sdk::IString*>* outResult) override;
53 
54  virtual void doQueryAnalytics(
55  const char* filter,
56  nx::sdk::Result<nx::sdk::IString*>* outResult) override;
57 
58  virtual void doQueryAnalyticsTimePeriods(
59  const char* filter,
60  nx::sdk::Result<nx::sdk::IString*>* outResult) override;
61 
62  virtual void doQueryBookmarks(
63  const char* filter,
64  nx::sdk::Result<nx::sdk::IString*>* outResult) override;
65 
66  virtual nx::sdk::ErrorCode deleteBookmark(const char* bookmarkId) override;
67  virtual void doFetchTrackImage(
68  const char* objectTrackId,
69  nx::sdk::cloud_storage::TrackImageType type,
70  nx::sdk::Result<nx::sdk::IString*>* outResult) const override;
71 
72 private:
74  std::shared_ptr<DataManager> m_dataManager;
75  std::vector<nx::sdk::Ptr<nx::sdk::cloud_storage::IDeviceAgent>> m_deviceAgents;
76  std::string m_integrationId;
77  std::thread m_worker;
78  mutable std::mutex m_mutex;
79  bool m_needToStop = false;
80  std::optional<int64_t> m_lastReportTimePoint;
81  std::optional<int64_t> m_lastScanTimePoint;
82 
83  nx::sdk::cloud_storage::IDeviceAgent* findDeviceAgentById(
84  const std::string& id,
85  const std::vector<nx::sdk::Ptr<nx::sdk::cloud_storage::IDeviceAgent>>& deviceAgents);
86 };
87 
88 } // nx::vms_server_plugins::cloud_storage::stub
virtual bool isOnline() const override
Definition: engine.cpp:392
virtual void flushMetadata(nx::sdk::cloud_storage::MetadataType type) override
Definition: engine.cpp:348
Definition: i_engine.h:24
Definition: data_manager.cpp:36
virtual nx::sdk::ErrorCode saveMetadata(const char *deviceId, nx::sdk::cloud_storage::MetadataType type, const char *data) override
Definition: engine.cpp:353
Definition: i_async_operation_handler.h:63
virtual void startAsyncTasks(const char *lastSequenceId) override
Definition: engine.cpp:79
Definition: i_device_info.h:13
virtual nx::sdk::ErrorCode storageSpace(nx::sdk::cloud_storage::StorageSpace *storageSpace) const override
Definition: engine.cpp:403
Definition: i_device_agent.h:21
Definition: result.h:52
virtual void stopAsyncTasks() override
Definition: engine.cpp:65
Definition: ref_countable.h:83