1 #ifndef DATAOBJECT_HPP_
2 #define DATAOBJECT_HPP_
7 #include <unordered_map>
8 #include <unordered_set>
9 #include <condition_variable>
16 typedef std::shared_ptr<DataObject>
pointer;
17 void setMetadata(std::string name, std::string value);
18 void setMetadata(std::unordered_map<std::string, std::string> metadata);
19 std::string getMetadata(std::string name)
const;
20 std::unordered_map<std::string, std::string> getMetadata()
const;
21 void deleteMetadata(std::string name);
22 uint64_t getTimestamp()
const;
23 void updateModifiedTimestamp();
25 virtual std::string getNameOfClass()
const = 0;
29 uint64_t getCreationTimestamp()
const;
30 void setCreationTimestamp(uint64_t timestamp);
32 void setLastFrame(std::string streamer);
34 bool isLastFrame(std::string streamer);
35 std::unordered_set<std::string> getLastFrame();
36 void setFrameData(std::string name, std::string value);
37 std::string getFrameData(std::string name);
38 std::unordered_map<std::string, std::string> getFrameData();
39 void accessFinished();
42 virtual void freeAll() = 0;
44 void blockIfBeingWrittenTo();
45 void blockIfBeingAccessed();
57 uint64_t mTimestampModified;
60 uint64_t mTimestampCreated;
62 std::unordered_map<std::string, std::string> mMetadata;
66 std::unordered_map<std::string, std::string> m_frameData;
68 std::unordered_set<std::string> m_lastFrame;