# InstallMonitor

<a id="installmonitor"></a>

# InstallMonitor

```cpp
#include <icy/pacm/installmonitor.h>

class InstallMonitor
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:27](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L27)

Aggregates multiple install tasks and reports overall progress.

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`ThreadSignal`](https://auscaster.com/icey/docs/api-reference/base.md#threadsignal)< void([`InstallTask`](https://auscaster.com/icey/docs/api-reference/icy-pacm-InstallTask.md#installtask) &, const [`InstallationState`](https://auscaster.com/icey/docs/api-reference/icy-pacm-InstallationState.md#installationstate) &, const [`InstallationState`](https://auscaster.com/icey/docs/api-reference/icy-pacm-InstallationState.md#installationstate) &)> | [`InstallStateChange`](#installstatechange)  | Proxies state change events from managed packages. |
| [`ThreadSignal`](https://auscaster.com/icey/docs/api-reference/base.md#threadsignal)< void([`LocalPackage`](https://auscaster.com/icey/docs/api-reference/icy-pacm-LocalPackage.md#localpackage) &)> | [`InstallComplete`](#installcomplete)  | Signals when a managed install task completes. |
| [`ThreadSignal`](https://auscaster.com/icey/docs/api-reference/base.md#threadsignal)< void(int &)> | [`Progress`](#progress-1)  | Signals on overall progress update [0-100]. |
| [`ThreadSignal`](https://auscaster.com/icey/docs/api-reference/base.md#threadsignal)< void([`LocalPackageVec`](https://auscaster.com/icey/docs/api-reference/icy-pacm.md#localpackagevec) &)> | [`Complete`](#complete-4)  | Signals on all tasks complete. |

---

<a id="installstatechange"></a>

### InstallStateChange

```cpp
ThreadSignal< void(InstallTask &, const InstallationState &, const InstallationState &)> InstallStateChange
```

Type: [`ThreadSignal`](https://auscaster.com/icey/docs/api-reference/base.md#threadsignal)< void([`InstallTask`](https://auscaster.com/icey/docs/api-reference/icy-pacm-InstallTask.md#installtask) &, const [`InstallationState`](https://auscaster.com/icey/docs/api-reference/icy-pacm-InstallationState.md#installationstate) &, const [`InstallationState`](https://auscaster.com/icey/docs/api-reference/icy-pacm-InstallationState.md#installationstate) &)>

[Defined in src/pacm/include/icy/pacm/installmonitor.h:60](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L60)

Proxies state change events from managed packages.

---

<a id="installcomplete"></a>

### InstallComplete

```cpp
ThreadSignal< void(LocalPackage &)> InstallComplete
```

Type: [`ThreadSignal`](https://auscaster.com/icey/docs/api-reference/base.md#threadsignal)< void([`LocalPackage`](https://auscaster.com/icey/docs/api-reference/icy-pacm-LocalPackage.md#localpackage) &)>

[Defined in src/pacm/include/icy/pacm/installmonitor.h:63](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L63)

Signals when a managed install task completes.

---

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

### Progress

```cpp
ThreadSignal< void(int &)> Progress
```

Type: [`ThreadSignal`](https://auscaster.com/icey/docs/api-reference/base.md#threadsignal)< void(int &)>

[Defined in src/pacm/include/icy/pacm/installmonitor.h:66](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L66)

Signals on overall progress update [0-100].

---

<a id="complete-4"></a>

### Complete

```cpp
ThreadSignal< void(LocalPackageVec &)> Complete
```

Type: [`ThreadSignal`](https://auscaster.com/icey/docs/api-reference/base.md#threadsignal)< void([`LocalPackageVec`](https://auscaster.com/icey/docs/api-reference/icy-pacm.md#localpackagevec) &)>

[Defined in src/pacm/include/icy/pacm/installmonitor.h:69](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L69)

Signals on all tasks complete.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`InstallMonitor`](#installmonitor-1)  |  |
|  | [`~InstallMonitor`](#installmonitor-2) `virtual` `noexcept` |  |
|  | [`InstallMonitor`](#installmonitor-3)  | Deleted constructor. |
| [`InstallMonitor`](#installmonitor) & | [`operator=`](#operator-213)  | Deleted assignment operator. |
|  | [`InstallMonitor`](#installmonitor-4)  | Deleted constructor. |
| [`InstallMonitor`](#installmonitor) & | [`operator=`](#operator-214)  | Deleted assignment operator. |
| `void` | [`addTask`](#addtask) `virtual` | Adds a task to monitor. |
| `void` | [`startAll`](#startall) `virtual` | Starts all monitored tasks. |
| `void` | [`cancelAll`](#cancelall) `virtual` | Cancels all monitored tasks. |
| `bool` | [`isComplete`](#iscomplete) `virtual` `const` | Returns true if all install tasks have completed, either successfully or unsuccessfully. |
| [`InstallTaskPtrVec`](https://auscaster.com/icey/docs/api-reference/icy-pacm.md#installtaskptrvec) | [`tasks`](#tasks) `virtual` `const` | Returns the list of monitored package tasks. |
| [`LocalPackageVec`](https://auscaster.com/icey/docs/api-reference/icy-pacm.md#localpackagevec) | [`packages`](#packages) `virtual` `const` | Returns the list of monitored packages. |

---

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

### InstallMonitor

```cpp
InstallMonitor()
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:30](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L30)

