diff options
author | Lars Hanisch <dvb@flensrocker.de> | 2011-02-02 14:18:45 +0100 |
---|---|---|
committer | Lars Hanisch <dvb@flensrocker.de> | 2011-02-02 14:18:45 +0100 |
commit | c03cb92fb43baab9136bd9122d757359e0590fda (patch) | |
tree | dbd9851e29274ba4b0189f3f859c1a29d20b8a88 /monitor.h | |
download | vdr-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.h | 58 |
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 |