summaryrefslogtreecommitdiff
path: root/src/client/RequestBroker.h
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2013-03-14 11:30:24 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2013-03-14 11:30:24 (GMT)
commit9479b7f3300658156c467980c28d3436a728bc0c (patch)
tree631a10f9fe9628d1250109f6b9c643d008591d39 /src/client/RequestBroker.h
parent7a055a9d90ea3464bbdc314df423e2aa768ce2be (diff)
downloadpowder-9479b7f3300658156c467980c28d3436a728bc0c.zip
powder-9479b7f3300658156c467980c28d3436a728bc0c.tar.gz
Move requestbroker into new folder, make request process function a method of Request
Diffstat (limited to 'src/client/RequestBroker.h')
-rw-r--r--src/client/RequestBroker.h155
1 files changed, 0 insertions, 155 deletions
diff --git a/src/client/RequestBroker.h b/src/client/RequestBroker.h
deleted file mode 100644
index 9244e91..0000000
--- a/src/client/RequestBroker.h
+++ /dev/null
@@ -1,155 +0,0 @@
-#pragma once
-#include <queue>
-#include <list>
-#include <utility>
-#include <deque>
-#include <pthread.h>
-#undef GetUserName //God dammit microsoft!
-
-#include "Singleton.h"
-
-class GameSave;
-class VideoBuffer;
-class RequestListener;
-typedef std::pair<int, RequestListener*> ListenerHandle;
-class RequestBroker: public Singleton<RequestBroker>
-{
-private:
-
- enum ProcessResponse { Finished, OK, Canceled, Failed, Duplicate };
-
- class Request
- {
- public:
- enum RequestType { ThumbnailRender, Image };
- RequestType Type;
- void * ResultObject;
- ListenerHandle Listener;
- std::vector<Request*> Children;
- Request(RequestType type, ListenerHandle listener)
- {
- Type = type;
- Listener = listener;
- ResultObject = NULL;
- }
- virtual ~Request()
- {
- std::vector<Request*>::iterator iter = Children.begin();
- while(iter != Children.end())
- {
- delete (*iter);
- iter++;
- }
- }
- virtual void Cleanup()
- {
- std::vector<Request*>::iterator iter = Children.begin();
- while(iter != Children.end())
- {
- (*iter)->Cleanup();
- iter++;
- }
- }
- };
-
- class ThumbRenderRequest: public Request
- {
- public:
- int Width, Height;
- bool Decorations;
- bool Fire;
- GameSave * Save;
- ThumbRenderRequest(GameSave * save, bool decorations, bool fire, int width, int height, ListenerHandle listener):
- Request(ThumbnailRender, listener)
- {
- Save = save;
- Width = width;
- Height = height;
- Decorations = decorations;
- Fire = fire;
- }
- virtual ~ThumbRenderRequest()
- {
- if(Save)
- delete Save;
- }
- virtual void Cleanup()
- {
- Request::Cleanup();
- if(ResultObject)
- {
- delete ((VideoBuffer*)ResultObject);
- ResultObject = NULL;
- }
- }
- };
-
- class ImageRequest: public Request
- {
- public:
- int Width, Height;
- std::string URL;
- int RequestTime;
- void * HTTPContext;
- ImageRequest(std::string url, int width, int height, ListenerHandle listener):
- Request(Image, listener)
- {
- URL = url;
- HTTPContext = NULL;
- Width = width;
- Height = height;
- }
- virtual ~ImageRequest() {}
- virtual void Cleanup()
- {
- Request::Cleanup();
- if(ResultObject)
- {
- delete ((VideoBuffer*)ResultObject);
- ResultObject = NULL;
- }
- }
- };
-
- pthread_mutex_t listenersMutex;
- pthread_mutex_t runningMutex;
- pthread_mutex_t requestQueueMutex;
- pthread_mutex_t completeQueueMutex;
-
- pthread_t thumbnailQueueThread;
- bool thumbnailQueueRunning;
-
- std::vector<ListenerHandle> validListeners;
-
- std::deque<std::pair<std::string, VideoBuffer*> > imageCache;
-
- std::queue<Request*> completeQueue;
- std::vector<Request*> requestQueue;
- std::vector<Request*> activeRequests;
-
- static void * thumbnailQueueProcessHelper(void * ref);
- void thumbnailQueueProcessTH();
- void assureRunning();
-
- ProcessResponse processThumbnailRender(ThumbRenderRequest & request);
- ProcessResponse processImage(ImageRequest & request);
-
- void requestComplete(Request * completedRequest);
-
-public:
- RequestBroker();
- virtual ~RequestBroker();
- void Shutdown();
-
- void FlushThumbQueue();
- void RetrieveImage(std::string imageUrl, int width, int height, RequestListener * tListener);
- void RenderThumbnail(GameSave * gameSave, bool decorations, bool fire, int width, int height, RequestListener * tListener);
- void RenderThumbnail(GameSave * gameSave, int width, int height, RequestListener * tListener);
- void RetrieveThumbnail(int saveID, int saveDate, int width, int height, RequestListener * tListener);
- void RetrieveThumbnail(int saveID, int width, int height, RequestListener * tListener);
- void RetrieveAvatar(std::string username, int width, int height, RequestListener * tListener);
-
- bool CheckRequestListener(ListenerHandle handle);
- ListenerHandle AttachRequestListener(RequestListener * tListener);
- void DetachRequestListener(RequestListener * tListener);
-}; \ No newline at end of file