Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Поля в синглтоне - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Расшифровка таинственного пробела http://www.cyberforum.ru/cpp-beginners/thread1497550.html
Большая просьба помочь.Есть задача проверить является ли число двоичным или десятичным: вот код #include <iostream> using namespace std; int main() {setlocale(LC_ALL,"Rus"); char stroka; int...
C++ Ошибка в приложении: "error LNK2019: ссылка на неразрешенный внешний символ" Создал консольное приложение и в него добавил код: #include "afxwin.h" // MFC Основные и стандартные компоненты class CMainWnd : public CFrameWnd { public: CMainWnd(); // Конструктор по... http://www.cyberforum.ru/cpp-beginners/thread1497544.html
C++ GDI+ Как Image сохранить в буфер / массив?
Здравствуйте, сижу бьюсь над проблемой рисования в памяти через GDI+ В память рисует, всё работает, но я никак не могу сообразить как же сохранить Image не в файл, а в буфер Например canvas это...
алгоритм эвклида C++
как работает этот код? int gcd(int a, int b) { while(b) b^=a^=b^=a%=b; return a; }
C++ Макрос BEGIN_MESSAGE_MAP http://www.cyberforum.ru/cpp-beginners/thread1497528.html
Пытаюсь разораться что делает макрос BEGIN_MESSAGE_MAP(CSpaceship,CCmdTarget) Там код получается неясный, вот определение самого макроса: #define BEGIN_MESSAGE_MAP(theClass, baseClass) \...
C++ Циклы while и for: в чем суть отличия? Пытаюсь понять в чем суть отличия между этими циклами. Пишутся по разному, а по сути тоже самое. Можно ли написать цикл while таким образом, чтобы нельзя было сделать аналогичный цикл с for? или... подробнее

Показать сообщение отдельно
mc Sidh
1 / 1 / 1
Регистрация: 29.03.2014
Сообщений: 50
12.07.2015, 12:43  [ТС]
Server.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#pragma once
#include "RakPeerInterface.h"
#include <map>
#include "ServerInfo.h"
#include "ConnectedClient.h"
#include <thread>
 
using namespace std;
 
class Server
{
private:
    Server(){}
    ~Server(){}
    static void startNetworkTrd();
public:
    static Server& getInstance();
    static std::thread* networkTrd;
    static RakNet::RakPeerInterface* authPeer;
    static map<std::string, ServerInfo> _servers;
    static map<RakNet::RakNetGUID, ConnectedClient> _connections;
    static void start();
    static bool hasClient(RakNet::RakNetGUID);
};
Server.cpp:
C++
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
#include "Server.h"
#include "NetworkListener.h"
#include "easylogging++.h"
#include "ConfigLoader.h"
 
std::thread* Server::networkTrd = nullptr;
RakNet::RakPeerInterface* Server::authPeer = nullptr;
map<std::string, ServerInfo> Server::_servers;
map<RakNet::RakNetGUID, ConnectedClient> Server::_connections;
 
Server& Server::getInstance(){
    static Server instance;
    return instance;
}
 
bool Server::hasClient(RakNet::RakNetGUID guid)
{
    for (map<RakNet::RakNetGUID, ConnectedClient>::iterator ii = Server::getInstance()._connections.begin(); ii != Server::getInstance()._connections.end(); ++ii)
    {
        if ((*ii).first == guid) {
            return true;
        }
    }
    return false;
}
 
void Server::startNetworkTrd()
{
    authPeer = RakNet::RakPeerInterface::GetInstance();
    RakNet::Packet *packet;
 
    RakNet::SocketDescriptor sd(ConfigLoader::getIntVal("Network-PoolerPort"), 0);
    Server::getInstance().authPeer->Startup(ConfigLoader::getIntVal("Network-MaxCons"), &sd, 1);
 
    LOG(INFO) << "Starting the authorization server...";
 
    Server::getInstance().authPeer->SetMaximumIncomingConnections(ConfigLoader::getIntVal("Network-MaxCons"));
 
    LOG(INFO) << "Server has been started! Listening for conections...";
 
    while (1)
    {
        Sleep(0);
        for (packet = Server::getInstance().authPeer->Receive(); packet; Server::getInstance().authPeer->DeallocatePacket(packet), packet = Server::getInstance().authPeer->Receive())
        {
            NetworkListener::getInstance().handle(packet);
        }
    }
 
 
    RakNet::RakPeerInterface::DestroyInstance(Server::getInstance().authPeer);
}
 
void Server::start(){
    std::thread trs(startNetworkTrd);
    networkTrd = &trs;
}
Добавлено через 27 секунд
Вопрос о синглтоне снят?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru