#include "socket_handler.h"

#include "routes.h"


const int BUFFER_SIZE = 4096;



int SocketHandler::working_with_client_windows(SOCKET listenSocket) {
    while (1) {
        // 6. Принятие входящего соединения
        sockaddr_in clientAddr;
        int clientAddrSize = sizeof(clientAddr);
        SOCKET clientSocket = accept(listenSocket, (struct sockaddr*)&clientAddr, &clientAddrSize);
        if (clientSocket == INVALID_SOCKET) {
            std::cerr << "Accept failed with error: " << WSAGetLastError() << "\n";
            continue;
        }
        std::cout << "Client connected!\n";

        // 7. получение данных от юзера
        char buffer[BUFFER_SIZE] = {0};
        int bytesReceived = recv(clientSocket, buffer, BUFFER_SIZE, 0);
        if (bytesReceived > 0) {
            std::string request(buffer, bytesReceived);
            std::cout << "Received request:\n" << request << "\n";

            // Обработка запроса
            std::string response = RouteHandler::get_response_by_request(request);
            std::cout << "Response:\n" << response << "\n\n";

            // Отправка ответа
            send(clientSocket, response.c_str(), response.size(), 0);
        }
        closesocket(clientSocket);
    }
    return 0;
}



int SocketHandler::working_with_client_unix() {
    return 0;
}