1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
/*
* timer.h: Web video plugin for the Video Disk Recorder
*
* See the README file for copyright information and how to reach the author.
*
* $Id$
*/
#ifndef __WEBVIDEO_TIMER_H
#define __WEBVIDEO_TIMER_H
#include <time.h>
#include <stdio.h>
#include <vdr/tools.h>
#include "request.h"
#define REQ_ID_TIMER -2
#define DEFAULT_TIMER_INTERVAL 7*24*60*60
#define RETRY_TIMER_INTERVAL 60*60
#define MIN_TIMER_INTERVAL 10*60
#define MAX_TIMER_HISTORY_SIZE 2000
class cWebviTimerManager;
class iAsyncFileDownloaderManager;
// --- cWebviTimer -----------------------------------------------
class cWebviTimer : public cListObject {
private:
int id;
char *title;
char *reference;
time_t lastUpdate;
int interval;
bool running;
cStringList activeStreams;
bool lastSucceeded;
char *lastError;
cWebviTimerManager *parent;
public:
cWebviTimer(int ID, const char *title, const char *ref,
cWebviTimerManager *manager,
time_t last=0, int interval=DEFAULT_TIMER_INTERVAL,
bool success=true, const char *errmsg=NULL);
~cWebviTimer();
int GetID() const { return id; }
void SetTitle(const char *newTitle);
const char *GetTitle() const { return title; }
void SetInterval(int interval);
int GetInterval() const;
const char *GetReference() const { return reference; }
time_t LastUpdate() const { return lastUpdate; }
time_t NextUpdate() const;
void SetError(const char *errmsg);
bool Success() const { return lastSucceeded; }
const char *LastError() const;
void Execute();
bool Running() { return running; }
void DownloadStreams(const char *menuxml, cProgressVector& summaries);
void CheckFailed(const char *errmsg);
void RequestFinished(const char *ref, const char *errmsg);
};
// --- cWebviTimerManager ----------------------------------------
class cWebviTimerManager {
private:
cList<cWebviTimer> timers;
int nextID;
cStringList refHistory;
bool modified;
bool disableSaving;
bool convertTemplatePaths;
cWebviTimerManager();
~cWebviTimerManager() {};
cWebviTimerManager(const cWebviTimerManager &); // intentionally undefined
cWebviTimerManager &operator=(const cWebviTimerManager &); // intentionally undefined
void LoadTimers(FILE *f);
void LoadHistory(FILE *f);
void SaveTimers(FILE *f, const char *version);
void SaveHistory(FILE *f);
char *UpgradedTemplatePath(char *ref);
void ConvertTimerHistoryTemplates();
public:
static cWebviTimerManager &Instance();
bool Load(const char *path);
bool Save(const char *path, const char *version);
cWebviTimer *Create(const char *title, const char *reference,
bool getExisting=true);
void Remove(cWebviTimer *timer);
cWebviTimer *First() const { return timers.First(); }
cWebviTimer *Next(const cWebviTimer *cur) const { return timers.Next(cur); }
cWebviTimer *GetLinear(int idx) const { return timers.Get(idx); }
cWebviTimer *GetByID(int id) const;
void SetModified() { modified = true; }
void Update();
void MarkDownloaded(const char *ref);
bool AlreadyDownloaded(const char *ref);
};
#endif
|