Additions to user memory mananegement in cache. Added the add, accept and decline friend core to the client.

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/uni@13500 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
unitraxx
2013-08-18 14:31:38 +00:00
parent 66c9c1fac7
commit 9003af59e1
5 changed files with 85 additions and 7 deletions

View File

@@ -149,7 +149,7 @@ namespace Online{
UserConfigParams::m_saved_token = getToken();
UserConfigParams::m_saved_session = true;
}
ProfileManager::get()->addToCache(new Profile(CurrentUser::get()->getUserID(), CurrentUser::get()->getUserName()));
ProfileManager::get()->addToCache(new Profile(CurrentUser::get()->getUserID(), CurrentUser::get()->getUserName(), false));
}
else
setUserState (US_SIGNED_OUT);
@@ -308,6 +308,51 @@ namespace Online{
// ============================================================================
const CurrentUser::FriendRequest * CurrentUser::requestFriendRequest(const uint32_t friend_id) const
{
assert(isRegisteredUser());
CurrentUser::FriendRequest * request = new CurrentUser::FriendRequest();
request->setURL((std::string)UserConfigParams::m_server_multiplayer + "client-user.php");
request->setParameter("action", std::string("friend-request"));
request->setParameter("token", getToken());
request->setParameter("userid", getUserID());
request->setParameter("friendid", friend_id);
HTTPManager::get()->addRequest(request);
return request;
}
// ============================================================================
const CurrentUser::AcceptFriendRequest * CurrentUser::requestAcceptFriend(const uint32_t friend_id) const
{
assert(isRegisteredUser());
CurrentUser::AcceptFriendRequest * request = new CurrentUser::AcceptFriendRequest();
request->setURL((std::string)UserConfigParams::m_server_multiplayer + "client-user.php");
request->setParameter("action", std::string("accept-friend-request"));
request->setParameter("token", getToken());
request->setParameter("userid", getUserID());
request->setParameter("friendid", friend_id);
HTTPManager::get()->addRequest(request);
return request;
}
// ============================================================================
const CurrentUser::DeclineFriendRequest * CurrentUser::requestDeclineFriend(const uint32_t friend_id) const
{
assert(isRegisteredUser());
CurrentUser::DeclineFriendRequest * request = new CurrentUser::DeclineFriendRequest();
request->setURL((std::string)UserConfigParams::m_server_multiplayer + "client-user.php");
request->setParameter("action", std::string("decline-friend-request"));
request->setParameter("token", getToken());
request->setParameter("userid", getUserID());
request->setParameter("friendid", friend_id);
HTTPManager::get()->addRequest(request);
return request;
}
// ============================================================================
const irr::core::stringw CurrentUser::getUserName() const
{
if((getUserState() == US_SIGNED_IN ) || (getUserState() == US_GUEST))

View File

@@ -94,6 +94,24 @@ namespace Online{
setAddonVoteRequest() : XMLRequest() {}
};
class FriendRequest : public XMLRequest {
virtual void callback ();
public:
FriendRequest() : XMLRequest() {}
};
class AcceptFriendRequest : public XMLRequest {
virtual void callback ();
public:
AcceptFriendRequest() : XMLRequest() {}
};
class DeclineFriendRequest : public XMLRequest {
virtual void callback ();
public:
DeclineFriendRequest() : XMLRequest() {}
};
private:
Synchronised<std::string> m_token;
@@ -127,7 +145,7 @@ namespace Online{
/** Register */
const XMLRequest * requestSignUp( const irr::core::stringw &username,
const XMLRequest * requestSignUp( const irr::core::stringw &username,
const irr::core::stringw &password,
const irr::core::stringw &password_ver,
const irr::core::stringw &email,
@@ -138,9 +156,14 @@ namespace Online{
const XMLRequest * requestGetAddonVote(const std::string & addon_id) const;
const setAddonVoteRequest * requestSetAddonVote(const std::string & addon_id, float rating) const;
const FriendRequest * requestFriendRequest(const uint32_t friend_id) const;
const AcceptFriendRequest * requestAcceptFriend(const uint32_t friend_id) const;
const DeclineFriendRequest * requestDeclineFriend(const uint32_t friend_id) const;
const XMLRequest * requestUserSearch(const irr::core::stringw & search_string) const;
/** Returns the username if signed in. */
const irr::core::stringw getUserName() const;
const UserState getUserState() const { return m_state.getAtomic(); }

View File

@@ -47,9 +47,11 @@ namespace Online{
// ============================================================================
Profile::Profile( const uint32_t & userid,
const irr::core::stringw & username)
const irr::core::stringw & username,
bool auto_delete)
{
setState (S_READY);
m_auto_delete = auto_delete;
m_cache_bit = true;
m_id = userid;
m_is_current_user = (m_id == CurrentUser::get()->getUserID());
@@ -58,9 +60,10 @@ namespace Online{
m_relation_info = NULL;
}
Profile::Profile(const XMLNode * xml, ConstructorType type)
Profile::Profile(const XMLNode * xml, ConstructorType type, bool auto_delete)
{
m_relation_info = NULL;
m_auto_delete = auto_delete;
if(type == C_RELATION_INFO){
std::string is_online_string("");
xml->get("online", &is_online_string);

View File

@@ -87,6 +87,7 @@ namespace Online{
std::vector<uint32_t> m_friends;
bool m_cache_bit;
bool m_auto_delete;
void setState(State state) { m_state.setAtomic(state); }
const State getState() const { return m_state.getAtomic(); }
@@ -96,9 +97,11 @@ namespace Online{
public:
Profile( const uint32_t & userid,
const irr::core::stringw & username);
const irr::core::stringw & username,
bool auto_delete = true);
Profile( const XMLNode * xml,
ConstructorType type = C_DEFAULT);
ConstructorType type = C_DEFAULT,
bool auto_delete = true);
~Profile();
void fetchFriends();
const std::vector<uint32_t> & getFriends();
@@ -112,6 +115,7 @@ namespace Online{
void setCacheBit() { m_cache_bit = true; }
void unsetCacheBit() { m_cache_bit = false; }
bool getCacheBit() const { return m_cache_bit; }
bool canAutoDelete() const { return m_auto_delete; }
uint32_t getID() const { return m_id; }
const irr::core::stringw & getUserName() const { return m_username; }

View File

@@ -84,7 +84,7 @@ namespace Online{
ProfilesMap::iterator iter;
for (iter = m_profiles_cache.begin(); iter != m_profiles_cache.end();)
{
if (!iter->second->getCacheBit())
if (!iter->second->getCacheBit() && iter->second->canAutoDelete())
{
m_profiles_cache.erase(iter++);
continue;
@@ -98,6 +98,7 @@ namespace Online{
}
// ============================================================================
void ProfileManager::addToCache(Profile * profile)
{
@@ -112,6 +113,8 @@ namespace Online{
}
}
// ============================================================================
bool ProfileManager::cacheHit(const uint32_t id)
{