Pyrogenesis  trunk
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
CUserReporterWorker Class Reference
Collaboration diagram for CUserReporterWorker:
Collaboration graph
[legend]

Public Member Functions

 CUserReporterWorker (const std::string &userID, const std::string &url)
 
 ~CUserReporterWorker ()
 
void SetEnabled (bool enabled)
 Called by main thread, when the online reporting is enabled/disabled. More...
 
bool Shutdown ()
 Called by main thread to request shutdown. More...
 
std::string GetStatus ()
 Called by main thread to determine the current status of the uploader. More...
 
void Submit (const shared_ptr< CUserReport > &report)
 Called by main thread to add a new report to the queue. More...
 
void Update ()
 Called by the main thread every frame, so we can check retransmission timers. More...
 

Private Member Functions

void Run ()
 
bool GetEnabled ()
 
bool GetShutdown ()
 
void SetStatus (const std::string &status)
 
bool ProcessReport ()
 
void ConstructRequestData (const CUserReport &report)
 
void AppendEscaped (std::string &buffer, const std::string &str)
 

Static Private Member Functions

static void * RunThread (void *data)
 
static size_t ReceiveCallback (void *buffer, size_t size, size_t nmemb, void *userp)
 
static size_t SendCallback (char *bufptr, size_t size, size_t nmemb, void *userp)
 

Private Attributes

pthread_t m_WorkerThread
 
CMutex m_WorkerMutex
 
SDL_sem * m_WorkerSem
 
std::deque< shared_ptr< CUserReport > > m_ReportQueue
 
bool m_Enabled
 
bool m_Shutdown
 
std::string m_Status
 
std::string m_URL
 
std::string m_UserID
 
CURL * m_Curl
 
curl_slist * m_Headers
 
double m_PauseUntilTime
 
std::string m_ResponseData
 
std::string m_RequestData
 
size_t m_RequestDataOffset
 
char m_ErrorBuffer [CURL_ERROR_SIZE]
 
double m_LastUpdateTime
 

Constructor & Destructor Documentation

CUserReporterWorker::CUserReporterWorker ( const std::string &  userID,
const std::string &  url 
)
inline
CUserReporterWorker::~CUserReporterWorker ( )
inline

Member Function Documentation

void CUserReporterWorker::AppendEscaped ( std::string &  buffer,
const std::string &  str 
)
inlineprivate
void CUserReporterWorker::ConstructRequestData ( const CUserReport report)
inlineprivate
bool CUserReporterWorker::GetEnabled ( )
inlineprivate
bool CUserReporterWorker::GetShutdown ( )
inlineprivate
std::string CUserReporterWorker::GetStatus ( )
inline

Called by main thread to determine the current status of the uploader.

bool CUserReporterWorker::ProcessReport ( )
inlineprivate
static size_t CUserReporterWorker::ReceiveCallback ( void *  buffer,
size_t  size,
size_t  nmemb,
void *  userp 
)
inlinestaticprivate
void CUserReporterWorker::Run ( )
inlineprivate
static void* CUserReporterWorker::RunThread ( void *  data)
inlinestaticprivate
static size_t CUserReporterWorker::SendCallback ( char *  bufptr,
size_t  size,
size_t  nmemb,
void *  userp 
)
inlinestaticprivate
void CUserReporterWorker::SetEnabled ( bool  enabled)
inline

Called by main thread, when the online reporting is enabled/disabled.

void CUserReporterWorker::SetStatus ( const std::string &  status)
inlineprivate
bool CUserReporterWorker::Shutdown ( void  )
inline

Called by main thread to request shutdown.

Returns true if we've shut down successfully. Returns false if shutdown is taking too long (we might be blocked on a sync network operation) - you mustn't destroy this object, just leak it and terminate.

void CUserReporterWorker::Submit ( const shared_ptr< CUserReport > &  report)
inline

Called by main thread to add a new report to the queue.

void CUserReporterWorker::Update ( )
inline

Called by the main thread every frame, so we can check retransmission timers.

Member Data Documentation

CURL* CUserReporterWorker::m_Curl
private
bool CUserReporterWorker::m_Enabled
private
char CUserReporterWorker::m_ErrorBuffer[CURL_ERROR_SIZE]
private
curl_slist* CUserReporterWorker::m_Headers
private
double CUserReporterWorker::m_LastUpdateTime
private
double CUserReporterWorker::m_PauseUntilTime
private
std::deque<shared_ptr<CUserReport> > CUserReporterWorker::m_ReportQueue
private
std::string CUserReporterWorker::m_RequestData
private
size_t CUserReporterWorker::m_RequestDataOffset
private
std::string CUserReporterWorker::m_ResponseData
private
bool CUserReporterWorker::m_Shutdown
private
std::string CUserReporterWorker::m_Status
private
std::string CUserReporterWorker::m_URL
private
std::string CUserReporterWorker::m_UserID
private
CMutex CUserReporterWorker::m_WorkerMutex
private
SDL_sem* CUserReporterWorker::m_WorkerSem
private
pthread_t CUserReporterWorker::m_WorkerThread
private

The documentation for this class was generated from the following file: