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
22class cPlugin {
23 friend class cDll;
24 friend class cPluginManager;
25private:
29 const char *name;
30 bool started;
31 void SetName(const char *s);
32public:
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
70class cDll : public cListObject {
71private:
72 char *fileName;
73 char *args;
74 void *handle;
76 typedef void destroy_t(cPlugin *);
78public:
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
85class cDlls : public cList<cDll> {};
86
87class cPluginManager {
88private:
90 char *directory;
91 time_t lastHousekeeping;
93 cDlls dlls;
94public:
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);
101 bool StartPlugins(void);
102 void Housekeeping(void);
103 void MainThreadHook(void);
104 static bool Active(const char *Prompt = NULL);
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
char * args
void * handle
virtual ~cDll()
void destroy_t(cPlugin *)
Definition: plugin.h:76
destroy_t * destroy
cPlugin * plugin
cDll(const char *FileName, const char *Args)
bool Load(bool Log=false)
char * fileName
cPlugin * Plugin(void)
Definition: plugin.h:82
void StopPlugins(void)
void MainThreadHook(void)
bool StartPlugins(void)
cPluginManager(const char *Directory)
static bool CallAllServices(const char *Id, void *Data=NULL)
static cPlugin * GetPlugin(int Index)
void SetDirectory(const char *Directory)
bool InitializePlugins(void)
void AddPlugin(const char *Args)
static cPlugin * GetNextWakeupPlugin(void)
static bool HasPlugins(void)
bool LoadPlugins(bool Log=false)
static bool Active(const char *Prompt=NULL)
void Shutdown(bool Log=false)
virtual ~cPluginManager()
static cPlugin * GetPlugin(const char *Name)
static cPluginManager * pluginManager
static cPlugin * CallFirstService(const char *Id, void *Data=NULL)
void Housekeeping(void)
static cString cacheDirectory
void SetupStore(const char *Name, int Value)
virtual const char * CommandLineHelp(void)
const char * name
virtual bool ProcessArgs(int argc, char *argv[])
virtual const char * Version(void)=0
static const char * ResourceDirectory(const char *PluginName=NULL)
virtual void Housekeeping(void)
const char * Name(void)
Definition: plugin.h:36
virtual time_t WakeupTime(void)
virtual bool Service(const char *Id, void *Data=NULL)
virtual const char * MainMenuEntry(void)
static cString configDirectory
static cString resourceDirectory
static void SetCacheDirectory(const char *Dir)
virtual bool Initialize(void)
virtual bool SetupParse(const char *Name, const char *Value)
void SetName(const char *s)
void SetupStore(const char *Name, const char *Value=NULL)
virtual cOsdObject * MainMenuAction(void)
virtual cMenuSetupPage * SetupMenu(void)
virtual void MainThreadHook(void)
virtual ~cPlugin()
static void SetResourceDirectory(const char *Dir)
virtual bool Start(void)
virtual const char ** SVDRPHelpPages(void)
virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode)
virtual void Stop(void)
cPlugin(void)
static void SetConfigDirectory(const char *Dir)
static const char * CacheDirectory(const char *PluginName=NULL)
virtual const char * Description(void)=0
virtual cString Active(void)
static const char * ConfigDirectory(const char *PluginName=NULL)