#ifndef CLIENT_HPP # define CLIENT_HPP #include "webserv.hpp" #include "Autoindex.hpp" #include "ServerConfig.hpp" #include "Request.hpp" #include "Response.hpp" #include "Config.hpp" #include class Client { private: Request _request; Response _response; ServerConfig *_config; private: int _ret; int _fd; struct timeval _time; unsigned int _sended; char *_buff; std::string _stringBUF; std::string _bodyToSend; std::string _headerToSend; std::string *_toSend; char *_to_send_char; std::map _errorCode; public: bool allRead; enum e_req_status { READING, WRITING, ENDED } req_status; struct serverListen connected_to; int serverfd; size_t readn; size_t left; bool done; size_t response_len; public: Request getRequest(void); Response getResponse(void); char *getStrToSend(void); unsigned int getCounter(void) const; void setRawData(char *); void setRawData(std::string &); void setFd(int); int getFd(void); unsigned int getRecvCounter(void) const; bool isEmpty(void); bool TimeToDie(void); void updateTimeToDie(void); public: int parseRequest(void); void printClientInfo(void); bool readyToSend(void); bool allSended(void); bool allRecved(void); bool isChunked(void); int sendResponse(int fd); int sendData(int , std::string data); void clear(void); void increaseCounter(void); void increaseRecvCounter(unsigned int n); std::string generateRespons(void); /* std::string generateRespons(serverListen &, std::vector &); */ std::string generateRespons(std::vector &); /* Client(); */ Client(struct serverListen servers_config); Client(char *); Client(char *, ServerConfig *config); ~Client(); }; #endif