summaryrefslogtreecommitdiff
path: root/src/vdr-plugin/timer.h
diff options
context:
space:
mode:
authorAntti Ajanki <antti.ajanki@iki.fi>2013-08-09 21:39:11 +0300
committerAntti Ajanki <antti.ajanki@iki.fi>2013-08-09 21:39:11 +0300
commit451f691d367a46f365101f39cc093ce2feaacd13 (patch)
tree6ac88c6ecf46755c4826719f58a2cf00ac9ecb8c /src/vdr-plugin/timer.h
parent2d4d55cfedccfa80d283592af349e93d0968f58e (diff)
downloadvdr-plugin-webvideo-451f691d367a46f365101f39cc093ce2feaacd13.tar.gz
vdr-plugin-webvideo-451f691d367a46f365101f39cc093ce2feaacd13.tar.bz2
Import vdr-plugin from the master branch
Diffstat (limited to 'src/vdr-plugin/timer.h')
-rw-r--r--src/vdr-plugin/timer.h115
1 files changed, 115 insertions, 0 deletions
diff --git a/src/vdr-plugin/timer.h b/src/vdr-plugin/timer.h
new file mode 100644
index 0000000..369fbce
--- /dev/null
+++ b/src/vdr-plugin/timer.h
@@ -0,0 +1,115 @@
+/*
+ * 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;
+
+// --- 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