---

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

### ~InstallMonitor

`virtual` `noexcept`

```cpp
virtual ~InstallMonitor() noexcept
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:31](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L31)

---

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

### InstallMonitor

```cpp
InstallMonitor(const InstallMonitor &) = delete
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:33](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L33)

Deleted constructor.

---

<a id="operator-213"></a>

### operator=

```cpp
InstallMonitor & operator=(const InstallMonitor &) = delete
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:34](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L34)

Deleted assignment operator.

---

<a id="installmonitor-4"></a>

### InstallMonitor

```cpp
InstallMonitor(InstallMonitor &&) = delete
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:35](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L35)

Deleted constructor.

---

<a id="operator-214"></a>

### operator=

```cpp
InstallMonitor & operator=(InstallMonitor &&) = delete
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:36](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L36)

Deleted assignment operator.

---

<a id="addtask"></a>

### addTask

`virtual`

```cpp
virtual void addTask(InstallTask::Ptr task)
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:39](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L39)

Adds a task to monitor.

---

<a id="startall"></a>

### startAll

`virtual`

```cpp
virtual void startAll()
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:42](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L42)

Starts all monitored tasks.

---

<a id="cancelall"></a>

### cancelAll

`virtual`

```cpp
virtual void cancelAll()
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:45](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L45)

Cancels all monitored tasks.

---

<a id="iscomplete"></a>

### isComplete

`virtual` `const`

```cpp
virtual bool isComplete() const
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:49](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L49)

Returns true if all install tasks have completed, either successfully or unsuccessfully.

---

<a id="tasks"></a>

### tasks

`virtual` `const`

```cpp
virtual InstallTaskPtrVec tasks() const
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:52](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L52)

Returns the list of monitored package tasks.

---

<a id="packages"></a>

### packages

`virtual` `const`

```cpp
virtual LocalPackageVec packages() const
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:55](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L55)

Returns the list of monitored packages.

## Protected Attributes

| Return | Name | Description |
|--------|------|-------------|
| `std::mutex` | [`_mutex`](#_mutex-17)  |  |
| [`InstallTaskPtrVec`](https://auscaster.com/icey/docs/api-reference/icy-pacm.md#installtaskptrvec) | [`_tasks`](#_tasks-1)  |  |
| [`LocalPackageVec`](https://auscaster.com/icey/docs/api-reference/icy-pacm.md#localpackagevec) | [`_packages`](#_packages)  |  |
| `int` | [`_progress`](#_progress)  |  |

---

<a id="_mutex-17"></a>

### _mutex

```cpp
std::mutex _mutex
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:81](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L81)

---

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

### _tasks

```cpp
InstallTaskPtrVec _tasks
```

Type: [`InstallTaskPtrVec`](https://auscaster.com/icey/docs/api-reference/icy-pacm.md#installtaskptrvec)

[Defined in src/pacm/include/icy/pacm/installmonitor.h:82](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L82)

---

<a id="_packages"></a>

### _packages

```cpp
LocalPackageVec _packages
```

Type: [`LocalPackageVec`](https://auscaster.com/icey/docs/api-reference/icy-pacm.md#localpackagevec)

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

---

<a id="_progress"></a>

### _progress

```cpp
int _progress
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:84](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L84)

## Protected Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`onInstallStateChange`](#oninstallstatechange) `virtual` |  |
| `void` | [`onInstallComplete`](#oninstallcomplete) `virtual` |  |
| `void` | [`setProgress`](#setprogress) `virtual` |  |

---

<a id="oninstallstatechange"></a>

### onInstallStateChange

`virtual`

```cpp
virtual void onInstallStateChange(void * sender, InstallationState & state, const InstallationState & oldState)
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:72](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L72)

---

<a id="oninstallcomplete"></a>

### onInstallComplete

`virtual`

```cpp
virtual void onInstallComplete(InstallTask & task)
```

[Defined in src/pacm/include/icy/pacm/installmonitor.h:76](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installmonitor.h#L76)

---

<a id="setprogress"></a>

### setProgress

`virtual`

```cpp
virtual void setProgress(int value)
```

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