OpenTTD Source: HTTPThreadSafeCallback Class Reference

OpenTTD Source 14.0-beta3

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. More...
template<typename T >
void | WaitTillEmptyOrCondition (T condition)
| Wait till the queue is dequeued, or a condition is met. More...
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.

## 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.

## ◆ 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.

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

- src/network/core/http_shared.h