summaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
Diffstat (limited to 'src/client')
-rw-r--r--src/client/Client.cpp28
-rw-r--r--src/client/Client.h3
-rw-r--r--src/client/RequestBroker.cpp (renamed from src/client/ThumbnailBroker.cpp)34
-rw-r--r--src/client/RequestBroker.h (renamed from src/client/ThumbnailBroker.h)18
4 files changed, 59 insertions, 24 deletions
diff --git a/src/client/Client.cpp b/src/client/Client.cpp
index 4c13850..97251e0 100644
--- a/src/client/Client.cpp
+++ b/src/client/Client.cpp
@@ -42,7 +42,7 @@
#include "search/Thumbnail.h"
#include "preview/Comment.h"
#include "ClientListener.h"
-#include "ThumbnailBroker.h"
+#include "RequestBroker.h"
#include "cajun/reader.h"
#include "cajun/writer.h"
@@ -617,7 +617,7 @@ std::vector<std::pair<std::string, std::string> > Client::GetServerNotifications
void Client::Tick()
{
//Check thumbnail queue
- ThumbnailBroker::Ref().FlushThumbQueue();
+ RequestBroker::Ref().FlushThumbQueue();
//Check status on version check request
if(versionCheckRequest && http_async_req_status(versionCheckRequest))
@@ -809,7 +809,7 @@ void Client::WritePrefs()
void Client::Shutdown()
{
- ThumbnailBroker::Ref().Shutdown();
+ RequestBroker::Ref().Shutdown();
ClearThumbnailRequests();
http_done();
@@ -1150,6 +1150,28 @@ std::vector<unsigned char> Client::GetSaveData(int saveID, int saveDate)
return saveData;
}
+VideoBuffer * Client::GetAvatar(std::string username)
+{
+ lastError = "";
+ int dataStatus;
+ int dataLength = 0;
+ unsigned char * data;
+ std::stringstream urlStream;
+ urlStream << "http://" << STATICSERVER << "/avatars/" << username << ".pti";
+
+ data = (unsigned char *)http_simple_get((char *)urlStream.str().c_str(), &dataStatus, &dataLength);
+ if(data && dataStatus == 200)
+ {
+ std::vector<char> responseData(data, data+dataLength);
+ return format::PTIToVideoBuffer(responseData);
+ }
+ else if(data)
+ {
+ free(data);
+ }
+ return NULL;
+}
+
LoginStatus Client::Login(std::string username, std::string password, User & user)
{
lastError = "";
diff --git a/src/client/Client.h b/src/client/Client.h
index 0b40012..41eeef7 100644
--- a/src/client/Client.h
+++ b/src/client/Client.h
@@ -17,6 +17,7 @@ class SaveInfo;
class SaveFile;
class SaveComment;
class GameSave;
+class VideoBuffer;
enum LoginStatus {
LoginOkay, LoginError
@@ -125,6 +126,8 @@ public:
RequestStatus AddComment(int saveID, std::string comment);
+ VideoBuffer * GetAvatar(std::string username);
+
unsigned char * GetSaveData(int saveID, int saveDate, int & dataLength);
std::vector<unsigned char> GetSaveData(int saveID, int saveDate);
LoginStatus Login(std::string username, std::string password, User & user);
diff --git a/src/client/ThumbnailBroker.cpp b/src/client/RequestBroker.cpp
index 85fee3a..e09cb5c 100644
--- a/src/client/ThumbnailBroker.cpp
+++ b/src/client/RequestBroker.cpp
@@ -2,7 +2,7 @@
#include <iostream>
#include <typeinfo>
#include <time.h>
-#include "ThumbnailBroker.h"
+#include "RequestBroker.h"
#include "ThumbnailListener.h"
#include "Client.h"
#include "HTTP.h"
@@ -12,7 +12,7 @@
//Asynchronous Thumbnail render & request processing
-ThumbnailBroker::ThumbnailBroker()
+RequestBroker::RequestBroker()
{
thumbnailQueueRunning = false;
//thumbnailQueueMutex = PTHREAD_MUTEX_INITIALIZER;
@@ -25,12 +25,12 @@ ThumbnailBroker::ThumbnailBroker()
pthread_mutex_init (&runningMutex, NULL);
}
-ThumbnailBroker::~ThumbnailBroker()
+RequestBroker::~RequestBroker()
{
}
-void ThumbnailBroker::assureRunning()
+void RequestBroker::assureRunning()
{
pthread_mutex_lock(&runningMutex);
bool running = thumbnailQueueRunning;
@@ -42,11 +42,11 @@ void ThumbnailBroker::assureRunning()
#ifdef DEBUG
std::cout << typeid(*this).name() << " Starting background thread for new " << __FUNCTION__ << " request" << std::endl;
#endif
- pthread_create(&thumbnailQueueThread, 0, &ThumbnailBroker::thumbnailQueueProcessHelper, this);
+ pthread_create(&thumbnailQueueThread, 0, &RequestBroker::thumbnailQueueProcessHelper, this);
}
}
-void ThumbnailBroker::Shutdown()
+void RequestBroker::Shutdown()
{
pthread_mutex_lock(&runningMutex);
if(thumbnailQueueRunning)
@@ -69,12 +69,12 @@ void ThumbnailBroker::Shutdown()
}
}
-void ThumbnailBroker::RenderThumbnail(GameSave * gameSave, int width, int height, ThumbnailListener * tListener)
+void RequestBroker::RenderThumbnail(GameSave * gameSave, int width, int height, ThumbnailListener * tListener)
{
RenderThumbnail(gameSave, true, true, width, height, tListener);
}
-void ThumbnailBroker::RenderThumbnail(GameSave * gameSave, bool decorations, bool fire, int width, int height, ThumbnailListener * tListener)
+void RequestBroker::RenderThumbnail(GameSave * gameSave, bool decorations, bool fire, int width, int height, ThumbnailListener * tListener)
{
AttachThumbnailListener(tListener);
pthread_mutex_lock(&thumbnailQueueMutex);
@@ -84,7 +84,7 @@ void ThumbnailBroker::RenderThumbnail(GameSave * gameSave, bool decorations, boo
assureRunning();
}
-void ThumbnailBroker::RetrieveThumbnail(int saveID, int saveDate, int width, int height, ThumbnailListener * tListener)
+void RequestBroker::RetrieveThumbnail(int saveID, int saveDate, int width, int height, ThumbnailListener * tListener)
{
AttachThumbnailListener(tListener);
pthread_mutex_lock(&thumbnailQueueMutex);
@@ -94,13 +94,13 @@ void ThumbnailBroker::RetrieveThumbnail(int saveID, int saveDate, int width, int
assureRunning();
}
-void * ThumbnailBroker::thumbnailQueueProcessHelper(void * ref)
+void * RequestBroker::thumbnailQueueProcessHelper(void * ref)
{
- ((ThumbnailBroker*)ref)->thumbnailQueueProcessTH();
+ ((RequestBroker*)ref)->thumbnailQueueProcessTH();
return NULL;
}
-void ThumbnailBroker::FlushThumbQueue()
+void RequestBroker::FlushThumbQueue()
{
pthread_mutex_lock(&thumbnailQueueMutex);
while(thumbnailComplete.size())
@@ -121,7 +121,7 @@ void ThumbnailBroker::FlushThumbQueue()
pthread_mutex_unlock(&thumbnailQueueMutex);
}
-void ThumbnailBroker::thumbnailQueueProcessTH()
+void RequestBroker::thumbnailQueueProcessTH()
{
time_t lastAction = time(NULL);
pthread_mutex_lock(&runningMutex);
@@ -354,12 +354,12 @@ void ThumbnailBroker::thumbnailQueueProcessTH()
pthread_mutex_unlock(&runningMutex);
}
-void ThumbnailBroker::RetrieveThumbnail(int saveID, int width, int height, ThumbnailListener * tListener)
+void RequestBroker::RetrieveThumbnail(int saveID, int width, int height, ThumbnailListener * tListener)
{
RetrieveThumbnail(saveID, 0, width, height, tListener);
}
-bool ThumbnailBroker::CheckThumbnailListener(ListenerHandle handle)
+bool RequestBroker::CheckThumbnailListener(ListenerHandle handle)
{
pthread_mutex_lock(&listenersMutex);
int count = std::count(validListeners.begin(), validListeners.end(), handle);
@@ -368,14 +368,14 @@ bool ThumbnailBroker::CheckThumbnailListener(ListenerHandle handle)
return count;
}
-void ThumbnailBroker::AttachThumbnailListener(ThumbnailListener * tListener)
+void RequestBroker::AttachThumbnailListener(ThumbnailListener * tListener)
{
pthread_mutex_lock(&listenersMutex);
validListeners.push_back(ListenerHandle(tListener->ListenerRand, tListener));
pthread_mutex_unlock(&listenersMutex);
}
-void ThumbnailBroker::DetachThumbnailListener(ThumbnailListener * tListener)
+void RequestBroker::DetachThumbnailListener(ThumbnailListener * tListener)
{
pthread_mutex_lock(&listenersMutex);
diff --git a/src/client/ThumbnailBroker.h b/src/client/RequestBroker.h
index 5160479..b3d1fc3 100644
--- a/src/client/ThumbnailBroker.h
+++ b/src/client/RequestBroker.h
@@ -12,7 +12,7 @@ class GameSave;
class Thumbnail;
class ThumbnailListener;
typedef std::pair<int, ThumbnailListener*> ListenerHandle;
-class ThumbnailBroker: public Singleton<ThumbnailBroker>
+class RequestBroker: public Singleton<RequestBroker>
{
private:
class ThumbnailSpec
@@ -67,6 +67,15 @@ private:
ThumbRenderRequest() : Save(0), Decorations(true), Fire(true), Width(0), Height(0), CompletedListener(ListenerHandle(0, (ThumbnailListener*)NULL)) {}
};
+ class Request
+ {
+ enum RequestType { Thumbnail, ThumbnailRender, HTTP };
+ public:
+ RequestType Type;
+ void * RequestObject;
+ ListenerHandle Listener;
+ };
+
//Thumbnail retreival
/*int thumbnailCacheNextID;
Thumbnail * thumbnailCache[THUMB_CACHE_SIZE];
@@ -87,16 +96,17 @@ private:
std::list<ThumbnailRequest> currentRequests;
std::deque<std::pair<ThumbnailID, Thumbnail*> > thumbnailCache;
-
std::vector<ListenerHandle> validListeners;
+ std::deque<Request> requestQueue;
+
static void * thumbnailQueueProcessHelper(void * ref);
void thumbnailQueueProcessTH();
void assureRunning();
public:
- ThumbnailBroker();
- virtual ~ThumbnailBroker();
+ RequestBroker();
+ virtual ~RequestBroker();
void Shutdown();
void FlushThumbQueue();