summaryrefslogtreecommitdiff
path: root/src/chatServer.cpp
blob: 70504f99fdc47b1ccc0f120e9af496539bd7ba07 (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
38
39
40
41
42
43
44
#include "chatServer.hpp"
#include "server.hpp"
#include "sessionManager.hpp"
#include "chatManager.hpp"
#include "log.hpp"

CChatServer::CChatServer() {
  log(LOG, "ChatServer: initialized");
};

CChatServer::~CChatServer() {
  cleanup();
  log(SYS, "ChatServer: bye");
}

void CChatServer::cleanup() {
  g_pChatManager.reset();
  // if (m_sessionThread.joinable())
    // m_sessionThread.join();
  g_pSessionManager.reset();
  g_pServer.reset();
}

void CChatServer::initManagers() {
  log(LOG, "ChatServer: initializing managers");
  log(LOG, "Creating Server");
  g_pServer		  = std::make_unique<CServer>(8080);
  log(LOG, "Creating SessionManager");
	g_pSessionManager = std::make_shared<CSessionManager>();
  log(LOG, "Creating ChatManager");
  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::run, g_pSessionManager.get());
  m_sessionThread.detach();

  while (true) {
  }
}