Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Donald Haase
Cockatrice
Commits
ce642e30
Commit
ce642e30
authored
Feb 15, 2013
by
Max-Wilhelm Bruker
Browse files
don't use Server_Room::getInfo when updating
parent
7a30b827
Changes
4
Hide whitespace changes
Inline
Side-by-side
cockatrice/src/tab_server.cpp
View file @
ce642e30
...
...
@@ -76,8 +76,10 @@ void RoomSelector::processListRoomsEvent(const Event_ListRooms &event)
twi
->
setData
(
0
,
Qt
::
DisplayRole
,
QString
::
fromStdString
(
room
.
name
()));
if
(
room
.
has_description
())
twi
->
setData
(
1
,
Qt
::
DisplayRole
,
QString
::
fromStdString
(
room
.
description
()));
twi
->
setData
(
2
,
Qt
::
DisplayRole
,
room
.
player_count
());
twi
->
setData
(
3
,
Qt
::
DisplayRole
,
room
.
game_count
());
if
(
room
.
has_player_count
())
twi
->
setData
(
2
,
Qt
::
DisplayRole
,
room
.
player_count
());
if
(
room
.
has_game_count
())
twi
->
setData
(
3
,
Qt
::
DisplayRole
,
room
.
game_count
());
return
;
}
}
...
...
@@ -91,6 +93,7 @@ void RoomSelector::processListRoomsEvent(const Event_ListRooms &event)
twi
->
setData
(
3
,
Qt
::
DisplayRole
,
room
.
game_count
());
twi
->
setTextAlignment
(
2
,
Qt
::
AlignRight
);
twi
->
setTextAlignment
(
3
,
Qt
::
AlignRight
);
roomList
->
addTopLevelItem
(
twi
);
if
(
room
.
has_auto_join
())
if
(
room
.
auto_join
())
...
...
common/server_room.cpp
View file @
ce642e30
...
...
@@ -39,15 +39,13 @@ Server *Server_Room::getServer() const
return
static_cast
<
Server
*>
(
parent
());
}
const
ServerInfo_Room
&
Server_Room
::
getInfo
(
ServerInfo_Room
&
result
,
bool
complete
,
bool
showGameTypes
,
bool
updating
,
bool
includeExternalData
)
const
const
ServerInfo_Room
&
Server_Room
::
getInfo
(
ServerInfo_Room
&
result
,
bool
complete
,
bool
showGameTypes
,
bool
includeExternalData
)
const
{
result
.
set_room_id
(
id
);
if
(
!
updating
)
{
result
.
set_name
(
name
.
toStdString
());
result
.
set_description
(
description
.
toStdString
());
result
.
set_auto_join
(
autoJoin
);
}
result
.
set_name
(
name
.
toStdString
());
result
.
set_description
(
description
.
toStdString
());
result
.
set_auto_join
(
autoJoin
);
gamesLock
.
lockForRead
();
result
.
set_game_count
(
games
.
size
()
+
externalGames
.
size
());
...
...
@@ -101,26 +99,44 @@ void Server_Room::addClient(Server_ProtocolHandler *client)
event
.
mutable_user_info
()
->
CopyFrom
(
client
->
copyUserInfo
(
false
));
sendRoomEvent
(
prepareRoomEvent
(
event
));
ServerInfo_Room
roomInfo
;
roomInfo
.
set_room_id
(
id
);
usersLock
.
lockForWrite
();
users
.
insert
(
QString
::
fromStdString
(
client
->
getUserInfo
()
->
name
()),
client
);
roomInfo
.
set_player_count
(
users
.
size
()
+
externalUsers
.
size
());
usersLock
.
unlock
();
ServerInfo_Room
roomInfo
;
emit
roomInfoChanged
(
getInfo
(
roomInfo
,
false
,
false
,
true
));
// XXX This can be removed during the next client update.
gamesLock
.
lockForRead
();
roomInfo
.
set_game_count
(
games
.
size
()
+
externalGames
.
size
());
gamesLock
.
unlock
();
// -----------
emit
roomInfoChanged
(
roomInfo
);
}
void
Server_Room
::
removeClient
(
Server_ProtocolHandler
*
client
)
{
usersLock
.
lockForWrite
();
users
.
remove
(
QString
::
fromStdString
(
client
->
getUserInfo
()
->
name
()));
ServerInfo_Room
roomInfo
;
roomInfo
.
set_room_id
(
id
);
roomInfo
.
set_player_count
(
users
.
size
()
+
externalUsers
.
size
());
usersLock
.
unlock
();
Event_LeaveRoom
event
;
event
.
set_name
(
client
->
getUserInfo
()
->
name
());
sendRoomEvent
(
prepareRoomEvent
(
event
));
ServerInfo_Room
roomInfo
;
emit
roomInfoChanged
(
getInfo
(
roomInfo
,
false
,
false
,
true
));
// XXX This can be removed during the next client update.
gamesLock
.
lockForRead
();
roomInfo
.
set_game_count
(
games
.
size
()
+
externalGames
.
size
());
gamesLock
.
unlock
();
// -----------
emit
roomInfoChanged
(
roomInfo
);
}
void
Server_Room
::
addExternalUser
(
const
ServerInfo_User
&
userInfo
)
...
...
@@ -131,43 +147,52 @@ void Server_Room::addExternalUser(const ServerInfo_User &userInfo)
event
.
mutable_user_info
()
->
CopyFrom
(
userInfoContainer
.
copyUserInfo
(
false
));
sendRoomEvent
(
prepareRoomEvent
(
event
),
false
);
ServerInfo_Room
roomInfo
;
roomInfo
.
set_room_id
(
id
);
usersLock
.
lockForWrite
();
externalUsers
.
insert
(
QString
::
fromStdString
(
userInfo
.
name
()),
userInfoContainer
);
roomInfo
.
set_player_count
(
users
.
size
()
+
externalUsers
.
size
());
usersLock
.
unlock
();
ServerInfo_Room
roomInfo
;
emit
roomInfoChanged
(
getInfo
(
roomInfo
,
false
,
false
,
true
));
emit
roomInfoChanged
(
roomInfo
);
}
void
Server_Room
::
removeExternalUser
(
const
QString
&
name
)
{
// This function is always called from the Server thread with server->roomsMutex locked.
ServerInfo_Room
roomInfo
;
roomInfo
.
set_room_id
(
id
);
usersLock
.
lockForWrite
();
if
(
externalUsers
.
contains
(
name
))
externalUsers
.
remove
(
name
);
roomInfo
.
set_player_count
(
users
.
size
()
+
externalUsers
.
size
());
usersLock
.
unlock
();
Event_LeaveRoom
event
;
event
.
set_name
(
name
.
toStdString
());
sendRoomEvent
(
prepareRoomEvent
(
event
),
false
);
ServerInfo_Room
roomInfo
;
emit
roomInfoChanged
(
getInfo
(
roomInfo
,
false
,
false
,
true
));
emit
roomInfoChanged
(
roomInfo
);
}
void
Server_Room
::
updateExternalGameList
(
const
ServerInfo_Game
&
gameInfo
)
{
// This function is always called from the Server thread with server->roomsMutex locked.
ServerInfo_Room
roomInfo
;
roomInfo
.
set_room_id
(
id
);
gamesLock
.
lockForWrite
();
if
(
!
gameInfo
.
has_player_count
()
&&
externalGames
.
contains
(
gameInfo
.
game_id
()))
externalGames
.
remove
(
gameInfo
.
game_id
());
else
externalGames
.
insert
(
gameInfo
.
game_id
(),
gameInfo
);
roomInfo
.
set_game_count
(
games
.
size
()
+
externalGames
.
size
());
gamesLock
.
unlock
();
broadcastGameListUpdate
(
gameInfo
,
false
);
ServerInfo_Room
roomInfo
;
emit
roomInfoChanged
(
getInfo
(
roomInfo
,
false
,
false
,
true
));
emit
roomInfoChanged
(
roomInfo
);
}
Response
::
ResponseCode
Server_Room
::
processJoinGameCommand
(
const
Command_JoinGame
&
cmd
,
ResponseContainer
&
rc
,
Server_AbstractUserInterface
*
userInterface
)
...
...
@@ -233,6 +258,9 @@ void Server_Room::broadcastGameListUpdate(const ServerInfo_Game &gameInfo, bool
void
Server_Room
::
addGame
(
Server_Game
*
game
)
{
ServerInfo_Room
roomInfo
;
roomInfo
.
set_room_id
(
id
);
gamesLock
.
lockForWrite
();
connect
(
game
,
SIGNAL
(
gameInfoChanged
(
ServerInfo_Game
)),
this
,
SLOT
(
broadcastGameListUpdate
(
ServerInfo_Game
)));
...
...
@@ -240,12 +268,18 @@ void Server_Room::addGame(Server_Game *game)
games
.
insert
(
game
->
getGameId
(),
game
);
ServerInfo_Game
gameInfo
;
game
->
getInfo
(
gameInfo
);
roomInfo
.
set_game_count
(
games
.
size
()
+
externalGames
.
size
());
game
->
gameMutex
.
unlock
();
gamesLock
.
unlock
();
// XXX This can be removed during the next client update.
usersLock
.
lockForRead
();
roomInfo
.
set_player_count
(
users
.
size
()
+
externalUsers
.
size
());
usersLock
.
unlock
();
// -----------
emit
gameListChanged
(
gameInfo
);
ServerInfo_Room
roomInfo
;
emit
roomInfoChanged
(
getInfo
(
roomInfo
,
false
,
false
,
true
));
emit
roomInfoChanged
(
roomInfo
);
}
void
Server_Room
::
removeGame
(
Server_Game
*
game
)
...
...
@@ -262,7 +296,16 @@ void Server_Room::removeGame(Server_Game *game)
games
.
remove
(
game
->
getGameId
());
ServerInfo_Room
roomInfo
;
emit
roomInfoChanged
(
getInfo
(
roomInfo
,
false
,
false
,
true
));
roomInfo
.
set_room_id
(
id
);
roomInfo
.
set_game_count
(
games
.
size
()
+
externalGames
.
size
());
// XXX This can be removed during the next client update.
usersLock
.
lockForRead
();
roomInfo
.
set_player_count
(
users
.
size
()
+
externalUsers
.
size
());
usersLock
.
unlock
();
// -----------
emit
roomInfoChanged
(
roomInfo
);
}
int
Server_Room
::
getGamesCreatedByUser
(
const
QString
&
userName
)
const
...
...
common/server_room.h
View file @
ce642e30
...
...
@@ -55,7 +55,7 @@ public:
const
QMap
<
int
,
Server_Game
*>
&
getGames
()
const
{
return
games
;
}
const
QMap
<
int
,
ServerInfo_Game
>
&
getExternalGames
()
const
{
return
externalGames
;
}
Server
*
getServer
()
const
;
const
ServerInfo_Room
&
getInfo
(
ServerInfo_Room
&
result
,
bool
complete
,
bool
showGameTypes
=
false
,
bool
updating
=
false
,
bool
includeExternalData
=
true
)
const
;
const
ServerInfo_Room
&
getInfo
(
ServerInfo_Room
&
result
,
bool
complete
,
bool
showGameTypes
=
false
,
bool
includeExternalData
=
true
)
const
;
int
getGamesCreatedByUser
(
const
QString
&
name
)
const
;
QList
<
ServerInfo_Game
>
getGamesOfUser
(
const
QString
&
name
)
const
;
...
...
servatrice/src/isl_interface.cpp
View file @
ce642e30
...
...
@@ -129,7 +129,7 @@ void IslInterface::initServer()
Server_Room
*
room
=
roomIterator
.
next
().
value
();
room
->
usersLock
.
lockForRead
();
room
->
gamesLock
.
lockForRead
();
room
->
getInfo
(
*
event
.
add_room_list
(),
true
,
true
,
false
,
false
);
room
->
getInfo
(
*
event
.
add_room_list
(),
true
,
true
,
false
);
}
IslMessage
message
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment