vdr
1.7.27
|
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!