OpenTTD Source: HTTPThreadSafeCallback Class Reference

OpenTTD Source 15.3

Data Structures | Public Member Functions | Data Fields | Private Attributes
HTTPThreadSafeCallback Class Reference

Converts a HTTPCallback to a Thread-Safe variant. More...

`#include <http_shared.h>`

## Data Structures
class | Callback
| Entries on the queue for later handling. More...

## Public Member Functions
void | OnFailure ()
| Similar to HTTPCallback::OnFailure, but thread-safe.
void | OnReceiveData (std::unique_ptr< char[]> data, size_t length)
| Similar to HTTPCallback::OnReceiveData, but thread-safe.
void | HandleQueue ()
| Process everything on the queue.
template<typename T >
void | WaitTillEmptyOrCondition (T condition)
| Wait till the queue is dequeued, or a condition is met.
bool | IsQueueEmpty ()
| Check if the queue is empty.
| HTTPThreadSafeCallback (HTTPCallback *callback)

## Data Fields
std::atomic< bool > | cancelled = false

## Private Attributes
HTTPCallback * | callback
| The callback to send data back on.
std::mutex | mutex
| Mutex to protect the queue.
std::vector< Callback > | queue
| Queue of data to send back.
std::condition_variable | queue_cv
| Condition variable to wait for the queue to be empty.

## Detailed Description

Converts a HTTPCallback to a Thread-Safe variant.

Definition at line 22 of file http_shared.h.

## Constructor & Destructor Documentation

## ◆ HTTPThreadSafeCallback()

HTTPThreadSafeCallback::HTTPThreadSafeCallback | ( | HTTPCallback * | callback | ) |
| inline

Definition at line 100 of file http_shared.h.

## ◆ ~HTTPThreadSafeCallback()

HTTPThreadSafeCallback::~HTTPThreadSafeCallback | ( |  | ) |
| inline

Definition at line 102 of file http_shared.h.

## Member Function Documentation

## ◆ HandleQueue()

void HTTPThreadSafeCallback::HandleQueue | ( |  | ) |
| inline

Process everything on the queue.

Should be called from the Game Thread.

Definition at line 59 of file http_shared.h.

References callback, HTTPCallback::IsCancelled(), lock, mutex, HTTPCallback::OnFailure(), HTTPCallback::OnReceiveData(), queue, and queue_cv.

## ◆ IsQueueEmpty()

bool HTTPThreadSafeCallback::IsQueueEmpty | ( |  | ) |
| inline

Check if the queue is empty.

Definition at line 94 of file http_shared.h.

References lock, mutex, and queue.

Referenced by NetworkHTTPRequest::Receive().

## ◆ OnFailure()

void HTTPThreadSafeCallback::OnFailure | ( |  | ) |
| inline

Similar to HTTPCallback::OnFailure, but thread-safe.

Definition at line 39 of file http_shared.h.

References lock, mutex, and queue.

Referenced by NetworkHTTPRequest::Connect(), NetworkHTTPRequest::Receive(), and NetworkHTTPRequest::WinHttpCallback().

## ◆ OnReceiveData()

void HTTPThreadSafeCallback::OnReceiveData | ( | std::unique_ptr< char[]> | data,
|  | size_t | length
| ) |  |
| inline

Similar to HTTPCallback::OnReceiveData, but thread-safe.

Definition at line 48 of file http_shared.h.

References lock, mutex, and queue.

Referenced by NetworkHTTPRequest::WinHttpCallback().

## ◆ WaitTillEmptyOrCondition()

template<typename T >

void HTTPThreadSafeCallback::WaitTillEmptyOrCondition | ( | T | condition | ) |
| inline

Wait till the queue is dequeued, or a condition is met.

Parameters

  condition | Condition functor.

Definition at line 82 of file http_shared.h.

References lock, mutex, queue, and queue_cv.

## Field Documentation

## ◆ callback

HTTPCallback* HTTPThreadSafeCallback::callback
| private

The callback to send data back on.

Definition at line 114 of file http_shared.h.

Referenced by HandleQueue().

## ◆ cancelled

std::atomic<bool> HTTPThreadSafeCallback::cancelled = false

Definition at line 111 of file http_shared.h.

## ◆ mutex

std::mutex HTTPThreadSafeCallback::mutex
| private

Mutex to protect the queue.

Definition at line 115 of file http_shared.h.

Referenced by HandleQueue(), IsQueueEmpty(), OnFailure(), OnReceiveData(), and WaitTillEmptyOrCondition().

## ◆ queue

std::vector<Callback> HTTPThreadSafeCallback::queue
| private

Queue of data to send back.

Definition at line 116 of file http_shared.h.

Referenced by HandleQueue(), IsQueueEmpty(), OnFailure(), OnReceiveData(), and WaitTillEmptyOrCondition().

## ◆ queue_cv

std::condition_variable HTTPThreadSafeCallback::queue_cv
| private

Condition variable to wait for the queue to be empty.

Definition at line 117 of file http_shared.h.

Referenced by HandleQueue(), and WaitTillEmptyOrCondition().

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

- src/network/core/http_shared.h