1
#ifndef VDR_LIVE_RECORDINGS_H
2
#define VDR_LIVE_RECORDINGS_H
7
#include <boost/shared_ptr.hpp>
8
#include <vdr/recording.h>
12
// Forward declations from epg_events.h
14
typedef boost::shared_ptr<EpgEvent> EpgEventPtr;
16
class RecordingsManager;
17
typedef boost::shared_ptr<RecordingsManager> RecordingsManagerPtr;
19
class RecordingsManager
21
friend RecordingsManagerPtr LiveRecordingsManager();
25
* generates a Md5 hash from a cRecording entry. It can be used
26
* to reidentify a recording.
28
std::string Md5Hash(const cRecording* recording) const;
31
* fetches a cRecording from VDR's Recordings collection. Returns
32
* NULL if recording was not found
34
const cRecording* GetByMd5Hash(const std::string& hash) const;
39
cThreadLock m_recordingsLock;
49
typedef boost::shared_ptr< RecordingsItem > RecordingsItemPtr;
50
typedef std::multimap< std::string, RecordingsItemPtr > Map;
54
friend class RecordingsTree;
57
virtual ~RecordingsItem();
59
virtual time_t StartTime() const = 0;
60
virtual bool IsDir() const = 0;
61
virtual bool IsArchived() const = 0;
62
virtual const std::string& Name() const { return m_name; }
63
virtual const std::string Id() const = 0;
64
virtual const std::string ArchiveId() const = 0;
66
virtual const cRecording* Recording() const { return 0; }
67
virtual const cRecordingInfo* RecInfo() const { return 0; }
70
RecordingsItem(const std::string& name);
77
class RecordingsItemDir : public RecordingsItem
81
RecordingsItemDir(const std::string& name, int level);
83
virtual ~RecordingsItemDir();
85
virtual time_t StartTime() const { return 0; }
86
virtual bool IsDir() const { return true; }
87
virtual bool IsArchived() const { return false; }
88
virtual const std::string Id() const { std::string e; return e; }
89
virtual const std::string ArchiveId() const { std::string e; return e; }
95
class RecordingsItemRec : public RecordingsItem
98
RecordingsItemRec(const std::string& id, const std::string& name, cRecording* recording);
100
virtual ~RecordingsItemRec();
102
virtual time_t StartTime() const;
103
virtual bool IsDir() const { return false; }
104
virtual bool IsArchived() const ;
105
virtual const std::string Id() const { return m_id; }
106
virtual const std::string ArchiveId() const;
108
virtual const cRecording* Recording() const { return m_recording; }
109
virtual const cRecordingInfo* RecInfo() const { return m_recording->Info(); }
112
cRecording *m_recording;
116
RecordingsTree(RecordingsManagerPtr recManPtr);
118
virtual ~RecordingsTree();
120
Map::iterator begin(const std::vector< std::string >& path);
121
Map::iterator end(const std::vector< std::string >&path);
123
int MaxLevel() const { return m_maxLevel; }
125
static EpgEventPtr CreateEpgEvent(const RecordingsItemPtr recItem);
129
RecordingsItemPtr m_root;
130
RecordingsManagerPtr m_recManPtr;
132
Map::iterator findDir(RecordingsItemPtr& dir, const std::string& dirname);
136
* return singleton instance of RecordingsManager as a shared Pointer.
137
* This ensures that after last use of the RecordingsManager it is
138
* deleted. After deletion of the original RecordingsManager a repeated
139
* call to this function creates a new RecordingsManager which is again
140
* kept alive as long references to it exist.
142
RecordingsManagerPtr LiveRecordingsManager();
144
} // namespace vdrlive
146
#endif // VDR_LIVE_RECORDINGS_H