/
tytyshka
/
Typing_Race_Game
Обзор
Документация
Войти
/
tytyshka
/
Typing_Race_Game
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
main.cpp
67 строк
2 KB
tytyshka
Client
16 дек 2025, 21:37
16 дек 2025, 21:37
f770ab5
Код
Авторство
О чём код?
#include "acceptor.h" #include "player_session.h" #include "dispatcher.h" #include "room_manager.h" #include "db.h" #include <iostream> #include <memory> #include <vector> #include <mutex> DBManager* g_db = nullptr; // global db pointer used by GameInstance int main(int argc, char** argv) { int port = 9000; if (argc > 1) port = atoi(argv[1]); RoomManager room_manager; std::string room_id = room_manager.create_room( "test", 4, true, 0 ); std::cout << "[MAIN] Created room id = " << room_id << std::endl; MessageDispatcher dispatcher(room_manager); // init DB DBManager db; if (!db.open("scores.db")) { std::cerr << "Failed to open DB\n"; } else { g_db = &db; } std::vector<std::shared_ptr<PlayerSession>> sessions; std::mutex sessions_mtx; Acceptor acceptor(port, [&](SOCKET sockfd) { std::cout << "[Main] new connection fd=" << sockfd << "\n"; auto sess = std::make_shared<PlayerSession>(sockfd, &dispatcher); { std::lock_guard<std::mutex> lk(sessions_mtx); sessions.push_back(sess); } sess->start(); }); if (!acceptor.start()) { std::cerr << "Failed to start acceptor\n"; return 1; } std::cout << "Server running. Press Enter to stop.\n"; std::string line; std::getline(std::cin, line); acceptor.stop(); { std::lock_guard<std::mutex> lk(sessions_mtx); for (auto& s : sessions) s->stop(); } db.close(); std::cout << "Server stopped.\n"; return 0; }