]> git.vomp.tv Git - vompserver.git/blob - udpreplier.c
Compatibility for VDR 1.7.30, thanks to hondansx, Uwe and MartenR.
[vompserver.git] / udpreplier.c
1 /*
2     Copyright 2004-2005 Chris Tallon
3
4     This file is part of VOMP.
5
6     VOMP is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10
11     VOMP is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with VOMP; if not, write to the Free Software
18     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19 */
20
21 #include "udpreplier.h"
22
23 UDPReplier::UDPReplier()
24 {
25   serverName = NULL;
26 }
27
28 UDPReplier::~UDPReplier()
29 {
30   shutdown();
31 }
32
33 int UDPReplier::shutdown()
34 {
35   if (threadIsActive()) threadCancel();
36
37   if (serverName) delete[] serverName;
38   serverName = NULL;
39   return 1;
40 }
41
42 int UDPReplier::run(char* tserverName)
43 {
44   if (threadIsActive()) return 1;
45
46   serverName = new char[strlen(tserverName)+1];
47   strcpy(serverName, tserverName);
48
49   if (!ds.init(3024))
50   {
51     shutdown();
52     return 0;
53   }
54
55   if (!threadStart())
56   {
57     shutdown();
58     return 0;
59   }
60
61   Log::getInstance()->log("UDPReplier", Log::DEBUG, "UDP replier started");
62   return 1;
63 }
64
65 void UDPReplier::threadMethod()
66 {
67   int retval;
68   while(1)
69   {
70     retval = ds.waitforMessage(0);
71     if (retval == 1) continue;
72
73     if (!strcmp(ds.getData(), "VOMP"))
74     {
75       Log::getInstance()->log("UDPReplier", Log::DEBUG, "UDP request from %s", ds.getFromIPA());
76       ds.send(ds.getFromIPA(), 3024, serverName, strlen(serverName));
77     }
78   }
79 }