vdr 2.7.2
svccli.c
Go to the documentation of this file.
1/*
2 * svccli.c: Sample service client plugin
3 *
4 * See the README file for copyright information and how to reach the author.
5 *
6 * $Id: svccli.c 4.1 2018/04/10 13:00:53 kls Exp $
7 */
8
9#include <stdlib.h>
10#include <vdr/interface.h>
11#include <vdr/plugin.h>
12
13static const char *VERSION = "2.4.0";
14static const char *DESCRIPTION = "Service demo client";
15static const char *MAINMENUENTRY = "Service demo";
16
17class cPluginSvcCli : public cPlugin {
18public:
19 virtual const char *Version(void) { return VERSION; }
20 virtual const char *Description(void) { return DESCRIPTION; }
21 virtual const char *MainMenuEntry(void) { return MAINMENUENTRY; }
22 virtual cOsdObject *MainMenuAction(void);
23 virtual bool Service(const char *Id, void *Data);
24 };
25
29
31 int a, b;
32 int sum;
33 };
34
35// --- cPluginSvcCli ---------------------------------------------------------
36
38{
39 char s[128];
40 cPlugin *p;
41
42 // Inform server plugin that we are bored
43 // (directed communication)
45 rbp.BoredPlugin = this;
46 p = cPluginManager::GetPlugin("svcsvr");
47 if (p)
48 p->Service("ReportBoredPlugin-v1.0", &rbp);
49
50 // See if any plugin can add
51 // (detect capability)
52 p = cPluginManager::CallFirstService("AddService-v1.0", NULL);
53 if (p) {
54 snprintf(s, sizeof(s), "Plugin %s can add", p->Name());
56 }
57
58 // Perform add
59 // (use general service)
60 AddService_v1_0 adds;
61 adds.a = 1;
62 adds.b = 1;
63 if (cPluginManager::CallFirstService("AddService-v1.0", &adds)) {
64 snprintf(s, sizeof(s), "Plugin thinks that 1+1=%i", adds.sum);
66 }
67
68 // Inform other plugins that we are bored
69 // (broadcast)
70 rbp.BoredPlugin = this;
71 cPluginManager::CallAllServices("ReportBoredPlugin-v1.0", &rbp);
72
73 return NULL;
74}
75
76bool cPluginSvcCli::Service(const char *Id, void *Data)
77{
78 if (strcmp(Id, "ReportBoredPlugin-v1.0") == 0) {
79 if (Data) {
81 char s[128];
82 snprintf(s, sizeof(s), "Plugin %s informed client that it is bored.", rbp->BoredPlugin->Name());
84 }
85 return true;
86 }
87 return false;
88}
89
90VDRPLUGINCREATOR(cPluginSvcCli); // Don't touch this!
bool Confirm(const char *s, int Seconds=10, bool WaitForTimeout=false)
Definition interface.c:59
static bool CallAllServices(const char *Id, void *Data=NULL)
Definition plugin.c:499
static cPlugin * CallFirstService(const char *Id, void *Data=NULL)
Definition plugin.c:487
static cPlugin * GetPlugin(int Index)
Definition plugin.c:469
virtual const char * MainMenuEntry(void)
Definition svccli.c:21
virtual const char * Description(void)
Definition svccli.c:20
virtual const char * Version(void)
Definition svccli.c:19
virtual bool Service(const char *Id, void *Data)
Definition svccli.c:76
virtual cOsdObject * MainMenuAction(void)
Definition svccli.c:37
const char * Name(void)
Definition plugin.h:36
virtual bool Service(const char *Id, void *Data=NULL)
Definition plugin.c:120
cInterface * Interface
Definition interface.c:20
#define VDRPLUGINCREATOR(PluginClass)
Definition plugin.h:18
cPlugin * BoredPlugin
Definition svccli.c:27
static const char * VERSION
Definition svccli.c:13
static const char * DESCRIPTION
Definition svccli.c:14
static const char * MAINMENUENTRY
Definition svccli.c:15