summaryrefslogtreecommitdiffstats
path: root/src/Protocol/MojangAPI.h
diff options
context:
space:
mode:
authorMattes D <github@xoft.cz>2014-10-07 11:23:49 +0200
committerMattes D <github@xoft.cz>2014-10-07 11:23:49 +0200
commit2a32dd274090b67953f52c12af4b17a37d055302 (patch)
treeefb1784f866c0d51e3cd015f9972a204a8ec4816 /src/Protocol/MojangAPI.h
parentFixed crash in ForEachEntityInBox API. (diff)
parentcMojangAPI: Added periodical refreshes. (diff)
downloadcuberite-2a32dd274090b67953f52c12af4b17a37d055302.tar
cuberite-2a32dd274090b67953f52c12af4b17a37d055302.tar.gz
cuberite-2a32dd274090b67953f52c12af4b17a37d055302.tar.bz2
cuberite-2a32dd274090b67953f52c12af4b17a37d055302.tar.lz
cuberite-2a32dd274090b67953f52c12af4b17a37d055302.tar.xz
cuberite-2a32dd274090b67953f52c12af4b17a37d055302.tar.zst
cuberite-2a32dd274090b67953f52c12af4b17a37d055302.zip
Diffstat (limited to 'src/Protocol/MojangAPI.h')
-rw-r--r--src/Protocol/MojangAPI.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/Protocol/MojangAPI.h b/src/Protocol/MojangAPI.h
index 252d32543..fa4c16e4e 100644
--- a/src/Protocol/MojangAPI.h
+++ b/src/Protocol/MojangAPI.h
@@ -93,6 +93,10 @@ public:
void SetRankManager(cRankManager * a_RankManager) { m_RankMgr = a_RankManager; }
protected:
+ /** The thread that periodically checks for stale data and re-queries it from the server. */
+ class cUpdateThread;
+
+
/** Holds data for a single player profile. */
struct sProfile
{
@@ -177,6 +181,9 @@ protected:
/** Protects m_RankMgr agains simultaneous multi-threaded access. */
cCriticalSection m_CSRankMgr;
+
+ /** The thread that periodically updates the stale data in the DB from the Mojang servers. */
+ SharedPtr<cUpdateThread> m_UpdateThread;
/** Loads the caches from a disk storage. */
@@ -189,15 +196,29 @@ protected:
Names that are not valid are not added into the cache.
ASSUMEs that a_PlayerNames contains lowercased player names. */
void CacheNamesToUUIDs(const AStringVector & a_PlayerNames);
+
+ /** Queries all the specified names and stores them into the m_PlayerNameToUUID cache.
+ Names that are not valid are not added into the cache.
+ ASSUMEs that a_PlayerNames contans lowercased player names.
+ For performance reasons takes a non-const reference and modifies the list given to it, until empty. */
+ void QueryNamesToUUIDs(AStringVector & a_PlayerNames);
/** Makes sure the specified UUID is in the m_UUIDToProfile cache. If missing, downloads it from Mojang API servers.
UUIDs that are not valid will not be added into the cache.
ASSUMEs that a_UUID is a lowercased short UUID. */
void CacheUUIDToProfile(const AString & a_UUID);
+ /** Queries the specified UUID's profile and stores it in the m_UUIDToProfile cache. If already present, updates the cache entry.
+ UUIDs that are not valid will not be added into the cache.
+ ASSUMEs that a_UUID is a lowercased short UUID. */
+ void QueryUUIDToProfile(const AString & a_UUID);
+
/** Called for each name-uuid pairing that is discovered.
If assigned, notifies the m_RankManager of the event. */
void NotifyNameUUID(const AString & a_PlayerName, const AString & a_PlayerUUID);
+
+ /** Updates the stale values in the DB from the Mojang servers. Called from the cUpdateThread, blocks on the HTTPS API calls. */
+ void Update(void);
} ; // tolua_export