summaryrefslogtreecommitdiff
path: root/src/chatServer.cpp
blob: 2f6ddf5f2dd374badb253c4197fb43eab0a39a65 (plain)
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
#include "chatServer.hpp"
#include "server.hpp"
#include "sessionManager.hpp"
#include "chatManager.hpp"

CChatServer::CChatServer() = default;

CChatServer::~CChatServer() {
  cleanup();
}

void CChatServer::cleanup() {
  g_pChatManager.reset();
  g_pSessionManager.reset();
  g_pServer.reset();

  if (m_sessionThread.joinable())
    m_sessionThread.join();
}

void CChatServer::initManagers() {
  g_pServer		  = std::make_unique<CServer>(8080);
	g_pSessionManager = std::make_shared<CSessionManager>();
  g_pChatManager    = std::make_unique<CChatManager>();
}

void CChatServer::start() {
  initManagers();

  // will await while waiting for accept() to return a new client
  m_sessionThread = std::jthread(&CSessionManager::enterLoop, g_pSessionManager);
  m_sessionThread.detach();

  while (true) {
  }
}