vdr  2.2.0
plugin.h
Go to the documentation of this file.
1 /*
2  * plugin.h: The VDR plugin interface
3  *
4  * See the main source file 'vdr.c' for copyright information and
5  * how to reach the author.
6  *
7  * $Id: plugin.h 3.0 2012/09/01 13:08:54 kls Exp $
8  */
9 
10 #ifndef __PLUGIN_H
11 #define __PLUGIN_H
12 
13 #include "i18n.h"
14 #include "menuitems.h"
15 #include "osdbase.h"
16 #include "tools.h"
17 
18 #define VDRPLUGINCREATOR(PluginClass) extern "C" void *VDRPluginCreator(void) { return new PluginClass; }
19 
20 class cPlugin {
21  friend class cDll;
22  friend class cPluginManager;
23 private:
27  const char *name;
28  bool started;
29  void SetName(const char *s);
30 public:
31  cPlugin(void);
32  virtual ~cPlugin();
33 
34  const char *Name(void) { return name; }
35  virtual const char *Version(void) = 0;
36  virtual const char *Description(void) = 0;
37  virtual const char *CommandLineHelp(void);
38 
39  virtual bool ProcessArgs(int argc, char *argv[]);
40  virtual bool Initialize(void);
41  virtual bool Start(void);
42  virtual void Stop(void);
43  virtual void Housekeeping(void);
44  virtual void MainThreadHook(void);
45  virtual cString Active(void);
46  virtual time_t WakeupTime(void);
47 
48  virtual const char *MainMenuEntry(void);
49  virtual cOsdObject *MainMenuAction(void);
50 
51  virtual cMenuSetupPage *SetupMenu(void);
52  virtual bool SetupParse(const char *Name, const char *Value);
53  void SetupStore(const char *Name, const char *Value = NULL);
54  void SetupStore(const char *Name, int Value);
55 
56  virtual bool Service(const char *Id, void *Data = NULL);
57  virtual const char **SVDRPHelpPages(void);
58  virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode);
59 
60  static void SetConfigDirectory(const char *Dir);
61  static const char *ConfigDirectory(const char *PluginName = NULL);
62  static void SetCacheDirectory(const char *Dir);
63  static const char *CacheDirectory(const char *PluginName = NULL);
64  static void SetResourceDirectory(const char *Dir);
65  static const char *ResourceDirectory(const char *PluginName = NULL);
66  };
67 
68 class cDll : public cListObject {
69 private:
70  char *fileName;
71  char *args;
72  void *handle;
74 public:
75  cDll(const char *FileName, const char *Args);
76  virtual ~cDll();
77  bool Load(bool Log = false);
78  cPlugin *Plugin(void) { return plugin; }
79  };
80 
81 class cDlls : public cList<cDll> {};
82 
84 private:
86  char *directory;
90 public:
91  cPluginManager(const char *Directory);
92  virtual ~cPluginManager();
93  void SetDirectory(const char *Directory);
94  void AddPlugin(const char *Args);
95  bool LoadPlugins(bool Log = false);
96  bool InitializePlugins(void);
97  bool StartPlugins(void);
98  void Housekeeping(void);
99  void MainThreadHook(void);
100  static bool Active(const char *Prompt = NULL);
101  static cPlugin *GetNextWakeupPlugin(void);
102  static bool HasPlugins(void);
103  static cPlugin *GetPlugin(int Index);
104  static cPlugin *GetPlugin(const char *Name);
105  static cPlugin *CallFirstService(const char *Id, void *Data = NULL);
106  static bool CallAllServices(const char *Id, void *Data = NULL);
107  void StopPlugins(void);
108  void Shutdown(bool Log = false);
109  };
110 
111 #endif //__PLUGIN_H
Definition: plugin.h:81
const char * name
Definition: plugin.h:27
virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode)
Definition: plugin.c:130
static const char * ResourceDirectory(const char *PluginName=NULL)
Definition: plugin.c:168
friend class cPluginManager
Definition: plugin.h:22
const char * Name(void)
Definition: plugin.h:34
virtual cString Active(void)
Definition: plugin.c:80
virtual const char ** SVDRPHelpPages(void)
Definition: plugin.c:125
virtual const char * Version(void)=0
void SetupStore(const char *Name, const char *Value=NULL)
Definition: plugin.c:110
virtual cOsdObject * MainMenuAction(void)
Definition: plugin.c:95
virtual bool ProcessArgs(int argc, char *argv[])
Definition: plugin.c:53
Definition: plugin.h:20
void * handle
Definition: plugin.h:72
cPlugin * Plugin(void)
Definition: plugin.h:78
bool started
Definition: plugin.h:28
Definition: tools.h:489
static const char * ConfigDirectory(const char *PluginName=NULL)
Definition: plugin.c:140
static cString resourceDirectory
Definition: plugin.h:26
virtual void Stop(void)
Definition: plugin.c:68
cPlugin * plugin
Definition: plugin.h:73
static const char * CacheDirectory(const char *PluginName=NULL)
Definition: plugin.c:154
char * directory
Definition: plugin.h:86
cPlugin(void)
Definition: plugin.c:32
virtual const char * Description(void)=0
virtual const char * CommandLineHelp(void)
Definition: plugin.c:48
Definition: plugin.h:68
virtual void MainThreadHook(void)
Definition: plugin.c:76
int nextHousekeeping
Definition: plugin.h:88
time_t lastHousekeeping
Definition: plugin.h:87
static cString configDirectory
Definition: plugin.h:24
virtual bool SetupParse(const char *Name, const char *Value)
Definition: plugin.c:105
void SetName(const char *s)
Definition: plugin.c:42
char * fileName
Definition: plugin.h:70
virtual cMenuSetupPage * SetupMenu(void)
Definition: plugin.c:100
cDlls dlls
Definition: plugin.h:89
friend class cDll
Definition: plugin.h:21
virtual void Housekeeping(void)
Definition: plugin.c:72
virtual bool Initialize(void)
Definition: plugin.c:58
static cPluginManager * pluginManager
Definition: plugin.h:85
virtual const char * MainMenuEntry(void)
Definition: plugin.c:90
static void SetCacheDirectory(const char *Dir)
Definition: plugin.c:149
static cString cacheDirectory
Definition: plugin.h:25
char * args
Definition: plugin.h:71
virtual bool Start(void)
Definition: plugin.c:63
virtual time_t WakeupTime(void)
Definition: plugin.c:85
static void SetResourceDirectory(const char *Dir)
Definition: plugin.c:163
Definition: tools.h:168
virtual ~cPlugin()
Definition: plugin.c:38
static void SetConfigDirectory(const char *Dir)
Definition: plugin.c:135
virtual bool Service(const char *Id, void *Data=NULL)
Definition: plugin.c:120