summaryrefslogtreecommitdiff
path: root/recordings.h
diff options
context:
space:
mode:
Diffstat (limited to 'recordings.h')
-rw-r--r--recordings.h36
1 files changed, 33 insertions, 3 deletions
diff --git a/recordings.h b/recordings.h
index a8ea907..bf016a4 100644
--- a/recordings.h
+++ b/recordings.h
@@ -12,6 +12,27 @@ namespace vdrlive {
using namespace boost;
using namespace std;
+ class RecordingsManager;
+ typedef shared_ptr<RecordingsManager> RecordingsManagerPtr;
+
+ class RecordingsManager
+ {
+ friend RecordingsManagerPtr LiveRecordingsManager();
+
+ public:
+ /**
+ * generates a Md5 hash from a cRecording entry. It can be used
+ * to reidentify a recording.
+ */
+ string Md5Hash(const cRecording* recording) const;
+
+ private:
+ RecordingsManager();
+
+ cThreadLock m_recordingsLock;
+ };
+
+
class RecordingsTree
{
public:
@@ -54,7 +75,7 @@ namespace vdrlive {
virtual time_t StartTime() const { return 0; }
virtual bool IsDir() const { return true; }
- virtual const string Id() const { return ""; }
+ virtual const string Id() const { string e; return e; }
private:
int m_level;
@@ -79,7 +100,7 @@ namespace vdrlive {
string m_id;
};
- RecordingsTree();
+ RecordingsTree(RecordingsManagerPtr recManPtr);
virtual ~RecordingsTree();
@@ -91,11 +112,20 @@ namespace vdrlive {
private:
int m_maxLevel;
RecordingsItemPtr m_root;
- cThreadLock m_recordingsLock;
+ RecordingsManagerPtr m_recManPtr;
Map::iterator findDir(RecordingsItemPtr& dir, const string& dirname);
};
+ /**
+ * return singleton instance of RecordingsManager as a shared Pointer.
+ * This ensures that after last use of the RecordingsManager it is
+ * deleted. After deletion of the original RecordingsManager a repeated
+ * call to this function creates a new RecordingsManager which is again
+ * kept alive as long references to it exist.
+ */
+ RecordingsManagerPtr LiveRecordingsManager();
+
} // namespace vdrlive
#endif // VDR_LIVE_RECORDINGS_H