Skip to content

Commit 08db250

Browse files
committed
change users container type in channels
1 parent 811dde3 commit 08db250

4 files changed

Lines changed: 15 additions & 11 deletions

File tree

Channel.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "Channel.hpp"
22

33
Channel::Channel(const std::string &name, const std::string &creator, const std::string &pass = "") :
4-
name(name), mainOperator(creator), pass(pass), userLimit(10), flags(0)
4+
name(name), pass(pass), userLimit(10), flags(0)
55
{}
66

77
Channel::~Channel()
@@ -55,10 +55,12 @@ void Channel::connect(const User &user)
5555
for (size_t i = 0; i < banMasks.size(); i++)
5656
if (isBanned(banMasks[i], user.getPrefix()))
5757
return ; //throw 474 ERR_BANNEDFROMCHAN
58-
for (size_t i = 0; i < users.size(); i++)
59-
if (users[i].getPrefix() == user.getPrefix())
58+
std::map<User, size_t>::iterator begin = users.begin();
59+
std::map<User, size_t>::iterator end = users.end();
60+
for (; begin != end; ++begin)
61+
if ((*begin).first.getPrefix() == user.getPrefix())
6062
return ;
61-
users.push_back(user);
63+
users[user] = 0;
6264
}
6365

6466
void Channel::setFlag(unsigned char flag)
@@ -75,6 +77,8 @@ void Channel::sendMessage(const std::string &message, const User &from)
7577
{
7678
std::string msg;
7779
msg += ":" + from.getPrefix() + " " + message;
78-
for (size_t i = 0; i < users.size(); i++)
79-
users[i].sendMessage(msg);
80+
std::map<User, size_t>::iterator begin = users.begin();
81+
std::map<User, size_t>::iterator end = users.end();
82+
for (; begin != end; ++begin)
83+
(*begin).first.sendMessage(msg);
8084
}

Channel.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
# include <string>
55
# include <vector>
6+
# include <map>
67
# include "User.hpp"
78

89
# define PRIVATE 0b00001
@@ -15,13 +16,12 @@ class Channel
1516
{
1617
private:
1718
std::string name;
18-
std::string mainOperator;
19-
std::string operators;
19+
std::vector<std::string> operators;
2020
std::string pass;
2121
unsigned short userLimit;
2222
std::vector<std::string> banMasks;
2323
unsigned char flags;
24-
std::vector<User> users;
24+
std::map<User, size_t> users;
2525
std::string topic;
2626
public:
2727
Channel(const std::string &name, const std::string &creator, const std::string &pass = "");

User.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ int User::hadleMessages()
178178
return (0);
179179
}
180180

181-
void User::sendMessage(const std::string &msg)
181+
void User::sendMessage(const std::string &msg) const
182182
{
183183
if (msg.size() > 0)
184184
send(sockfd, msg.c_str(), msg.size(), 0);

User.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class User
6161
void readMessage();
6262
std::vector<std::string> parseCommand();
6363
int hadleMessages();
64-
void sendMessage(const std::string &msg);
64+
void sendMessage(const std::string &msg) const;
6565
};
6666

6767
#endif

0 commit comments

Comments
 (0)