Changes to thumbnail retreival
This commit is contained in:
parent
44639a6423
commit
6d3b447f8e
@ -34,6 +34,7 @@
|
||||
|
||||
#define APPDATA_SUBDIR "\\HardWIRED"
|
||||
|
||||
//Number of unique thumbnails to have in cache at one time
|
||||
#define THUMB_CACHE_SIZE 256
|
||||
|
||||
#ifndef M_PI
|
||||
@ -43,8 +44,11 @@
|
||||
#define M_GRAV 6.67300e-1
|
||||
#endif
|
||||
|
||||
#define IMGCONNS 3
|
||||
//Number of asynchronous connections used to retrieve thumnails
|
||||
#define IMGCONNS 5
|
||||
//Not sure
|
||||
#define TIMEOUT 100
|
||||
//HTTP request timeout in seconds
|
||||
#define HTTP_TIMEOUT 10
|
||||
|
||||
#ifdef RENDERER
|
||||
|
@ -48,10 +48,9 @@ std::vector<ConsoleCommand> * Console::GetPreviousCommands()
|
||||
|
||||
}
|
||||
|
||||
Console::Console(ui::Sandbox * sandbox)
|
||||
Console::Console()
|
||||
{
|
||||
this->sandbox = sandbox;
|
||||
sim = sandbox->GetSimulation();
|
||||
//sim = sandbox->GetSimulation();
|
||||
}
|
||||
|
||||
Console::~Console()
|
||||
|
@ -4,7 +4,6 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "interface/Sandbox.h"
|
||||
#include "simulation/Simulation.h"
|
||||
|
||||
class ConsoleCommand
|
||||
@ -29,7 +28,6 @@ private:
|
||||
bool file_script;
|
||||
std::vector<ConsoleCommand> * previousCommands;
|
||||
std::string * lastError;
|
||||
ui::Sandbox * sandbox;
|
||||
Simulation * sim;
|
||||
public:
|
||||
virtual void Tick(float * dt);
|
||||
@ -41,7 +39,7 @@ public:
|
||||
virtual int ProcessCommand(char * console);
|
||||
virtual std::string * GetLastError();
|
||||
virtual std::vector<ConsoleCommand> * GetPreviousCommands();
|
||||
Console(ui::Sandbox * sandbox);
|
||||
Console();
|
||||
virtual ~Console();
|
||||
};
|
||||
|
||||
|
@ -10,7 +10,6 @@
|
||||
|
||||
#include "interface/Engine.h"
|
||||
#include "interface/Button.h"
|
||||
#include "interface/Sandbox.h"
|
||||
#include "interface/Panel.h"
|
||||
#include "interface/ControlFactory.h"
|
||||
#include "interface/Point.h"
|
||||
|
@ -2,30 +2,25 @@
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <time.h>
|
||||
#include "Config.h"
|
||||
#include "Client.h"
|
||||
#include "interface/Point.h"
|
||||
#include "Graphics.h"
|
||||
|
||||
/*
|
||||
static Thumbnail* thumbnailCache[120];
|
||||
static void * activeThumbRequests[5];
|
||||
static int activeThumbRequestTimes[5];
|
||||
static std::string activeThumbRequestIDs[5];
|
||||
*/
|
||||
|
||||
Client::Client()
|
||||
{
|
||||
int i = 0;
|
||||
http_init(NULL);
|
||||
for(i = 0; i < 120; i++)
|
||||
for(i = 0; i < THUMB_CACHE_SIZE; i++)
|
||||
{
|
||||
thumbnailCache[i] = NULL;
|
||||
}
|
||||
for(i = 0; i < 5; i++)
|
||||
for(i = 0; i < IMGCONNS; i++)
|
||||
{
|
||||
activeThumbRequests[i] = NULL;
|
||||
activeThumbRequestTimes[i] = 0;
|
||||
activeThumbRequestCompleteTimes[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,12 +31,14 @@ Client::~Client()
|
||||
|
||||
void Client::ClearThumbnailRequests()
|
||||
{
|
||||
for(int i = 0; i < 5; i++)
|
||||
for(int i = 0; i < IMGCONNS; i++)
|
||||
{
|
||||
if(activeThumbRequests[i])
|
||||
{
|
||||
http_async_req_close(activeThumbRequests[i]);
|
||||
activeThumbRequests[i] = NULL;
|
||||
activeThumbRequestTimes[i] = 0;
|
||||
activeThumbRequestCompleteTimes[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -50,8 +47,28 @@ Thumbnail * Client::GetThumbnail(int saveID, int saveDate)
|
||||
{
|
||||
std::stringstream urlStream;
|
||||
std::stringstream idStream;
|
||||
int i = 0;
|
||||
for(i = 0; i < 120; i++)
|
||||
int i = 0, currentTime = time(NULL);
|
||||
//Check active requests for any "forgotten" requests
|
||||
for(i = 0; i < IMGCONNS; i++)
|
||||
{
|
||||
//If the request is active, and we've recieved a response
|
||||
if(activeThumbRequests[i] && http_async_req_status(activeThumbRequests[i]))
|
||||
{
|
||||
//If we haven't already, mark the request as completed
|
||||
if(!activeThumbRequestCompleteTimes[i])
|
||||
{
|
||||
activeThumbRequestCompleteTimes[i] = time(NULL);
|
||||
}
|
||||
else if(activeThumbRequestCompleteTimes[i] < (currentTime-20)) //Otherwise, if it completed more than 10 seconds ago, destroy it.
|
||||
{
|
||||
http_async_req_close(activeThumbRequests[i]);
|
||||
activeThumbRequests[i] = NULL;
|
||||
activeThumbRequestTimes[i] = 0;
|
||||
activeThumbRequestCompleteTimes[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
for(i = 0; i < THUMB_CACHE_SIZE; i++)
|
||||
{
|
||||
if(thumbnailCache[i] && thumbnailCache[i]->ID == saveID && thumbnailCache[i]->Datestamp == saveDate)
|
||||
return thumbnailCache[i];
|
||||
@ -64,7 +81,7 @@ Thumbnail * Client::GetThumbnail(int saveID, int saveDate)
|
||||
idStream << saveID << ":" << saveDate;
|
||||
std::string idString = idStream.str();
|
||||
bool found = false;
|
||||
for(i = 0; i < 5; i++)
|
||||
for(i = 0; i < IMGCONNS; i++)
|
||||
{
|
||||
if(activeThumbRequests[i] && activeThumbRequestIDs[i] == idString)
|
||||
{
|
||||
@ -83,7 +100,7 @@ Thumbnail * Client::GetThumbnail(int saveID, int saveDate)
|
||||
{
|
||||
free(data);
|
||||
}
|
||||
thumbnailCacheNextID %= 120;
|
||||
thumbnailCacheNextID %= THUMB_CACHE_SIZE;
|
||||
if(thumbnailCache[thumbnailCacheNextID])
|
||||
{
|
||||
delete thumbnailCache[thumbnailCacheNextID];
|
||||
@ -104,7 +121,7 @@ Thumbnail * Client::GetThumbnail(int saveID, int saveDate)
|
||||
{
|
||||
free(data);
|
||||
}
|
||||
thumbnailCacheNextID %= 120;
|
||||
thumbnailCacheNextID %= THUMB_CACHE_SIZE;
|
||||
if(thumbnailCache[thumbnailCacheNextID])
|
||||
{
|
||||
delete thumbnailCache[thumbnailCacheNextID];
|
||||
@ -113,15 +130,21 @@ Thumbnail * Client::GetThumbnail(int saveID, int saveDate)
|
||||
return thumbnailCache[thumbnailCacheNextID++];
|
||||
}
|
||||
}
|
||||
else if(activeThumbRequestTimes[i] < currentTime-HTTP_TIMEOUT)
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!found)
|
||||
{
|
||||
for(i = 0; i < 5; i++)
|
||||
for(i = 0; i < IMGCONNS; i++)
|
||||
{
|
||||
if(!activeThumbRequests[i])
|
||||
{
|
||||
activeThumbRequests[i] = http_async_req_start(NULL, (char *)urlStream.str().c_str(), NULL, 0, 1);
|
||||
activeThumbRequestTimes[i] = currentTime;
|
||||
activeThumbRequestCompleteTimes[i] = 0;
|
||||
std::cout << "ThumbCache: Requesting " << urlStream.str() << " : " << idString << std::endl;
|
||||
activeThumbRequestIDs[i] = idString;
|
||||
return NULL;
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define CLIENT_H
|
||||
|
||||
#include <queue>
|
||||
#include "Config.h"
|
||||
#include "HTTP.h"
|
||||
#include "search/Thumbnail.h"
|
||||
#include "Singleton.h"
|
||||
@ -10,10 +11,11 @@ class Client: public Singleton<Client>
|
||||
{
|
||||
private:
|
||||
int thumbnailCacheNextID;
|
||||
Thumbnail * thumbnailCache[120];
|
||||
void * activeThumbRequests[5];
|
||||
int activeThumbRequestTimes[5];
|
||||
std::string activeThumbRequestIDs[5];
|
||||
Thumbnail * thumbnailCache[THUMB_CACHE_SIZE];
|
||||
void * activeThumbRequests[IMGCONNS];
|
||||
int activeThumbRequestTimes[IMGCONNS];
|
||||
int activeThumbRequestCompleteTimes[IMGCONNS];
|
||||
std::string activeThumbRequestIDs[IMGCONNS];
|
||||
public:
|
||||
Client();
|
||||
~Client();
|
||||
|
Reference in New Issue
Block a user