summaryrefslogtreecommitdiff
path: root/monitor.h
diff options
context:
space:
mode:
authorLars Hanisch <dvb@flensrocker.de>2011-02-02 14:18:45 +0100
committerLars Hanisch <dvb@flensrocker.de>2011-02-02 14:18:45 +0100
commitc03cb92fb43baab9136bd9122d757359e0590fda (patch)
treedbd9851e29274ba4b0189f3f859c1a29d20b8a88 /monitor.h
downloadvdr-plugin-dynamite-c03cb92fb43baab9136bd9122d757359e0590fda.tar.gz
vdr-plugin-dynamite-c03cb92fb43baab9136bd9122d757359e0590fda.tar.bz2
initial commit of version 0.0.5c
Diffstat (limited to 'monitor.h')
-rw-r--r--monitor.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/monitor.h b/monitor.h
new file mode 100644
index 0000000..659e504
--- /dev/null
+++ b/monitor.h
@@ -0,0 +1,58 @@
+#ifndef __DYNAMITEMONITOR_H
+#define __DYNAMITEMONITOR_H
+
+#include <vdr/thread.h>
+#include <vdr/tools.h>
+#include "udev.h"
+
+#define MAXUDEVMONITORS 10
+
+class cUdevFilter;
+
+class cUdevMonitor : public cThread {
+private:
+ static cMutex mutexMonitors;
+ static int numMonitors;
+ static cUdevMonitor *monitors[MAXUDEVMONITORS];
+
+ struct udev_monitor *monitor;
+ int index;
+ cString subsystem;
+ cMutex filtersMutex;
+ cList<cUdevFilter> filters;
+
+ cUdevMonitor(const char *Subsystem);
+protected:
+ virtual void Action(void);
+public:
+ static cUdevMonitor *Get(const char *Subsystem);
+ static bool AddFilter(const char *Subsystem, cUdevFilter *Filter);
+ static void ShutdownAllMonitors(void);
+
+ virtual ~cUdevMonitor(void);
+ cString GetSubsystem() const { return subsystem; };
+ bool AddFilter(cUdevFilter *Filter);
+ bool DelFilter(cUdevFilter *Filter);
+ };
+
+class cUdevFilter : public cListObject {
+friend class cUdevMonitor;
+protected:
+ const cUdevMonitor *monitor;
+ virtual void Process(cUdevDevice &Device) = 0;
+public:
+ cUdevFilter(void);
+ virtual ~cUdevFilter(void);
+ };
+
+class cUdevLogFilter : public cUdevFilter {
+protected:
+ virtual void Process(cUdevDevice &Device);
+ };
+
+class cUdevDvbFilter : public cUdevFilter {
+protected:
+ virtual void Process(cUdevDevice &Device);
+ };
+
+#endif // __DYNAMITEMONITOR_H