# DiagnosticManager

<a id="diagnosticmanager"></a>

# DiagnosticManager

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

class DiagnosticManager
```

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

> **Inherits:** [`string, IDiagnostic >`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore)

Registry and manager for diagnostic providers.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`DiagnosticsComplete`](#diagnosticscomplete) | `variable` | Declared here |
| [`DiagnosticManager`](#diagnosticmanager-1) | `function` | Declared here |
| [`~DiagnosticManager`](#diagnosticmanager-2) | `function` | Declared here |
| [`addDiagnostic`](#adddiagnostic) | `function` | Declared here |
| [`freeDiagnostic`](#freediagnostic) | `function` | Declared here |
| [`getDiagnostic`](#getdiagnostic) | `function` | Declared here |
| [`resetAll`](#resetall) | `function` | Declared here |
| [`checkAll`](#checkall) | `function` | Declared here |
| [`allComplete`](#allcomplete) | `function` | Declared here |
| [`onDiagnosticStateChange`](#ondiagnosticstatechange) | `function` | Declared here |
| [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore-1) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`~KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore-2) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore-3) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#operator-43) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore-4) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#operator-44) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`get`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#get-3) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`add`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#add-1) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`tryAdd`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#tryadd) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`put`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#put-3) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`erase`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#erase) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`contains`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#contains) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`empty`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#empty) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`size`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#size-2) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`clear`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#clear-1) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map-1) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`begin`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#begin-3) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`end`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#end) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`begin`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#begin-4) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`end`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#end-1) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`_map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#_map) | `variable` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`onAdd`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#onadd) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`onRemove`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#onremove) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`Map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map-2) | `typedef` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |

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

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore-1)  | Defaulted constructor. |
| `function` | [`~KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore-2) `virtual` `inline` |  |
| `function` | [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore-3)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#operator-43)  | Deleted assignment operator. |
| `function` | [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore-4)  | Defaulted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#operator-44)  | Defaulted assignment operator. |
| `function` | [`get`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#get-3) `const` `inline` | Returns the item for `key`, or nullptr if not found. |
| `function` | [`add`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#add-1) `inline` | Inserts a uniquely owned item. Returns a reference to the stored item. |
| `function` | [`tryAdd`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#tryadd) `inline` | Inserts if absent; returns false on duplicate (never throws). |
| `function` | [`put`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#put-3) `inline` | Inserts or replaces the item under `key`. |
| `function` | [`erase`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#erase) `inline` | Removes and destroys the item under `key`. |
| `function` | [`contains`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#contains) `const` `inline` |  |
| `function` | [`empty`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#empty) `const` `inline` |  |
| `function` | [`size`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#size-2) `const` `inline` |  |
| `function` | [`clear`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#clear-1) `inline` |  |
| `function` | [`map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map) `inline` | Direct map access for iteration. |
| `function` | [`map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map-1) `const` `inline` |  |
| `function` | [`begin`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#begin-3) `inline` |  |
| `function` | [`end`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#end) `inline` |  |
| `function` | [`begin`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#begin-4) `const` `inline` |  |
| `function` | [`end`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#end-1) `const` `inline` |  |
| `variable` | [`_map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#_map)  |  |
| `function` | [`onAdd`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#onadd) `virtual` `inline` | Override for lifecycle reactions. |
| `function` | [`onRemove`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#onremove) `virtual` `inline` |  |
| `typedef` | [`Map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map-2)  |  |

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`NullSignal`](https://auscaster.com/icey/docs/api-reference/base.md#nullsignal) | [`DiagnosticsComplete`](#diagnosticscomplete)  |  |

---

<a id="diagnosticscomplete"></a>

### DiagnosticsComplete

```cpp
NullSignal DiagnosticsComplete
```

Type: [`NullSignal`](https://auscaster.com/icey/docs/api-reference/base.md#nullsignal)

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

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`DiagnosticManager`](#diagnosticmanager-1)  |  |
|  | [`~DiagnosticManager`](#diagnosticmanager-2)  |  |
| [`bool`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map) | [`addDiagnostic`](#adddiagnostic)  | Adds a diagnostic, taking ownership. |
| [`bool`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map) | [`freeDiagnostic`](#freediagnostic)  | Removes and deletes the diagnostic registered under name. |
| [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) * | [`getDiagnostic`](#getdiagnostic) `const` | Returns the diagnostic or nullptr. |
| [`void`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map) | [`resetAll`](#resetall)  |  |
| [`void`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map) | [`checkAll`](#checkall)  |  |
| [`bool`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map) | [`allComplete`](#allcomplete) `const` |  |
| [`void`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map) | [`onDiagnosticStateChange`](#ondiagnosticstatechange)  |  |

---

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

### DiagnosticManager

```cpp
DiagnosticManager()
```

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

---

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

### ~DiagnosticManager

```cpp
~DiagnosticManager()
```

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

---

<a id="adddiagnostic"></a>

### addDiagnostic

```cpp
bool addDiagnostic(std::unique_ptr< IDiagnostic > test)
```

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

Adds a diagnostic, taking ownership.

---

<a id="freediagnostic"></a>

### freeDiagnostic

```cpp
bool freeDiagnostic(const std::string & name)
```

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

Removes and deletes the diagnostic registered under name.

---

<a id="getdiagnostic"></a>

### getDiagnostic

`const`

```cpp
IDiagnostic * getDiagnostic(const std::string & name) const
```

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

Returns the diagnostic or nullptr.

---

<a id="resetall"></a>

### resetAll

```cpp
void resetAll()
```

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

---

<a id="checkall"></a>

### checkAll

```cpp
void checkAll()
```

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

---

<a id="allcomplete"></a>

### allComplete

`const`

```cpp
bool allComplete() const
```

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

---

<a id="ondiagnosticstatechange"></a>

### onDiagnosticStateChange

```cpp
void onDiagnosticStateChange(void *, DiagnosticState & state, constDiagnosticState &)
```

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