feat: pass servers ip, port to client

This commit is contained in:
3lswear
2022-02-08 21:48:09 +03:00
parent 60a354d8a6
commit 0a791b2303
3 changed files with 17 additions and 8 deletions

View File

@@ -2,13 +2,15 @@
//-------------------------------------------------Constructors---------------------------------------
Client::Client()
Client::Client(struct serverListen servers_config)
{
allRead = false;
done = false;
this->_fd = -1;
this->_sended = 0;
_to_send_char = NULL;
connected_to = servers_config;
}
Client::Client(char *str)
@@ -157,12 +159,12 @@ std::string Client::generateRespons(void)
return (_toSend);
}
std::string Client::generateRespons(serverListen &reqData, std::vector<ServerConfig *> &configs)
std::string Client::generateRespons(std::vector<ServerConfig *> &configs)
{
size_t len;
location *tmp;
_config = Config::getConfig(configs, _request, reqData);
_config = Config::getConfig(configs, _request, connected_to);
tmp = Config::getLocation(_config->getLocations(), _request.getURI());
_response.setData(_request, _config, tmp);
_response.generate();

View File

@@ -39,6 +39,8 @@ public:
ENDED
} req_status;
struct serverListen connected_to;
int serverfd;
size_t readn;
size_t left;
@@ -72,9 +74,11 @@ public:
void increaseCounter(void);
void increaseRecvCounter(unsigned int n);
std::string generateRespons(void);
std::string generateRespons(serverListen &, std::vector<ServerConfig *> &);
/* std::string generateRespons(serverListen &, std::vector<ServerConfig *> &); */
std::string generateRespons(std::vector<ServerConfig *> &);
Client();
/* Client(); */
Client(struct serverListen servers_config);
Client(char *);
Client(char *, ServerConfig *config);
~Client();

View File

@@ -235,20 +235,23 @@ void Server::start(void)
int client_sock = accept(fd,
(sock_it->second).getSockaddr(), (sock_it->second).getSocklen());
if (client_sock > 0)
{
client_map[client_sock] = new Client((sock_it->second).min_config);
add_to_epoll_list(client_sock, client_events);
}
else
throw std::logic_error("accept didnt work");
}
else
{
if (client_map.find(fd) == client_map.end())
client_map[fd] = new Client();
/* if (client_map.find(fd) == client_map.end()) */
/* client_map[fd] = new Client(); */
if (events & EPOLLIN)
{
readSocket(*client_map[fd], fd);
if (client_map[fd]->readyToSend())
{
client_map[fd]->generateRespons();
client_map[fd]->generateRespons(_configs);
struct epoll_event ev;