#include "Connection.h" #include #include #include #include #include void Connection::p_HandleError(){ std::cout << "an error occured during execution" << std::endl; switch (error) { case ErrorTypes::socket_creation: perror("error while trying to create a file descriptor"); break; case ErrorTypes::get_ip: perror("error while trying to get ip"); break; case ErrorTypes::connect: perror("error while trying to connect"); break; default: std::cerr << "An unknown error occured" << std::endl; } } int Connection::status(){ return static_cast(error); } Connection::Connection(std::string server_ip, int port){ fd = socket(AF_INET, SOCK_STREAM, 0); if (fd < 0){ error = ErrorTypes::socket_creation; } in_addr in_a; if(!inet_aton(server_ip.data(), &in_a)){ error = ErrorTypes::get_ip; } sockaddr_in addr({ AF_INET, htons(port), in_a }); if(connect(fd, (sockaddr*) &addr, sizeof(addr)) != 0){ error = ErrorTypes::connect; } } Connection::~Connection(){ close(fd); } bool Connection::send(std::vector payloads){ for (Payload& p : payloads) { ::send(fd, p.getData() , p.getSize(), 0); } return true; } Payload Connection::recv(){ Payload ret; char temp[100]; memset(temp, 0, 100); ssize_t size; while((size = ::recv(fd, temp, sizeof(temp), 0)) > 0){ for(char& in: temp){ ret.push_char(in); } } return ret; }