mirror of
https://github.com/3lswear/webserv.git
synced 2025-10-29 05:17:59 +03:00
feat: pass servers ip, port to client
This commit is contained in:
@@ -2,13 +2,15 @@
|
|||||||
|
|
||||||
//-------------------------------------------------Constructors---------------------------------------
|
//-------------------------------------------------Constructors---------------------------------------
|
||||||
|
|
||||||
Client::Client()
|
Client::Client(struct serverListen servers_config)
|
||||||
{
|
{
|
||||||
allRead = false;
|
allRead = false;
|
||||||
done = false;
|
done = false;
|
||||||
this->_fd = -1;
|
this->_fd = -1;
|
||||||
this->_sended = 0;
|
this->_sended = 0;
|
||||||
_to_send_char = NULL;
|
_to_send_char = NULL;
|
||||||
|
|
||||||
|
connected_to = servers_config;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client::Client(char *str)
|
Client::Client(char *str)
|
||||||
@@ -157,12 +159,12 @@ std::string Client::generateRespons(void)
|
|||||||
return (_toSend);
|
return (_toSend);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Client::generateRespons(serverListen &reqData, std::vector<ServerConfig *> &configs)
|
std::string Client::generateRespons(std::vector<ServerConfig *> &configs)
|
||||||
{
|
{
|
||||||
size_t len;
|
size_t len;
|
||||||
location *tmp;
|
location *tmp;
|
||||||
|
|
||||||
_config = Config::getConfig(configs, _request, reqData);
|
_config = Config::getConfig(configs, _request, connected_to);
|
||||||
tmp = Config::getLocation(_config->getLocations(), _request.getURI());
|
tmp = Config::getLocation(_config->getLocations(), _request.getURI());
|
||||||
_response.setData(_request, _config, tmp);
|
_response.setData(_request, _config, tmp);
|
||||||
_response.generate();
|
_response.generate();
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ public:
|
|||||||
ENDED
|
ENDED
|
||||||
} req_status;
|
} req_status;
|
||||||
|
|
||||||
|
struct serverListen connected_to;
|
||||||
|
|
||||||
int serverfd;
|
int serverfd;
|
||||||
size_t readn;
|
size_t readn;
|
||||||
size_t left;
|
size_t left;
|
||||||
@@ -72,9 +74,11 @@ public:
|
|||||||
void increaseCounter(void);
|
void increaseCounter(void);
|
||||||
void increaseRecvCounter(unsigned int n);
|
void increaseRecvCounter(unsigned int n);
|
||||||
std::string generateRespons(void);
|
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 *);
|
||||||
Client(char *, ServerConfig *config);
|
Client(char *, ServerConfig *config);
|
||||||
~Client();
|
~Client();
|
||||||
|
|||||||
@@ -235,20 +235,23 @@ void Server::start(void)
|
|||||||
int client_sock = accept(fd,
|
int client_sock = accept(fd,
|
||||||
(sock_it->second).getSockaddr(), (sock_it->second).getSocklen());
|
(sock_it->second).getSockaddr(), (sock_it->second).getSocklen());
|
||||||
if (client_sock > 0)
|
if (client_sock > 0)
|
||||||
|
{
|
||||||
|
client_map[client_sock] = new Client((sock_it->second).min_config);
|
||||||
add_to_epoll_list(client_sock, client_events);
|
add_to_epoll_list(client_sock, client_events);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
throw std::logic_error("accept didnt work");
|
throw std::logic_error("accept didnt work");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (client_map.find(fd) == client_map.end())
|
/* if (client_map.find(fd) == client_map.end()) */
|
||||||
client_map[fd] = new Client();
|
/* client_map[fd] = new Client(); */
|
||||||
if (events & EPOLLIN)
|
if (events & EPOLLIN)
|
||||||
{
|
{
|
||||||
readSocket(*client_map[fd], fd);
|
readSocket(*client_map[fd], fd);
|
||||||
if (client_map[fd]->readyToSend())
|
if (client_map[fd]->readyToSend())
|
||||||
{
|
{
|
||||||
client_map[fd]->generateRespons();
|
client_map[fd]->generateRespons(_configs);
|
||||||
|
|
||||||
struct epoll_event ev;
|
struct epoll_event ev;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user