9 #include <camera/camera_plugin.h> 11 #include <nx/sdk/cloud_storage/helpers/data.h> 12 #include <nx/sdk/cloud_storage/i_device_agent.h> 13 #include <nx/sdk/cloud_storage/i_media_data_packet.h> 14 #include <nx/sdk/i_device_info.h> 23 File(
const std::string& path);
26 template<
typename Container>
27 Container readAll()
const;
29 template<
typename Container>
30 void writeAll(
const Container& data,
bool replaceContents);
33 std::unique_ptr<FileImpl> m_fileImpl;
42 const std::shared_ptr<std::mutex>& mutex,
43 const std::string& path,
44 std::chrono::milliseconds startTime,
46 const char* opaqueMetadata);
51 void close(std::chrono::milliseconds duration);
55 std::shared_ptr<std::mutex> m_mutex;
56 std::unique_ptr<File> m_file;
57 const std::string m_path;
58 std::chrono::milliseconds m_startTime{};
59 std::vector<uint8_t> m_buffer;
68 std::vector<nx::sdk::cloud_storage::CodecInfoData> codecInfo()
const;
69 std::string opaqueMetadata()
const;
70 std::optional<nx::sdk::cloud_storage::MediaPacketData> getNextPacket()
const;
71 std::string name()
const;
75 int64_t* selectedPosition);
78 std::vector<uint8_t> m_fileData;
79 std::unique_ptr<MediaFileHeader> m_header;
81 mutable int m_current = 0;
87 using TimePeriodList = nx::sdk::cloud_storage::TimePeriodList;
89 std::map<int, TimePeriodList> timePeriodsPerStream;
95 std::vector<DeviceArchiveIndex> deviceArchiveIndexList;
107 void deleteBookmark(
const char*
id);
118 std::unique_ptr<WritableMediaFile> writableMediaFile(
119 const std::string& deviceId,
121 std::chrono::milliseconds timestamp,
123 const char* opaqueMetadata)
const;
125 std::unique_ptr<ReadableMediaFile> readableMediaFile(
126 const std::string& deviceId,
129 int64_t durationMs)
const;
131 ArchiveIndex getArchive(std::optional<std::chrono::system_clock::time_point> startTime)
const;
132 void saveBestShotImage(
const char* data);
133 std::string fetchBestShotImage(
const char* objectTrackId);
136 std::string m_workDir;
137 std::shared_ptr<std::mutex> m_mutex{std::make_shared<std::mutex>()};
138 std::vector<nx::sdk::cloud_storage::Motion> m_motion;
139 std::vector<nx::sdk::cloud_storage::ObjectTrack> m_analytics;
141 std::string devicePath(
const std::string& deviceId)
const;
143 template<
typename Data>
144 void addListEntry(
const Data& data,
const std::string& fileName);
146 template<
typename Data>
147 void saveObject(
const Data& data,
const std::string& fileName);
149 template<
typename Data>
150 std::vector<Data> allObjects(
const std::string& fileName)
const;
152 template<
typename Data>
153 std::vector<Data> allObjectsNoLock(
const std::string& fileName)
const;
155 template<
typename Data>
156 std::optional<Data> oneObject(
const std::string& fileName)
const;
158 template<
typename DataList>
159 void flush(
const DataList& data,
const std::string& fileName);
161 template<
typename Data>
162 std::vector<Data> load(
const std::string& fileName)
const;
164 std::vector<nx::kit::Json> loadListNoLock(
const std::string& fileName)
const;
166 std::string mediaFilePath(
167 const std::string& deviceId,
int streamIndex, std::chrono::milliseconds timestamp)
const;
169 std::string mediaFilePath(
170 const std::string& deviceId,
int streamIndex, int64_t startTimeMs, int64_t durationMs)
const;
Definition: data_manager.h:100
Definition: data_manager.h:20
Definition: data_manager.h:93
Definition: data_manager.cpp:33
Definition: data_manager.h:85