vdr  1.7.27
svcsvr.c
Go to the documentation of this file.
00001 /*
00002  * svcsvr.c: Sample service server plugin
00003  *
00004  * See the README file for copyright information and how to reach the author.
00005  *
00006  * $Id: svcsvr.c 2.0 2007/08/15 13:18:59 kls Exp $
00007  */
00008 
00009 #include <stdlib.h>
00010 #include <vdr/interface.h>
00011 #include <vdr/plugin.h>
00012 
00013 static const char *VERSION        = "0.1.2";
00014 static const char *DESCRIPTION    = "Service demo server";
00015 
00016 class cPluginSvcSvr : public cPlugin {
00017 public:
00018   virtual const char *Version(void) { return VERSION; }
00019   virtual const char *Description(void) { return DESCRIPTION; }
00020   virtual bool Service(const char *Id, void *Data);
00021   };
00022 
00023 struct ReportBoredPlugin_v1_0 {
00024   cPlugin *BoredPlugin;
00025   };
00026 
00027 struct AddService_v1_0 {
00028   int a, b;
00029   int sum;
00030   };
00031 
00032 // --- cPluginSvcSvr ----------------------------------------------------------
00033 
00034 bool cPluginSvcSvr::Service(const char *Id, void *Data)
00035 {
00036   if (strcmp(Id,"ReportBoredPlugin-v1.0") == 0) {
00037      if (Data) {
00038         ReportBoredPlugin_v1_0 *rbp = (ReportBoredPlugin_v1_0*)Data;
00039         char s[128];
00040         snprintf(s, sizeof(s), "Plugin %s informed server that it is bored.", rbp->BoredPlugin->Name());
00041         Interface->Confirm(s);
00042         }
00043      return true;
00044      }
00045 
00046   if (strcmp(Id,"AddService-v1.0") == 0) {
00047      if (Data) {
00048         AddService_v1_0 *data = (AddService_v1_0*)Data;
00049         data->sum = data->a + data->b;
00050         }
00051      return true;
00052      }
00053 
00054   return false;
00055 }
00056 
00057 VDRPLUGINCREATOR(cPluginSvcSvr); // Don't touch this!