Adding country information of player (optional).

This commit is contained in:
lotodore
2010-04-01 16:20:57 +00:00
parent 2c8f8d4869
commit 2dc3ab64ec
6 changed files with 62 additions and 10 deletions
+37
View File
@@ -0,0 +1,37 @@
/***************************************************************************
* Copyright (C) 2010 by Lothar May *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
/* Server database callback for async database operations. */
#ifndef _DBDEFS_H_
#define _DBDEFS_H_
#include <string>
typedef unsigned DB_id;
#define DB_ID_INVALID 0
struct DBPlayerData
{
DB_id id;
std::string secret;
std::string language;
std::string last_login;
};
#endif
+2 -4
View File
@@ -21,11 +21,9 @@
#ifndef _SERVERDBCALLBACK_H_ #ifndef _SERVERDBCALLBACK_H_
#define _SERVERDBCALLBACK_H_ #define _SERVERDBCALLBACK_H_
#include <db/dbdefs.h>
#include <string> #include <string>
typedef unsigned DB_id;
#define DB_ID_INVALID 0
// Callback operations are posted using the io service, // Callback operations are posted using the io service,
// and will therefore be executed in the io service thread. // and will therefore be executed in the io service thread.
class ServerDBCallback class ServerDBCallback
@@ -38,7 +36,7 @@ public:
virtual void QueryError(const std::string &error) = 0; virtual void QueryError(const std::string &error) = 0;
virtual void PlayerLoginSuccess(unsigned requestId, DB_id playerId, const std::string &secret) = 0; virtual void PlayerLoginSuccess(unsigned requestId, const DBPlayerData &dbPlayerData) = 0;
virtual void PlayerLoginFailed(unsigned requestId) = 0; virtual void PlayerLoginFailed(unsigned requestId) = 0;
virtual void CreateGameSuccess(unsigned requestId, DB_id gameId) = 0; virtual void CreateGameSuccess(unsigned requestId, DB_id gameId) = 0;
+5 -5
View File
@@ -113,9 +113,9 @@ public:
LOG_ERROR("DB query error: " << error); LOG_ERROR("DB query error: " << error);
} }
virtual void PlayerLoginSuccess(unsigned requestId, DB_id dbPlayerId, const std::string &secret) virtual void PlayerLoginSuccess(unsigned requestId, const DBPlayerData &dbPlayerData)
{ {
m_server.UserValid(requestId, dbPlayerId, secret); m_server.UserValid(requestId, dbPlayerData);
} }
virtual void PlayerLoginFailed(unsigned requestId) virtual void PlayerLoginFailed(unsigned requestId)
@@ -1483,11 +1483,11 @@ ServerLobbyThread::AuthenticatePlayer(SessionWrapper session)
} }
void void
ServerLobbyThread::UserValid(unsigned playerId, DB_id dbPlayerId, const string &dbSecret) ServerLobbyThread::UserValid(unsigned playerId, const DBPlayerData &dbPlayerData)
{ {
SessionWrapper tmpSession = m_sessionManager.GetSessionByUniquePlayerId(playerId, true); SessionWrapper tmpSession = m_sessionManager.GetSessionByUniquePlayerId(playerId, true);
tmpSession.playerData->SetDBId(dbPlayerId); tmpSession.playerData->SetDBId(dbPlayerData.id);
this->AuthChallenge(tmpSession, dbSecret); this->AuthChallenge(tmpSession, dbPlayerData.secret);
} }
void void
+1 -1
View File
@@ -145,7 +145,7 @@ protected:
void InitAfterLogin(SessionWrapper session); void InitAfterLogin(SessionWrapper session);
void EstablishSession(SessionWrapper session); void EstablishSession(SessionWrapper session);
void AuthenticatePlayer(SessionWrapper session); void AuthenticatePlayer(SessionWrapper session);
void UserValid(unsigned playerId, DB_id dbPlayerId, const std::string &dbSecret); void UserValid(unsigned playerId, const DBPlayerData &dbPlayerData);
void UserInvalid(unsigned playerId); void UserInvalid(unsigned playerId);
void RequestPlayerAvatar(SessionWrapper session); void RequestPlayerAvatar(SessionWrapper session);
void TimerRemoveGame(const boost::system::error_code &ec); void TimerRemoveGame(const boost::system::error_code &ec);
+14
View File
@@ -65,6 +65,20 @@ PlayerData::SetPassword(const string &password)
m_password = password; m_password = password;
} }
std::string
PlayerData::GetCountry() const
{
boost::mutex::scoped_lock lock(m_dataMutex);
return m_country;
}
void
PlayerData::SetCountry(const std::string &country)
{
boost::mutex::scoped_lock lock(m_dataMutex);
m_country = country;
}
string string
PlayerData::GetAvatarFile() const PlayerData::GetAvatarFile() const
{ {
+3
View File
@@ -83,6 +83,8 @@ public:
void SetName(const std::string &name); void SetName(const std::string &name);
std::string GetPassword() const; std::string GetPassword() const;
void SetPassword(const std::string &password); void SetPassword(const std::string &password);
std::string GetCountry() const;
void SetCountry(const std::string &country);
std::string GetAvatarFile() const; std::string GetAvatarFile() const;
void SetAvatarFile(const std::string &avatarFile); void SetAvatarFile(const std::string &avatarFile);
MD5Buf GetAvatarMD5() const; MD5Buf GetAvatarMD5() const;
@@ -110,6 +112,7 @@ private:
int m_number; int m_number;
std::string m_name; std::string m_name;
std::string m_password; std::string m_password;
std::string m_country;
std::string m_avatarFile; std::string m_avatarFile;
MD5Buf m_avatarMD5; MD5Buf m_avatarMD5;
PlayerType m_type; PlayerType m_type;