]> git.ipfire.org Git - thirdparty/pdns.git/blob - pdns/recursorservice.cc
d16d9191a1f9e9ea10b91961fc624e21888dc016
[thirdparty/pdns.git] / pdns / recursorservice.cc
1 /*
2 PowerDNS Versatile Database Driven Nameserver
3 Copyright (C) 2002 - 2006 PowerDNS.COM BV
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License version 2
7 as published by the Free Software Foundation
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19 #include "recursorservice.hh"
20
21 extern int serviceMain( int argc, char *argv[] );
22
23 // Control handler.
24 void RecursorService::ctrlHandler( DWORD controlCode )
25 {
26 if ( m_statusCode == SERVICE_STOPPED )
27 exit( 0 );
28
29 switch ( controlCode )
30 {
31 case SERVICE_CONTROL_STOP:
32 setStatus( SERVICE_STOP_PENDING );
33 shutdown();
34 setStatus( SERVICE_STOPPED );
35 // FIXME: Add a cleaner way to do this:
36 break;
37
38 case SERVICE_CONTROL_INTERROGATE:
39 setStatus( m_statusCode, m_errorCode );
40 break;
41
42 case SERVICE_CONTROL_SHUTDOWN:
43 setStatus( SERVICE_STOP_PENDING );
44 shutdown();
45 setStatus( SERVICE_STOPPED );
46 // FIXME: Add a cleaner way to do this:
47 break;
48 }
49 }
50
51
52 // Returns the service name.
53 std::string RecursorService::getServiceName( void )
54 {
55 return "PowerDNS Recursor";
56 }
57
58
59 // Main procedure.
60 int RecursorService::main( int argc, char *argv[] )
61 {
62 return serviceMain( argc, argv );
63
64 }