# Runnable

<a id="runnable"></a>

# Runnable

```cpp
#include <icy/interface.h>

class Runnable
```

[Defined in src/base/include/icy/interface.h:75](https://github.com/auscaster/icey/blob/main/src/base/include/icy/interface.h#L75)

> **Subclassed by:** [`RunnableQueue< IPacket >`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue), [`RunnableQueue< PacketT >`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue), [`PlanarAudioPacket >`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue), [`RunnableQueue< VisionFramePacket >`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue), [`AsyncDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-AsyncDiagnostic.md#asyncdiagnostic), [`AsyncLogWriter`](https://auscaster.com/icey/docs/api-reference/icy-AsyncLogWriter.md#asynclogwriter), [`RunnableQueue< T >`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue), [`Task`](https://auscaster.com/icey/docs/api-reference/icy-Task.md#task), [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1), [`MediaCapture`](https://auscaster.com/icey/docs/api-reference/icy-av-MediaCapture.md#mediacapture), [`InstallTask`](https://auscaster.com/icey/docs/api-reference/icy-pacm-InstallTask.md#installtask)

Abstract interface for classes that can be run and cancelled.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`Runnable`](#runnable-1) `inline` |  |
|  | [`~Runnable`](#runnable-2) `virtual` | Defaulted destructor. |
| `void` | [`run`](#run-11) `virtual` | The run method will be called by the asynchronous context. |
| `void` | [`cancel`](#cancel-7) `virtual` `inline` | Cancel the current task. The [run()](#run-11) method should return ASAP. |
| `bool` | [`cancelled`](#cancelled-3) `virtual` `const` `inline` | Returns true when the task has been cancelled. |

---

<a id="runnable-1"></a>

### Runnable

`inline`

```cpp
inline Runnable()
```

[Defined in src/base/include/icy/interface.h:78](https://github.com/auscaster/icey/blob/main/src/base/include/icy/interface.h#L78)

---

<a id="runnable-2"></a>

### ~Runnable

`virtual`

```cpp
virtual ~Runnable() = default
```

[Defined in src/base/include/icy/interface.h:83](https://github.com/auscaster/icey/blob/main/src/base/include/icy/interface.h#L83)

Defaulted destructor.

---

<a id="run-11"></a>

### run

`virtual`

```cpp
virtual void run()
```

[Defined in src/base/include/icy/interface.h:86](https://github.com/auscaster/icey/blob/main/src/base/include/icy/interface.h#L86)

The run method will be called by the asynchronous context.

#### Reimplemented by

- [`MediaCapture::run`](https://auscaster.com/icey/docs/api-reference/icy-av-MediaCapture.md#run-7)
- [`AsyncLogWriter::run`](https://auscaster.com/icey/docs/api-reference/icy-AsyncLogWriter.md#run-2)
- [`RunnableQueue::run`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#run-4)
- [`RunnableQueue::run`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#run-4)
- [`RunnableQueue::run`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#run-4)
- [`RunnableQueue::run`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#run-4)
- [`RunnableQueue::run`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#run-4)
- [`TaskRunner::run`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#run-6)
- [`InstallTask::run`](https://auscaster.com/icey/docs/api-reference/icy-pacm-InstallTask.md#run-12)
- [`Scheduler::run`](https://auscaster.com/icey/docs/api-reference/icy-sched-Scheduler.md#run-13)
- [`AsyncDiagnostic::run`](https://auscaster.com/icey/docs/api-reference/icy-AsyncDiagnostic.md#run-1)
- [`Task::run`](https://auscaster.com/icey/docs/api-reference/icy-Task.md#run-5)
- [`Task::run`](https://auscaster.com/icey/docs/api-reference/icy-sched-Task.md#run-14)

---

<a id="cancel-7"></a>

### cancel

`virtual` `inline`

```cpp
virtual inline void cancel(bool flag = true)
```

[Defined in src/base/include/icy/interface.h:90](https://github.com/auscaster/icey/blob/main/src/base/include/icy/interface.h#L90)

Cancel the current task. The [run()](#run-11) method should return ASAP.

#### Reimplemented by

- [`SyncQueue::cancel`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#cancel-4)
- [`SyncQueue::cancel`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#cancel-4)
- [`AsyncQueue::cancel`](https://auscaster.com/icey/docs/api-reference/icy-AsyncQueue.md#cancel)
- [`AsyncQueue::cancel`](https://auscaster.com/icey/docs/api-reference/icy-AsyncQueue.md#cancel)
- [`AsyncQueue::cancel`](https://auscaster.com/icey/docs/api-reference/icy-AsyncQueue.md#cancel)
- [`AsyncQueue::cancel`](https://auscaster.com/icey/docs/api-reference/icy-AsyncQueue.md#cancel)
- [`AsyncQueue::cancel`](https://auscaster.com/icey/docs/api-reference/icy-AsyncQueue.md#cancel)
- [`InstallTask::cancel`](https://auscaster.com/icey/docs/api-reference/icy-pacm-InstallTask.md#cancel-9)

---

<a id="cancelled-3"></a>

### cancelled

`virtual` `const` `inline`

```cpp
virtual inline bool cancelled() const
```

[Defined in src/base/include/icy/interface.h:96](https://github.com/auscaster/icey/blob/main/src/base/include/icy/interface.h#L96)

Returns true when the task has been cancelled.

#### Reimplemented by

- [`InstallTask::cancelled`](https://auscaster.com/icey/docs/api-reference/icy-pacm-InstallTask.md#cancelled-5)

## Protected Attributes

| Return | Name | Description |
|--------|------|-------------|
| `std::atomic< bool >` | [`exit`](#exit)  |  |

---

<a id="exit"></a>

### exit

```cpp
std::atomic< bool > exit
```

[Defined in src/base/include/icy/interface.h:102](https://github.com/auscaster/icey/blob/main/src/base/include/icy/interface.h#L102)
