File: ServerManager.cpp

package info (click to toggle)
eiskaltdcpp 2.4.2-1.4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 25,788 kB
  • sloc: cpp: 97,597; ansic: 5,004; perl: 1,897; xml: 1,440; sh: 1,313; php: 661; javascript: 257; makefile: 39
file content (87 lines) | stat: -rw-r--r-- 2,629 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/***************************************************************************
*                                                                         *
*   Copyright (C) 2009-2010  Alexandr Tkachev <tka4ev@gmail.com>          *
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*                                                                         *
***************************************************************************/

// Created on: 17.08.2009

//---------------------------------------------------------------------------
#include "stdafx.h"
#include "dcpp/DCPlusPlus.h"
#include "dcpp/format.h"
#include "dcpp/Util.h"
//---------------------------------------------------------------------------
#include "ServerManager.h"
#include "ServerThread.h"
#include "utility.h"
//---------------------------------------------------------------------------

ServerThread *ServersS = nullptr;
bool bServerRunning = false, bServerTerminated = false, bIsRestart = false, bIsClose = false;
bool bDaemon = false;
#ifdef _WIN32
    #ifdef _SERVICE
        bool bService = false;
    #endif
#endif
bool bsyslog = false;

void callBack(void*, const string &a)
{
    logging(bDaemon, bsyslog, true, "Loading: " + a);
}

void ServerInitialize()
{
    ServersS = nullptr;
    bServerRunning = bIsRestart = bIsClose = false;
}

bool ServerStart()
{
    dcpp::startup(callBack, nullptr);
    ServerThread::newInstance();
    ServersS = ServerThread::getInstance();

    if(!ServersS)
        return false;

    ServersS->Resume();

    bServerRunning = true;

    return true;
}

void ServerStop()
{
    ServersS->Close();
    logging(bDaemon, bsyslog, true, "server stops");
    logging(bDaemon, bsyslog, true, "waiting");
    ServersS->WaitFor();
    logging(bDaemon, bsyslog, true, "waiting finished");
    ServersS->release();

    ServersS = nullptr;
    logging(bDaemon, bsyslog, true, "library stops");
    dcpp::shutdown();
    logging(bDaemon, bsyslog, true, "library was stopped");
    bServerRunning = false;
}


void ConfigReload()
{
    if (ServerThread::getInstance()) {
        ServerThread::getInstance()->configReload();
        logging(bDaemon, bsyslog, true, "reload configuration success");
    } else {
        logging(bDaemon, bsyslog, true, "reload configuration failed");
    }
}