diff options
| author | Simon 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) |
| commit | 9479b7f3300658156c467980c28d3436a728bc0c (patch) | |
| tree | 631a10f9fe9628d1250109f6b9c643d008591d39 /src/client/RequestBroker.h | |
| parent | 7a055a9d90ea3464bbdc314df423e2aa768ce2be (diff) | |
| download | powder-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.h | 155 |
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 |
