# InstallTask

<a id="installtask"></a>

# InstallTask

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

class InstallTask
```

[Defined in src/pacm/include/icy/pacm/installtask.h:89](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L89)

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

Downloads, extracts, and finalizes a single package installation.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`PackageManager`](#packagemanager) | `friend` | Declared here |
| [`InstallMonitor`](#installmonitor-5) | `friend` | Declared here |
| [`Progress`](#progress-2) | `variable` | Declared here |
| [`Complete`](#complete-5) | `variable` | Declared here |
| [`InstallTask`](#installtask-1) | `function` | Declared here |
| [`~InstallTask`](#installtask-2) | `function` | Declared here |
| [`InstallTask`](#installtask-3) | `function` | Declared here |
| [`operator=`](#operator-215) | `function` | Declared here |
| [`InstallTask`](#installtask-4) | `function` | Declared here |
| [`operator=`](#operator-216) | `function` | Declared here |
| [`start`](#start-26) | `function` | Declared here |
| [`cancel`](#cancel-9) | `function` | Declared here |
| [`doDownload`](#dodownload) | `function` | Declared here |
| [`doExtract`](#doextract) | `function` | Declared here |
| [`doFinalize`](#dofinalize) | `function` | Declared here |
| [`setComplete`](#setcomplete) | `function` | Declared here |
| [`getRemoteAsset`](#getremoteasset) | `function` | Declared here |
| [`local`](#local) | `function` | Declared here |
| [`remote`](#remote) | `function` | Declared here |
| [`options`](#options-5) | `function` | Declared here |
| [`loop`](#loop-8) | `function` | Declared here |
| [`valid`](#valid-2) | `function` | Declared here |
| [`cancelled`](#cancelled-5) | `function` | Declared here |
| [`failed`](#failed-1) | `function` | Declared here |
| [`success`](#success-1) | `function` | Declared here |
| [`complete`](#complete-6) | `function` | Declared here |
| [`progress`](#progress-3) | `function` | Declared here |
| [`_mutex`](#_mutex-18) | `variable` | Declared here |
| [`_runner`](#_runner-3) | `variable` | Declared here |
| [`_error`](#_error-6) | `variable` | Declared here |
| [`_manager`](#_manager-3) | `variable` | Declared here |
| [`_local`](#_local) | `variable` | Declared here |
| [`_remote`](#_remote) | `variable` | Declared here |
| [`_options`](#_options-1) | `variable` | Declared here |
| [`_progress`](#_progress-1) | `variable` | Declared here |
| [`_downloading`](#_downloading) | `variable` | Declared here |
| [`_dlconn`](#_dlconn) | `variable` | Declared here |
| [`_loop`](#_loop-2) | `variable` | Declared here |
| [`run`](#run-12) | `function` | Declared here |
| [`onStateChange`](#onstatechange-3) | `function` | Declared here |
| [`onDownloadProgress`](#ondownloadprogress) | `function` | Declared here |
| [`onDownloadComplete`](#ondownloadcomplete) | `function` | Declared here |
| [`setProgress`](#setprogress-1) | `function` | Declared here |
| [`Ptr`](#ptr-19) | `typedef` | Declared here |
| [`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) |
| [`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) |

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

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

## Friends

| Name | Description |
|------|-------------|
| [`PackageManager`](#packagemanager)  |  |
| [`InstallMonitor`](#installmonitor-5)  |  |

---

<a id="packagemanager"></a>

### PackageManager

```cpp
friend class PackageManager
```

[Defined in src/pacm/include/icy/pacm/installtask.h:202](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L202)

---

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

### InstallMonitor

```cpp
friend class InstallMonitor
```

[Defined in src/pacm/include/icy/pacm/installtask.h:203](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L203)

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void([`InstallTask`](#installtask) &, int &)> | [`Progress`](#progress-2)  | Signals on progress update [0-100]. |
| [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void([`InstallTask`](#installtask) &)> | [`Complete`](#complete-5)  | Signals on task completion for both success and failure cases. |

---

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

### Progress

```cpp
Signal< void(InstallTask &, int &)> Progress
```

Type: [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void([`InstallTask`](#installtask) &, int &)>

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

Signals on progress update [0-100].

---

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

### Complete

```cpp
Signal< void(InstallTask &)> Complete
```

Type: [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void([`InstallTask`](#installtask) &)>

[Defined in src/pacm/include/icy/pacm/installtask.h:175](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L175)

Signals on task completion for both success and failure cases.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`InstallTask`](#installtask-1)  |  |
|  | [`~InstallTask`](#installtask-2) `virtual` `noexcept` |  |
|  | [`InstallTask`](#installtask-3)  | Deleted constructor. |
| [`InstallTask`](#installtask) & | [`operator=`](#operator-215)  | Deleted assignment operator. |
|  | [`InstallTask`](#installtask-4)  | Deleted constructor. |
| [`InstallTask`](#installtask) & | [`operator=`](#operator-216)  | Deleted assignment operator. |
| `void` | [`start`](#start-26) `virtual` | Validates options, resolves the install directory, and launches the background runner. |
| `void` | [`cancel`](#cancel-9) `virtual` `override` | Transitions the task to the Cancelled state. |
| `void` | [`doDownload`](#dodownload) `virtual` | Downloads the package archive from the server. |
| `void` | [`doExtract`](#doextract) `virtual` | Extracts the downloaded package files to the intermediate directory. |
| `void` | [`doFinalize`](#dofinalize) `virtual` | Moves extracted files from the intermediate directory to the installation directory. |
| `void` | [`setComplete`](#setcomplete) `virtual` | Called when the task completes either successfully or in error. This will trigger destruction. |
| [`Package::Asset`](https://auscaster.com/icey/docs/api-reference/icy-pacm-Package-Asset.md#asset-1) | [`getRemoteAsset`](#getremoteasset) `virtual` `const` | Returns the remote asset selected by the current [InstallOptions](https://auscaster.com/icey/docs/api-reference/icy-pacm-InstallOptions.md#installoptions). Respects version and sdkVersion overrides; falls back to latestAsset(). |
| [`LocalPackage`](https://auscaster.com/icey/docs/api-reference/icy-pacm-LocalPackage.md#localpackage) * | [`local`](#local) `virtual` `const` | Returns a pointer to the local package record. |
| [`RemotePackage`](https://auscaster.com/icey/docs/api-reference/icy-pacm-RemotePackage.md#remotepackage) * | [`remote`](#remote) `virtual` `const` | Returns a pointer to the remote package record. |
| const [`InstallOptions`](https://auscaster.com/icey/docs/api-reference/icy-pacm-InstallOptions.md#installoptions) & | [`options`](#options-5) `virtual` `const` | Returns a read-only view of the installation options for this task. |
| [`uv::Loop`](https://auscaster.com/icey/docs/api-reference/uv.md#loop-1) * | [`loop`](#loop-8) `virtual` `const` | Returns the libuv event loop used for async operations. |
| `bool` | [`valid`](#valid-2) `virtual` `const` | Returns true if the task is not in a Failed state and both local and remote (if set) packages are valid. |
| `bool` | [`cancelled`](#cancelled-5) `virtual` `const` `override` | Returns true if the task is in the Cancelled state. |
| `bool` | [`failed`](#failed-1) `virtual` `const` | Returns true if the task is in the Failed state. |
| `bool` | [`success`](#success-1) `virtual` `const` | Returns true if the task is in the Installed (success) state. |
| `bool` | [`complete`](#complete-6) `virtual` `const` | Returns true if the task has reached a terminal state (Installed, Cancelled, or Failed). |
| `int` | [`progress`](#progress-3) `virtual` `const` | Returns the current progress value in the range [0, 100]. |

---

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

### InstallTask

```cpp
InstallTask(PackageManager & manager, LocalPackage * local, RemotePackage * remote, const InstallOptions & options = InstallOptions(), uv::Loop * loop = uv::defaultLoop())
```

[Defined in src/pacm/include/icy/pacm/installtask.h:101](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L101)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `manager` | [`PackageManager`](https://auscaster.com/icey/docs/api-reference/icy-pacm-PackageManager.md#packagemanager-1) & | Owning [PackageManager](https://auscaster.com/icey/docs/api-reference/icy-pacm-PackageManager.md#packagemanager-1) instance. |
| `local` | [`LocalPackage`](https://auscaster.com/icey/docs/api-reference/icy-pacm-LocalPackage.md#localpackage) * | Local package record (must not be null). |
| `remote` | [`RemotePackage`](https://auscaster.com/icey/docs/api-reference/icy-pacm-RemotePackage.md#remotepackage) * | Remote package record to install from (may be null for local-only ops). |
| `options` | const [`InstallOptions`](https://auscaster.com/icey/docs/api-reference/icy-pacm-InstallOptions.md#installoptions) & | Version and path overrides for this installation. |
| `loop` | [`uv::Loop`](https://auscaster.com/icey/docs/api-reference/uv.md#loop-1) * | libuv event loop to use for async HTTP downloads. |

#### Exceptions

| Exception | Description |
|-----------|-------------|
| `std::runtime_error` | if the task configuration is invalid. |

---

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

### ~InstallTask

`virtual` `noexcept`

```cpp
virtual ~InstallTask() noexcept
```

[Defined in src/pacm/include/icy/pacm/installtask.h:104](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L104)

---

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

### InstallTask

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

[Defined in src/pacm/include/icy/pacm/installtask.h:106](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L106)

Deleted constructor.

---

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

### operator=

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

[Defined in src/pacm/include/icy/pacm/installtask.h:107](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L107)

Deleted assignment operator.

---

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

### InstallTask

```cpp
InstallTask(InstallTask &&) = delete
```

[Defined in src/pacm/include/icy/pacm/installtask.h:108](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L108)

Deleted constructor.

---

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

### operator=

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

[Defined in src/pacm/include/icy/pacm/installtask.h:109](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L109)

Deleted assignment operator.

---

<a id="start-26"></a>

### start

`virtual`

```cpp
virtual void start()
```

[Defined in src/pacm/include/icy/pacm/installtask.h:113](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L113)

Validates options, resolves the install directory, and launches the background runner.

#### Exceptions

| Exception | Description |
|-----------|-------------|
| `std::runtime_error` | if the requested version or SDK version asset is unavailable. |

---

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

### cancel

`virtual` `override`

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

[Defined in src/pacm/include/icy/pacm/installtask.h:116](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L116)

Transitions the task to the Cancelled state.

#### Reimplements

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

---

<a id="dodownload"></a>

### doDownload

`virtual`

```cpp
virtual void doDownload()
```

[Defined in src/pacm/include/icy/pacm/installtask.h:119](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L119)

Downloads the package archive from the server.

---

<a id="doextract"></a>

### doExtract

`virtual`

```cpp
virtual void doExtract()
```

[Defined in src/pacm/include/icy/pacm/installtask.h:123](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L123)

Extracts the downloaded package files to the intermediate directory.

---

<a id="dofinalize"></a>

### doFinalize

`virtual`

```cpp
virtual void doFinalize()
```

[Defined in src/pacm/include/icy/pacm/installtask.h:127](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L127)

Moves extracted files from the intermediate directory to the installation directory.

---

<a id="setcomplete"></a>

### setComplete

`virtual`

```cpp
virtual void setComplete()
```

[Defined in src/pacm/include/icy/pacm/installtask.h:132](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L132)

Called when the task completes either successfully or in error. This will trigger destruction.

---

<a id="getremoteasset"></a>

### getRemoteAsset

`virtual` `const`

```cpp
virtual Package::Asset getRemoteAsset() const
```

[Defined in src/pacm/include/icy/pacm/installtask.h:136](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L136)

Returns the remote asset selected by the current [InstallOptions](https://auscaster.com/icey/docs/api-reference/icy-pacm-InstallOptions.md#installoptions). Respects version and sdkVersion overrides; falls back to latestAsset().

---

<a id="local"></a>

### local

`virtual` `const`

```cpp
virtual LocalPackage * local() const
```

[Defined in src/pacm/include/icy/pacm/installtask.h:139](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L139)

Returns a pointer to the local package record.

---

<a id="remote"></a>

### remote

`virtual` `const`

```cpp
virtual RemotePackage * remote() const
```

[Defined in src/pacm/include/icy/pacm/installtask.h:142](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L142)

Returns a pointer to the remote package record.

---

<a id="options-5"></a>

### options

`virtual` `const`

```cpp
virtual const InstallOptions & options() const
```

[Defined in src/pacm/include/icy/pacm/installtask.h:145](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L145)

Returns a read-only view of the installation options for this task.

---

<a id="loop-8"></a>

### loop

`virtual` `const`

```cpp
virtual uv::Loop * loop() const
```

[Defined in src/pacm/include/icy/pacm/installtask.h:148](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L148)

Returns the libuv event loop used for async operations.

---

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

### valid

`virtual` `const`

```cpp
virtual bool valid() const
```

[Defined in src/pacm/include/icy/pacm/installtask.h:152](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L152)

Returns true if the task is not in a Failed state and both local and remote (if set) packages are valid.

---

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

### cancelled

`virtual` `const` `override`

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

[Defined in src/pacm/include/icy/pacm/installtask.h:155](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L155)

Returns true if the task is in the Cancelled state.

#### Reimplements

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

---

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

### failed

`virtual` `const`

```cpp
virtual bool failed() const
```

[Defined in src/pacm/include/icy/pacm/installtask.h:158](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L158)

Returns true if the task is in the Failed state.

---

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

### success

`virtual` `const`

```cpp
virtual bool success() const
```

[Defined in src/pacm/include/icy/pacm/installtask.h:161](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L161)

Returns true if the task is in the Installed (success) state.

---

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

### complete

`virtual` `const`

```cpp
virtual bool complete() const
```

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

Returns true if the task has reached a terminal state (Installed, Cancelled, or Failed).

---

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

### progress

`virtual` `const`

```cpp
virtual int progress() const
```

[Defined in src/pacm/include/icy/pacm/installtask.h:168](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L168)

Returns the current progress value in the range [0, 100].

## Protected Attributes

| Return | Name | Description |
|--------|------|-------------|
| `std::mutex` | [`_mutex`](#_mutex-18)  |  |
| [`Idler`](https://auscaster.com/icey/docs/api-reference/icy-Idler.md#idler) | [`_runner`](#_runner-3)  |  |
| [`icy::Error`](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) | [`_error`](#_error-6)  |  |
| [`PackageManager`](https://auscaster.com/icey/docs/api-reference/icy-pacm-PackageManager.md#packagemanager-1) & | [`_manager`](#_manager-3)  |  |
| [`LocalPackage`](https://auscaster.com/icey/docs/api-reference/icy-pacm-LocalPackage.md#localpackage) * | [`_local`](#_local)  |  |
| [`RemotePackage`](https://auscaster.com/icey/docs/api-reference/icy-pacm-RemotePackage.md#remotepackage) * | [`_remote`](#_remote)  |  |
| [`InstallOptions`](https://auscaster.com/icey/docs/api-reference/icy-pacm-InstallOptions.md#installoptions) | [`_options`](#_options-1)  |  |
| `int` | [`_progress`](#_progress-1)  |  |
| `bool` | [`_downloading`](#_downloading)  |  |
| [`http::ClientConnection::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-http-ClientConnection.md#ptr-16) | [`_dlconn`](#_dlconn)  |  |
| [`uv::Loop`](https://auscaster.com/icey/docs/api-reference/uv.md#loop-1) * | [`_loop`](#_loop-2)  |  |

---

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

### _mutex

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

[Defined in src/pacm/include/icy/pacm/installtask.h:189](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L189)

---

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

### _runner

```cpp
Idler _runner
```

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

[Defined in src/pacm/include/icy/pacm/installtask.h:191](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L191)

---

<a id="_error-6"></a>

### _error

```cpp
icy::Error _error
```

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

[Defined in src/pacm/include/icy/pacm/installtask.h:192](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L192)

---

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

### _manager

```cpp
PackageManager & _manager
```

Type: [`PackageManager`](https://auscaster.com/icey/docs/api-reference/icy-pacm-PackageManager.md#packagemanager-1) &

[Defined in src/pacm/include/icy/pacm/installtask.h:193](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L193)

---

<a id="_local"></a>

### _local

```cpp
LocalPackage * _local
```

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

[Defined in src/pacm/include/icy/pacm/installtask.h:194](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L194)

---

<a id="_remote"></a>

### _remote

```cpp
RemotePackage * _remote
```

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

[Defined in src/pacm/include/icy/pacm/installtask.h:195](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L195)

---

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

### _options

```cpp
InstallOptions _options
```

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

[Defined in src/pacm/include/icy/pacm/installtask.h:196](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L196)

---

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

### _progress

```cpp
int _progress
```

[Defined in src/pacm/include/icy/pacm/installtask.h:197](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L197)

---

<a id="_downloading"></a>

### _downloading

```cpp
bool _downloading
```

[Defined in src/pacm/include/icy/pacm/installtask.h:198](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L198)

---

<a id="_dlconn"></a>

### _dlconn

```cpp
http::ClientConnection::Ptr _dlconn
```

Type: [`http::ClientConnection::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-http-ClientConnection.md#ptr-16)

[Defined in src/pacm/include/icy/pacm/installtask.h:199](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L199)

---

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

### _loop

```cpp
uv::Loop * _loop
```

Type: [`uv::Loop`](https://auscaster.com/icey/docs/api-reference/uv.md#loop-1) *

[Defined in src/pacm/include/icy/pacm/installtask.h:200](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L200)

## Protected Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`run`](#run-12) `virtual` `override` | Called asynchronously by the thread to do the work. |
| `void` | [`onStateChange`](#onstatechange-3) `override` |  |
| `void` | [`onDownloadProgress`](#ondownloadprogress) `virtual` |  |
| `void` | [`onDownloadComplete`](#ondownloadcomplete) `virtual` |  |
| `void` | [`setProgress`](#setprogress-1) `virtual` |  |

---

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

### run

`virtual` `override`

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

[Defined in src/pacm/include/icy/pacm/installtask.h:179](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L179)

Called asynchronously by the thread to do the work.

#### Reimplements

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

---

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

### onStateChange

`override`

```cpp
void onStateChange(InstallationState & state, const InstallationState & oldState) override
```

[Defined in src/pacm/include/icy/pacm/installtask.h:181](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L181)

---

<a id="ondownloadprogress"></a>

### onDownloadProgress

`virtual`

```cpp
virtual void onDownloadProgress(const double & progress)
```

[Defined in src/pacm/include/icy/pacm/installtask.h:183](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L183)

---

<a id="ondownloadcomplete"></a>

### onDownloadComplete

`virtual`

```cpp
virtual void onDownloadComplete(const http::Response & response)
```

[Defined in src/pacm/include/icy/pacm/installtask.h:184](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L184)

---

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

### setProgress

`virtual`

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

[Defined in src/pacm/include/icy/pacm/installtask.h:186](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L186)

## Public Types

| Name | Description |
|------|-------------|
| [`Ptr`](#ptr-19)  |  |

---

<a id="ptr-19"></a>

### Ptr

```cpp
using Ptr = std::shared_ptr< InstallTask >
```

Type: std::shared_ptr< [`InstallTask`](#installtask) >

[Defined in src/pacm/include/icy/pacm/installtask.h:93](https://github.com/auscaster/icey/blob/main/src/pacm/include/icy/pacm/installtask.h#L93)
