Skip to content

Commit b667ad2

Browse files
Serena Gandum--DiagneSerena Gandum--Diagne
authored andcommitted
delete users in channels
1 parent 9e3c376 commit b667ad2

File tree

5 files changed

+17
-2
lines changed

5 files changed

+17
-2
lines changed

headers/Channels.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class Channel
3737
~Channel();
3838
std::string getname();
3939
unsigned int get_participants();
40-
std::vector<Client> get_clients();
40+
std::vector<Client>& get_clients();
4141
bool add_participant(Client *client);
4242
void remove_participant(Client &client);
4343
void send_to_channel(std::string msg, std::string nick);

headers/IrcServer.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ class IrcServer
9191
void closeAll();
9292
bool checkChannelNames(std::string _name);
9393
bool invalidChannelCharacter(std::string _nickname);
94+
void deleteUserInChannel(std::string _nickname);
9495
};
9596

9697
bool isInt(const char* str_nb);

srcs/Channels.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ unsigned int Channel::get_participants()
4141
return (this->participant);
4242
}
4343

44-
std::vector<Client> Channel::get_clients()
44+
std::vector<Client>& Channel::get_clients()
4545
{
4646
return (this->clients);
4747
}

srcs/IrcServer.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ void IrcServer::deleteClients(std::vector<int>& _todelete)
202202
std::sort(_todelete.begin(), _todelete.end());
203203
for (it = _todelete.rbegin() ; it != _todelete.rend() ; it++)
204204
{
205+
deleteUserInChannel(clients[*it - 1]->getNickname());
205206
close(fd_sockets[*it].fd);
206207
fd_sockets.erase(fd_sockets.begin() + *it);
207208
addr_sockets.erase(addr_sockets.begin() + *it);

srcs/utils.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,16 @@ bool IrcServer::checkChannelNames(std::string _name)
8484
return (false);
8585
return (true);
8686
}
87+
88+
void IrcServer::deleteUserInChannel(std::string _nickname)
89+
{
90+
std::vector<Channel*>::iterator it;
91+
int pos;
92+
93+
for (it = channels.begin() ; it != channels.end() ; it++)
94+
{
95+
pos = searchUserInChannel(_nickname, (*it)->getname());
96+
if (pos != -1)
97+
(*it)->deleteMember(_nickname);
98+
}
99+
}

0 commit comments

Comments
 (0)