vdr  2.6.1
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 4.1 2020/06/29 09:29:06 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) \
19  extern "C" void *VDRPluginCreator(void) { return new PluginClass; } \
20  extern "C" void VDRPluginDestroyer(PluginClass *p) { delete p; }
21 
22 class cPlugin {
23  friend class cDll;
24  friend class cPluginManager;
25 private:
29  const char *name;
30  bool started;
31  void SetName(const char *s);
32 public:
33  cPlugin(void);
34  virtual ~cPlugin();
35 
36  const char *Name(void) { return name; }
37  virtual const char *Version(void) = 0;
38  virtual const char *Description(void) = 0;
39  virtual const char *CommandLineHelp(void);
40 
41  virtual bool ProcessArgs(int argc, char *argv[]);
42  virtual bool Initialize(void);
43  virtual bool Start(void);
44  virtual void Stop(void);
45  virtual void Housekeeping(void);
46  virtual void MainThreadHook(void);
47  virtual cString Active(void);
48  virtual time_t WakeupTime(void);
49 
50  virtual const char *MainMenuEntry(void);
51  virtual cOsdObject *MainMenuAction(void);
52 
53  virtual cMenuSetupPage *SetupMenu(void);
54  virtual bool SetupParse(const char *Name, const char *Value);
55  void SetupStore(const char *Name, const char *Value = NULL);
56  void SetupStore(const char *Name, int Value);
57 
58  virtual bool Service(const char *Id, void *Data = NULL);
59  virtual const char **SVDRPHelpPages(void);
60  virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode);
61 
62  static void SetConfigDirectory(const char *Dir);
63  static const char *ConfigDirectory(const char *PluginName = NULL);
64  static void SetCacheDirectory(const char *Dir);
65  static const char *CacheDirectory(const char *PluginName = NULL);
66  static void SetResourceDirectory(const char *Dir);
67  static const char *ResourceDirectory(const char *PluginName = NULL);
68  };
69 
70 class cDll : public cListObject {
71 private:
72  char *fileName;
73  char *args;
74  void *handle;
76  typedef void destroy_t(cPlugin *);
78 public:
79  cDll(const char *FileName, const char *Args);
80  virtual ~cDll();
81  bool Load(bool Log = false);
82  cPlugin *Plugin(void) { return plugin; }
83  };
84 
85 class cDlls : public cList<cDll> {};
86 
88 private:
90  char *directory;
94 public:
95  cPluginManager(const char *Directory);
96  virtual ~cPluginManager();
97  void SetDirectory(const char *Directory);
98  void AddPlugin(const char *Args);
99  bool LoadPlugins(bool Log = false);
100  bool InitializePlugins(void);
101  bool StartPlugins(void);
102  void Housekeeping(void);
103  void MainThreadHook(void);
104  static bool Active(const char *Prompt = NULL);
105  static cPlugin *GetNextWakeupPlugin(void);
106  static bool HasPlugins(void);
107  static cPlugin *GetPlugin(int Index);
108  static cPlugin *GetPlugin(const char *Name);
109  static cPlugin *CallFirstService(const char *Id, void *Data = NULL);
110  static bool CallAllServices(const char *Id, void *Data = NULL);
111  void StopPlugins(void);
112  void Shutdown(bool Log = false);
113  };
114 
115 #endif //__PLUGIN_H
cDll::args
char * args
Definition: plugin.h:73
cPlugin::SetupMenu
virtual cMenuSetupPage * SetupMenu(void)
Definition: plugin.c:100
cPlugin::SetupStore
void SetupStore(const char *Name, const char *Value=NULL)
Definition: plugin.c:110
cDll::fileName
char * fileName
Definition: plugin.h:72
cPluginManager::Active
static bool Active(const char *Prompt=NULL)
Definition: plugin.c:427
cPluginManager::CallFirstService
static cPlugin * CallFirstService(const char *Id, void *Data=NULL)
Definition: plugin.c:487
cPluginManager::HasPlugins
static bool HasPlugins(void)
Definition: plugin.c:464
cPluginManager::GetPlugin
static cPlugin * GetPlugin(int Index)
Definition: plugin.c:469
cPluginManager::dlls
cDlls dlls
Definition: plugin.h:93
cPlugin
Definition: plugin.h:22
cPlugin::name
const char * name
Definition: plugin.h:29
cPlugin::ResourceDirectory
static const char * ResourceDirectory(const char *PluginName=NULL)
Definition: plugin.c:168
cPlugin::Initialize
virtual bool Initialize(void)
Definition: plugin.c:58
cPlugin::ConfigDirectory
static const char * ConfigDirectory(const char *PluginName=NULL)
Definition: plugin.c:140
cPluginManager::nextHousekeeping
int nextHousekeeping
Definition: plugin.h:92
cPlugin::Version
virtual const char * Version(void)=0
cPluginManager::MainThreadHook
void MainThreadHook(void)
Definition: plugin.c:418
cPlugin::Description
virtual const char * Description(void)=0
cPlugin::Name
const char * Name(void)
Definition: plugin.h:36
cPlugin::SVDRPHelpPages
virtual const char ** SVDRPHelpPages(void)
Definition: plugin.c:125
cOsdObject
Definition: osdbase.h:69
cPluginManager::cPluginManager
cPluginManager(const char *Directory)
Definition: plugin.c:303
cDll::destroy
destroy_t * destroy
Definition: plugin.h:77
cPlugin::Start
virtual bool Start(void)
Definition: plugin.c:63
cDlls
Definition: plugin.h:85
cPluginManager::~cPluginManager
virtual ~cPluginManager()
Definition: plugin.c:316
cPlugin::MainThreadHook
virtual void MainThreadHook(void)
Definition: plugin.c:76
cPlugin::SetCacheDirectory
static void SetCacheDirectory(const char *Dir)
Definition: plugin.c:149
cListObject
Definition: tools.h:540
cPluginManager::InitializePlugins
bool InitializePlugins(void)
Definition: plugin.c:375
cPlugin::cacheDirectory
static cString cacheDirectory
Definition: plugin.h:27
cPluginManager::Shutdown
void Shutdown(bool Log=false)
Definition: plugin.c:524
cPluginManager::AddPlugin
void AddPlugin(const char *Args)
Definition: plugin.c:330
i18n.h
cPluginManager::SetDirectory
void SetDirectory(const char *Directory)
Definition: plugin.c:324
cPlugin::Housekeeping
virtual void Housekeeping(void)
Definition: plugin.c:72
cPlugin::SVDRPCommand
virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode)
Definition: plugin.c:130
cPlugin::ProcessArgs
virtual bool ProcessArgs(int argc, char *argv[])
Definition: plugin.c:53
menuitems.h
cPluginManager::lastHousekeeping
time_t lastHousekeeping
Definition: plugin.h:91
cList
Definition: tools.h:641
cDll::cDll
cDll(const char *FileName, const char *Args)
Definition: plugin.c:179
cDll::~cDll
virtual ~cDll()
Definition: plugin.c:188
cPluginManager::LoadPlugins
bool LoadPlugins(bool Log=false)
Definition: plugin.c:366
cPlugin::Stop
virtual void Stop(void)
Definition: plugin.c:68
cPluginManager
Definition: plugin.h:87
cPlugin::CacheDirectory
static const char * CacheDirectory(const char *PluginName=NULL)
Definition: plugin.c:154
cString
Definition: tools.h:178
cPlugin::Service
virtual bool Service(const char *Id, void *Data=NULL)
Definition: plugin.c:120
cPluginManager::StopPlugins
void StopPlugins(void)
Definition: plugin.c:512
cPluginManager::directory
char * directory
Definition: plugin.h:90
cPlugin::configDirectory
static cString configDirectory
Definition: plugin.h:26
cDll::Load
bool Load(bool Log=false)
Definition: plugin.c:219
cPlugin::resourceDirectory
static cString resourceDirectory
Definition: plugin.h:28
cPluginManager::pluginManager
static cPluginManager * pluginManager
Definition: plugin.h:89
cPlugin::SetupParse
virtual bool SetupParse(const char *Name, const char *Value)
Definition: plugin.c:105
cPlugin::WakeupTime
virtual time_t WakeupTime(void)
Definition: plugin.c:85
cPlugin::Active
virtual cString Active(void)
Definition: plugin.c:80
cPluginManager::CallAllServices
static bool CallAllServices(const char *Id, void *Data=NULL)
Definition: plugin.c:499
cPlugin::MainMenuEntry
virtual const char * MainMenuEntry(void)
Definition: plugin.c:90
cPluginManager::Housekeeping
void Housekeeping(void)
Definition: plugin.c:402
cDll::handle
void * handle
Definition: plugin.h:74
cPlugin::SetConfigDirectory
static void SetConfigDirectory(const char *Dir)
Definition: plugin.c:135
cPlugin::~cPlugin
virtual ~cPlugin()
Definition: plugin.c:38
cDll::plugin
cPlugin * plugin
Definition: plugin.h:75
cPlugin::cPlugin
cPlugin(void)
Definition: plugin.c:32
tools.h
osdbase.h
cPlugin::MainMenuAction
virtual cOsdObject * MainMenuAction(void)
Definition: plugin.c:95
cMenuSetupPage
Definition: menuitems.h:229
cDll
Definition: plugin.h:70
cPlugin::CommandLineHelp
virtual const char * CommandLineHelp(void)
Definition: plugin.c:48
cDll::destroy_t
void destroy_t(cPlugin *)
Definition: plugin.h:76
cPluginManager::GetNextWakeupPlugin
static cPlugin * GetNextWakeupPlugin(void)
Definition: plugin.c:444
cPlugin::started
bool started
Definition: plugin.h:30
cDll::Plugin
cPlugin * Plugin(void)
Definition: plugin.h:82
cPluginManager::StartPlugins
bool StartPlugins(void)
Definition: plugin.c:388
cPlugin::SetResourceDirectory
static void SetResourceDirectory(const char *Dir)
Definition: plugin.c:163
cPlugin::SetName
void SetName(const char *s)
Definition: plugin.c:42