vdr  2.2.0
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 3.2 2015/02/17 13:13:05 kls Exp $
7  */
8 
9 #include <stdlib.h>
10 #include <vdr/interface.h>
11 #include <vdr/plugin.h>
12 
13 static const char *VERSION = "2.2.0";
14 static const char *DESCRIPTION = "Service demo client";
15 static const char *MAINMENUENTRY = "Service demo";
16 
17 class cPluginSvcCli : public cPlugin {
18 public:
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 
28  };
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());
55  Interface->Confirm(s);
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);
65  Interface->Confirm(s);
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 
76 bool 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());
83  Interface->Confirm(s);
84  }
85  return true;
86  }
87  return false;
88 }
89 
90 VDRPLUGINCREATOR(cPluginSvcCli); // Don't touch this!
virtual const char * Description(void)
Definition: svccli.c:20
bool Confirm(const char *s, int Seconds=10, bool WaitForTimeout=false)
Definition: interface.c:67
const char * Name(void)
Definition: plugin.h:34
static const char * VERSION
Definition: svccli.c:13
Definition: plugin.h:20
virtual const char * Version(void)
Definition: svccli.c:19
virtual cOsdObject * MainMenuAction(void)
Definition: svccli.c:37
static bool CallAllServices(const char *Id, void *Data=NULL)
Definition: plugin.c:487
static cPlugin * CallFirstService(const char *Id, void *Data=NULL)
Definition: plugin.c:475
VDRPLUGINCREATOR(cPluginSvcCli)
cPlugin * BoredPlugin
Definition: svccli.c:27
static const char * MAINMENUENTRY
Definition: svccli.c:15
virtual const char * MainMenuEntry(void)
Definition: svccli.c:21
static cPlugin * GetPlugin(int Index)
Definition: plugin.c:457
virtual bool Service(const char *Id, void *Data)
Definition: svccli.c:76
cInterface * Interface
Definition: interface.c:20
static const char * DESCRIPTION
Definition: svccli.c:14
virtual bool Service(const char *Id, void *Data=NULL)
Definition: plugin.c:120