24#include <boost/asio.hpp>
30#include <unordered_set>
55using boost::asio::ip::tcp;
89 Server(boost::asio::io_context& io_context,
91 std::shared_ptr<RepositoryManager> repo_manager,
92 std::shared_ptr<ISubject> event_bus);
145 unsigned short getPort()
const;
179 void handleAccept(std::shared_ptr<tcp::socket> socket,
const boost::system::error_code& error);
190 void spawnClientHandler(std::shared_ptr<tcp::socket> socket);
201 void handleClient(std::shared_ptr<tcp::socket> socket);
214 std::string determineServiceType(std::shared_ptr<tcp::socket> socket);
229 bool executeProtocol(std::shared_ptr<tcp::socket> socket,
const std::string& service_type);
240 void removeClientConnection(std::shared_ptr<tcp::socket> socket);
251 void notifyServerEvent(
const std::string& message)
const;
262 void notifyClientConnection(
const std::string& message)
const;
273 void notifyServerError(
const std::string& message)
const;
283 boost::asio::io_context& io_context_;
292 tcp::acceptor acceptor_;
301 std::shared_ptr<RepositoryManager> repository_manager_;
310 std::shared_ptr<ISubject> event_bus_;
319 std::atomic<bool> is_running_;
328 std::unordered_set<std::shared_ptr<tcp::socket>> active_connections_;
337 mutable std::mutex connections_mutex_;
Определяет структуру события, используемую для уведомлений по шаблону Observer.
Определяет интерфейс для компонента Subject (Издатель) шаблона Observer.
Объявление класса RemoteProtocol для обработки протокола удаленной связи.
Declaration of the RepositoryManager class, managing all repository-level file operations.
~Server()
Деструктор - останавливает сервер и освобождает ресурсы.
Определения Server.cxx:36
void stop()
Останавливает сервер корректно.
Определения Server.cxx:65
bool isRunning() const
Проверяет, запущен ли сервер в данный момент.
Определения Server.cxx:98
bool start()
Запускает сервер и начинает принимать соединения.
Определения Server.cxx:42
size_t getActiveConnections() const
Получает количество текущих активных клиентских соединений.
Определения Server.cxx:113
Server(boost::asio::io_context &io_context, unsigned short port, std::shared_ptr< RepositoryManager > repo_manager, std::shared_ptr< ISubject > event_bus)
Конструирует Server с указанными зависимостями.
Определения Server.cxx:23
unsigned short getPort() const
Получает номер порта, который прослушивает сервер.
Определения Server.cxx:103
Основные структуры данных СКВ и модель объектов.
Серверные компоненты и команды администрирования.
Компоненты сервисного слоя и инфраструктурные сервисы.