Receive and send messages
This commit is contained in:
23
room.cpp
23
room.cpp
@@ -18,6 +18,10 @@ namespace Yc {
|
||||
thread = new std::thread(&Room::run, this);
|
||||
}
|
||||
|
||||
Room::~Room() {
|
||||
delete thread;
|
||||
}
|
||||
|
||||
void Room::run() {
|
||||
while (!_stop) {
|
||||
if (_msgQueue.size() > 0 && !_blocked) {
|
||||
@@ -26,12 +30,12 @@ namespace Yc {
|
||||
Message message = _msgQueue.front();
|
||||
_msgQueue.pop();
|
||||
for (auto &user: _users) {
|
||||
user.sendMsg(message.type, message.messageTr, message.userName, message.color);
|
||||
user->sendMsg(message.type, message.messageTr, message.userName, message.color);
|
||||
}
|
||||
}
|
||||
_blocked = false;
|
||||
}
|
||||
usleep(50000);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(50));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,14 +43,14 @@ namespace Yc {
|
||||
if (_password != "" && _password == _password && std::find(std::begin(_allowedUsers), std::end(_allowedUsers), _userName) == std::end(_allowedUsers)) {
|
||||
return false;
|
||||
}
|
||||
User newUser(this, _userName, color, socket);
|
||||
User *newUser = new User(this, _userName, color, socket);
|
||||
_users.push_back(newUser);
|
||||
newUser.sendMsg(User::roomList, _parent->jsonRoomList(), "", "");
|
||||
addMessage(User::system, "room_entered", newUser.name(), newUser.color());
|
||||
newUser->sendMsg(User::roomList, _parent->jsonRoomList(), "", "");
|
||||
addMessage(User::system, "room_entered", newUser->name(), newUser->color());
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Room::addUser(User user, std::string password) {
|
||||
bool Room::addUser(User *user, std::string password) {
|
||||
if (password == _password) {
|
||||
_users.push_back(user);
|
||||
return true;
|
||||
@@ -56,7 +60,7 @@ namespace Yc {
|
||||
|
||||
bool Room::userNameExists(std::string userName) {
|
||||
for (auto &user: _users) {
|
||||
if (user.name() == userName) {
|
||||
if (user->name() == userName) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -64,9 +68,10 @@ namespace Yc {
|
||||
}
|
||||
|
||||
void Room::removeUser(std::string _token) {
|
||||
for (std::vector<User>::iterator user = _users.begin(); user != _users.end(); ++user) {
|
||||
if (user->validateToken(_token)) {
|
||||
for (std::vector<User*>::iterator user = _users.begin(); user != _users.end(); ++user) {
|
||||
if ((*user)->validateToken(_token)) {
|
||||
_users.erase(user);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user