mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-04-27 07:48:01 -07:00
more ISL code: join, leave, and userMessage work on both sides
This commit is contained in:
parent
5963c2239c
commit
0ae18d7b2e
16 changed files with 363 additions and 112 deletions
|
|
@ -22,6 +22,7 @@
|
|||
#include "server_counter.h"
|
||||
#include "server_room.h"
|
||||
#include "server_protocolhandler.h"
|
||||
#include "server_remoteuserinterface.h"
|
||||
#include "pb/event_user_joined.pb.h"
|
||||
#include "pb/event_user_left.pb.h"
|
||||
#include "pb/event_list_rooms.pb.h"
|
||||
|
|
@ -100,7 +101,7 @@ AuthenticationResult Server::loginUser(Server_ProtocolHandler *session, QString
|
|||
for (int i = 0; i < clients.size(); ++i)
|
||||
if (clients[i]->getAcceptsUserListChanges())
|
||||
clients[i]->sendProtocolItem(*se);
|
||||
serverMutex.unlock();
|
||||
locker.unlock();
|
||||
|
||||
sendIslMessage(*se);
|
||||
delete se;
|
||||
|
|
@ -139,6 +140,36 @@ void Server::removeClient(Server_ProtocolHandler *client)
|
|||
qDebug() << "Server::removeClient:" << clients.size() << "clients; " << users.size() << "users left";
|
||||
}
|
||||
|
||||
void Server::externalUserJoined(ServerInfo_User userInfo)
|
||||
{
|
||||
// This function is always called from the main thread via signal/slot.
|
||||
QMutexLocker locker(&serverMutex);
|
||||
|
||||
externalUsers.insert(QString::fromStdString(userInfo.name()), new Server_RemoteUserInterface(this, ServerInfo_User_Container(userInfo)));
|
||||
|
||||
Event_UserJoined event;
|
||||
event.mutable_user_info()->CopyFrom(userInfo);
|
||||
SessionEvent *se = Server_ProtocolHandler::prepareSessionEvent(event);
|
||||
for (int i = 0; i < clients.size(); ++i)
|
||||
if (clients[i]->getAcceptsUserListChanges())
|
||||
clients[i]->sendProtocolItem(*se);
|
||||
}
|
||||
|
||||
void Server::externalUserLeft(QString userName)
|
||||
{
|
||||
// This function is always called from the main thread via signal/slot.
|
||||
QMutexLocker locker(&serverMutex);
|
||||
|
||||
delete externalUsers.take(userName);
|
||||
|
||||
Event_UserLeft event;
|
||||
event.set_name(userName.toStdString());
|
||||
SessionEvent *se = Server_ProtocolHandler::prepareSessionEvent(event);
|
||||
for (int i = 0; i < clients.size(); ++i)
|
||||
if (clients[i]->getAcceptsUserListChanges())
|
||||
clients[i]->sendProtocolItem(*se);
|
||||
}
|
||||
|
||||
void Server::broadcastRoomUpdate()
|
||||
{
|
||||
QMutexLocker locker(&serverMutex);
|
||||
|
|
@ -184,6 +215,15 @@ int Server::getGamesCount() const
|
|||
return result;
|
||||
}
|
||||
|
||||
void Server::sendIslMessage(const Response &item, int serverId)
|
||||
{
|
||||
IslMessage msg;
|
||||
msg.set_message_type(IslMessage::RESPONSE);
|
||||
msg.mutable_response()->CopyFrom(item);
|
||||
|
||||
doSendIslMessage(msg, serverId);
|
||||
}
|
||||
|
||||
void Server::sendIslMessage(const SessionEvent &item, int serverId)
|
||||
{
|
||||
IslMessage msg;
|
||||
|
|
@ -192,3 +232,21 @@ void Server::sendIslMessage(const SessionEvent &item, int serverId)
|
|||
|
||||
doSendIslMessage(msg, serverId);
|
||||
}
|
||||
|
||||
void Server::sendIslMessage(const GameEventContainer &item, int serverId)
|
||||
{
|
||||
IslMessage msg;
|
||||
msg.set_message_type(IslMessage::GAME_EVENT_CONTAINER);
|
||||
msg.mutable_game_event_container()->CopyFrom(item);
|
||||
|
||||
doSendIslMessage(msg, serverId);
|
||||
}
|
||||
|
||||
void Server::sendIslMessage(const RoomEvent &item, int serverId)
|
||||
{
|
||||
IslMessage msg;
|
||||
msg.set_message_type(IslMessage::ROOM_EVENT);
|
||||
msg.mutable_room_event()->CopyFrom(item);
|
||||
|
||||
doSendIslMessage(msg, serverId);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue