nx_cloud_storage_sdk  1.0
Cloud Storage SDK
device_archive.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 <map>
6 #include <string>
7 
8 #include <nx/sdk/cloud_storage/helpers/time_periods.h>
9 #include <nx/sdk/cloud_storage/i_archive_update_handler.h>
10 #include <nx/sdk/helpers/list.h>
11 #include <nx/sdk/helpers/ref_countable.h>
12 
13 namespace nx::sdk::cloud_storage {
14 
15 enum class ChunkOperation
16 {
17  add,
18  remove,
19 };
20 
21 using IndexData = std::map<
22  ChunkOperation,
23  nx::sdk::cloud_storage::TimePeriodList>;
24 
25 using DeviceData = std::map<
26  int /*streamIndex*/,
27  IndexData>;
28 
29 using CloudChunkData = std::map<
30  std::string /*deviceId*/,
31  DeviceData>;
32 
33 class IndexArchive: public nx::sdk::RefCountable<nx::sdk::cloud_storage::IIndexArchive>
34 {
35 public:
36  IndexArchive(int streamIndex, const IndexData& indexData);
37 
38  virtual const nx::sdk::cloud_storage::ITimePeriods* addedTimePeriods() const override;
39  virtual const nx::sdk::cloud_storage::ITimePeriods* removedTimePeriods() const override;
40  virtual int streamIndex() const override;
41 
42 private:
43  const int m_streamIndex;
45  nx::sdk::cloud_storage::TimePeriods m_removedPeriods;
46 };
47 
48 class DeviceArchive: public nx::sdk::RefCountable<nx::sdk::cloud_storage::IDeviceArchive>
49 {
50 public:
53  const DeviceData& deviceData);
54 
55  virtual nx::sdk::IList<nx::sdk::cloud_storage::IIndexArchive>* indexArchive() override;
56  virtual nx::sdk::cloud_storage::IDeviceAgent* deviceAgent() const override;
57 
58 private:
60  const DeviceData& m_data;
62 };
63 
64 } // namespace nx::sdk::cloud_storage
Definition: device_archive.h:48
Definition: time_periods.h:15
Definition: device_archive.h:33
Definition: i_device_agent.h:21
Definition: i_time_periods.h:13
Definition: algorithm.cpp:8
Definition: ref_countable.h:83