# AsyncDiagnostic

<a id="asyncdiagnostic"></a>

# AsyncDiagnostic

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

class AsyncDiagnostic
```

[Defined in src/base/include/icy/diagnosticmanager.h:124](https://github.com/auscaster/icey/blob/main/src/base/include/icy/diagnosticmanager.h#L124)

> **Inherits:** [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic), [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable)

Asynchronous diagnostic information collector.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`~AsyncDiagnostic`](#asyncdiagnostic-1) | `function` | Declared here |
| [`run`](#run-1) | `function` | Declared here |
| [`check`](#check) | `function` | Declared here |
| [`_thread`](#_thread) | `variable` | Declared here |
| [`name`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#name) | `variable` | Inherited from [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) |
| [`description`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#description) | `variable` | Inherited from [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) |
| [`summary`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#summary) | `variable` | Inherited from [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) |
| [`SummaryUpdated`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#summaryupdated) | `variable` | Inherited from [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) |
| [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic-1) | `function` | Inherited from [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) |
| [`~IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic-2) | `function` | Inherited from [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) |
| [`check`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#check-1) | `function` | Inherited from [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) |
| [`reset`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#reset-2) | `function` | Inherited from [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) |
| [`complete`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#complete) | `function` | Inherited from [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) |
| [`passed`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#passed) | `function` | Inherited from [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) |
| [`failed`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#failed) | `function` | Inherited from [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) |
| [`run`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#run-3) | `function` | Inherited from [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) |
| [`pass`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#pass) | `function` | Inherited from [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) |
| [`fail`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#fail) | `function` | Inherited from [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) |
| [`addSummary`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#addsummary) | `function` | Inherited from [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) |
| [`StateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#statechange) | `variable` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful-1) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`~Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful-2) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`stateEquals`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateequals) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`stateBetween`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#statebetween) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#state-4) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#state-5) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`_state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#_state) | `variable` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`beforeStateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#beforestatechange) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`onStateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#onstatechange-2) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`setState`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#setstate) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`setState`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#setstate-1) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable-1) | `function` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |
| [`~Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable-2) | `function` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |
| [`run`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#run-11) | `function` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |
| [`cancel`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#cancel-7) | `function` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |
| [`cancelled`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#cancelled-3) | `function` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |
| [`exit`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#exit) | `variable` | Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable) |

## Inherited from [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic)

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`name`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#name)  | The name of the diagnostic. |
| `variable` | [`description`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#description)  | The diagnostic description. |
| `variable` | [`summary`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#summary)  | The diagnostic summary, maybe including troubleshooting information on failure. |
| `variable` | [`SummaryUpdated`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#summaryupdated)  | Signals when a new text item is added to the summary. |
| `function` | [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic-1)  |  |
| `function` | [`~IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic-2) `virtual` |  |
| `function` | [`check`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#check-1) `virtual` | Resets state to None and invokes [run()](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#run-3) to perform the diagnostic check. |
| `function` | [`reset`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#reset-2) `virtual` | Clears the summary and resets state to None. |
| `function` | [`complete`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#complete) `virtual` `const` | Returns true if the diagnostic has reached a terminal state (Passed or Failed). |
| `function` | [`passed`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#passed) `virtual` `const` | Returns true if the diagnostic state is Passed. |
| `function` | [`failed`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#failed) `virtual` `const` | Returns true if the diagnostic state is Failed. |
| `function` | [`run`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#run-3) `virtual` | Override to implement diagnostic logic. |
| `function` | [`pass`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#pass) `virtual` | Transitions the state to Passed. |
| `function` | [`fail`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#fail) `virtual` | Transitions the state to Failed. |
| `function` | [`addSummary`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#addsummary) `virtual` | Appends text to the summary list and emits SummaryUpdated. |

## Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful)

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`StateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#statechange)  | Signals when the state changes. |
| `function` | [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful-1) `inline` |  |
| `function` | [`~Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful-2) `virtual` `inline` |  |
| `function` | [`stateEquals`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateequals) `virtual` `const` `inline` | Returns true if the current state ID equals the given ID. |
| `function` | [`stateBetween`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#statebetween) `virtual` `const` `inline` | Returns true if the current state ID is in the inclusive range [lid, rid]. |
| `function` | [`state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#state-4) `virtual` `inline` | Returns a mutable reference to the current state. |
| `function` | [`state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#state-5) `virtual` `const` `inline` | Returns a copy of the current state. |
| `variable` | [`_state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#_state)  |  |
| `function` | [`beforeStateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#beforestatechange) `virtual` `inline` | Override to handle pre state change logic. Return false to prevent state change. |
| `function` | [`onStateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#onstatechange-2) `virtual` `inline` | Override to handle post state change logic. |
| `function` | [`setState`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#setstate) `virtual` `inline` | Sets the state and sends the state signal if the state change was successful. |
| `function` | [`setState`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#setstate-1) `virtual` `inline` | Sets the state and sends the state signal if the state change was successful. |

## Inherited from [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable)

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable-1) `inline` |  |
| `function` | [`~Runnable`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#runnable-2) `virtual` | Defaulted destructor. |
| `function` | [`run`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#run-11) `virtual` | The run method will be called by the asynchronous context. |
| `function` | [`cancel`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#cancel-7) `virtual` `inline` | Cancel the current task. The [run()](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#run-11) method should return ASAP. |
| `function` | [`cancelled`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#cancelled-3) `virtual` `const` `inline` | Returns true when the task has been cancelled. |
| `variable` | [`exit`](https://auscaster.com/icey/docs/api-reference/icy-basic-Runnable.md#exit)  |  |

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`~AsyncDiagnostic`](#asyncdiagnostic-1) `virtual` `inline` |  |
| `void` | [`run`](#run-1) `virtual` `override` | Override to implement diagnostic logic. |
| `void` | [`check`](#check) `virtual` `inline` `override` | Resets the diagnostic and launches [run()](#run-1) on a background thread. |

---

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

### ~AsyncDiagnostic

`virtual` `inline`

```cpp
virtual inline ~AsyncDiagnostic()
```

[Defined in src/base/include/icy/diagnosticmanager.h:128](https://github.com/auscaster/icey/blob/main/src/base/include/icy/diagnosticmanager.h#L128)

---

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

### run

`virtual` `override`

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

[Defined in src/base/include/icy/diagnosticmanager.h:130](https://github.com/auscaster/icey/blob/main/src/base/include/icy/diagnosticmanager.h#L130)

Override to implement diagnostic logic.

The StateChange signal will dispatch diagnostic test results to delegates.

#### Reimplements

- [`IDiagnostic::run`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#run-3)

---

<a id="check"></a>

### check

`virtual` `inline` `override`

```cpp
virtual inline void check() override
```

[Defined in src/base/include/icy/diagnosticmanager.h:133](https://github.com/auscaster/icey/blob/main/src/base/include/icy/diagnosticmanager.h#L133)

Resets the diagnostic and launches [run()](#run-1) on a background thread.

#### Reimplements

- [`IDiagnostic::check`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#check-1)

## Protected Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`Thread`](https://auscaster.com/icey/docs/api-reference/icy-Thread.md#thread-1) | [`_thread`](#_thread)  |  |

---

<a id="_thread"></a>

### _thread

```cpp
Thread _thread
```

Type: [`Thread`](https://auscaster.com/icey/docs/api-reference/icy-Thread.md#thread-1)

[Defined in src/base/include/icy/diagnosticmanager.h:140](https://github.com/auscaster/icey/blob/main/src/base/include/icy/diagnosticmanager.h#L140)
