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:
@@ -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))
|
||||
|
||||
@@ -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(); }
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user