# Scheduler

<a id="scheduler"></a>

# Scheduler

```cpp
#include <icy/sched/scheduler.h>

class Scheduler
```

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

> **Inherits:** [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1), [`ISerializable`](https://auscaster.com/icey/docs/api-reference/icy-json-ISerializable.md#iserializable)

The [Scheduler](#scheduler) manages and runs tasks that need to be executed at specific times.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`Scheduler`](#scheduler-1) | `function` | Declared here |
| [`~Scheduler`](#scheduler-2) | `function` | Declared here |
| [`schedule`](#schedule) | `function` | Declared here |
| [`cancel`](#cancel-10) | `function` | Declared here |
| [`clear`](#clear-9) | `function` | Declared here |
| [`serialize`](#serialize-3) | `function` | Declared here |
| [`deserialize`](#deserialize-3) | `function` | Declared here |
| [`print`](#print-16) | `function` | Declared here |
| [`cancel`](#cancel-11) | `function` | Declared here |
| [`getDefault`](#getdefault-5) | `function` | Declared here |
| [`factory`](#factory-1) | `function` | Declared here |
| [`run`](#run-13) | `function` | Declared here |
| [`update`](#update-9) | `function` | Declared here |
| [`Idle`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#idle) | `variable` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`Shutdown`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#shutdown-1) | `variable` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-2) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`~TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-3) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-4) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#operator-98) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-5) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#operator-99) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`start`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#start-7) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`cancel`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#cancel-5) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`destroy`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#destroy-3) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`exists`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#exists-1) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`get`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#get-12) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`setRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#setrunner) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`className`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#classname-4) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`getDefault`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#getdefault-2) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`_mutex`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#_mutex-6) | `variable` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`_runner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#_runner) | `variable` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`_tasks`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#_tasks) | `variable` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`_current`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#_current) | `variable` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`run`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#run-6) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`add`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#add-6) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`remove`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#remove-3) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`next`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#next-2) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`clear`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#clear-5) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`onAdd`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#onadd-2) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`onStart`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#onstart) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`onCancel`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#oncancel) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`onRemove`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#onremove-2) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`onRun`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#onrun) | `function` | Inherited from [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) |
| [`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) |
| [`~ISerializable`](https://auscaster.com/icey/docs/api-reference/icy-json-ISerializable.md#iserializable-1) | `function` | Inherited from [`ISerializable`](https://auscaster.com/icey/docs/api-reference/icy-json-ISerializable.md#iserializable) |
| [`serialize`](https://auscaster.com/icey/docs/api-reference/icy-json-ISerializable.md#serialize-1) | `function` | Inherited from [`ISerializable`](https://auscaster.com/icey/docs/api-reference/icy-json-ISerializable.md#iserializable) |
| [`deserialize`](https://auscaster.com/icey/docs/api-reference/icy-json-ISerializable.md#deserialize-1) | `function` | Inherited from [`ISerializable`](https://auscaster.com/icey/docs/api-reference/icy-json-ISerializable.md#iserializable) |

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

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`Idle`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#idle)  | Fires after completing an iteration of all tasks. |
| `variable` | [`Shutdown`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#shutdown-1)  | Signals when the [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) is shutting down. |
| `function` | [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-2)  |  |
| `function` | [`~TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-3) `virtual` |  |
| `function` | [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-4)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#operator-98)  | Deleted assignment operator. |
| `function` | [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-5)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#operator-99)  | Deleted assignment operator. |
| `function` | [`start`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#start-7) `virtual` | Starts a task, adding it if it doesn't exist. |
| `function` | [`cancel`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#cancel-5) `virtual` | Cancels a task. |
| `function` | [`destroy`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#destroy-3) `virtual` | Queues a task for destruction. |
| `function` | [`exists`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#exists-1) `virtual` `const` | Returns whether a task exists. |
| `function` | [`get`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#get-12) `virtual` `const` | Returns the task pointer matching the given ID, or nullptr if no task exists. |
| `function` | [`setRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#setrunner) `virtual` | Set the asynchronous context for packet processing. This may be a [Thread](https://auscaster.com/icey/docs/api-reference/icy-Thread.md#thread-1) or another derivative of Async. Must be set before the stream is activated. |
| `function` | [`className`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#classname-4) `virtual` `const` `inline` |  |
| `function` | [`getDefault`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#getdefault-2) `static` | Returns the default [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) singleton, although [TaskRunner](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) instances may be initialized individually. The default runner should be kept for short running tasks such as timers in order to maintain performance. |
| `variable` | [`_mutex`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#_mutex-6)  |  |
| `variable` | [`_runner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#_runner)  |  |
| `variable` | [`_tasks`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#_tasks)  |  |
| `variable` | [`_current`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#_current)  | [Task](https://auscaster.com/icey/docs/api-reference/icy-Task.md#task) currently executing in [run()](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#run-6). It is extracted from `_tasks` while running so other threads cannot delete it mid-execution; [exists()](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#exists-1)/get()/remove() must consult it under `_mutex`. |
| `function` | [`run`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#run-6) `virtual` `override` | Called by the async context to run the next task. |
| `function` | [`add`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#add-6) `virtual` | Adds a task to the runner. |
| `function` | [`remove`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#remove-3) `virtual` | Removes a task from the runner. |
| `function` | [`next`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#next-2) `virtual` `const` | Returns the next task to be run. |
| `function` | [`clear`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#clear-5) `virtual` | Destroys and clears all manages tasks. |
| `function` | [`onAdd`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#onadd-2) `virtual` | Called after a task is added. |
| `function` | [`onStart`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#onstart) `virtual` | Called after a task is started. |
| `function` | [`onCancel`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#oncancel) `virtual` | Called after a task is cancelled. |
| `function` | [`onRemove`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#onremove-2) `virtual` | Called after a task is removed. |
| `function` | [`onRun`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#onrun) `virtual` | Called after a task has run. |

## 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 [`ISerializable`](https://auscaster.com/icey/docs/api-reference/icy-json-ISerializable.md#iserializable)

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`~ISerializable`](https://auscaster.com/icey/docs/api-reference/icy-json-ISerializable.md#iserializable-1) `virtual` | Defaulted destructor. |
| `function` | [`serialize`](https://auscaster.com/icey/docs/api-reference/icy-json-ISerializable.md#serialize-1) `virtual` | Serializes this object's state into `root`. |
| `function` | [`deserialize`](https://auscaster.com/icey/docs/api-reference/icy-json-ISerializable.md#deserialize-1) `virtual` | Populates this object's state from `root`. |

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`Scheduler`](#scheduler-1)  |  |
|  | [`~Scheduler`](#scheduler-2) `virtual` |  |
| `void` | [`schedule`](#schedule) `virtual` | Adds `task` to the scheduler and starts running it on its configured trigger. The scheduler takes ownership of the task. |
| `void` | [`cancel`](#cancel-10) `virtual` | Removes `task` from the scheduler and cancels any pending execution. |
| `void` | [`clear`](#clear-9) `virtual` `override` | Removes all scheduled tasks. |
| `void` | [`serialize`](#serialize-3) `virtual` `override` | Serializes all scheduled tasks and their triggers to `root`. |
| `void` | [`deserialize`](#deserialize-3) `virtual` `override` | Reconstructs the task list from `root` using the [TaskFactory](https://auscaster.com/icey/docs/api-reference/icy-sched-TaskFactory.md#taskfactory). Skips entries that fail to deserialize and logs the error. |
| `void` | [`print`](#print-16) `virtual` | Writes a pretty-printed JSON representation of all tasks to `ost`. |
| `bool` | [`cancel`](#cancel-11)  | Cancels a task. |

---

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

### Scheduler

```cpp
Scheduler()
```

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

---

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

### ~Scheduler

`virtual`

```cpp
virtual ~Scheduler()
```

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

---

<a id="schedule"></a>

### schedule

`virtual`

```cpp
virtual void schedule(sched::Task * task)
```

[Defined in src/sched/include/icy/sched/scheduler.h:41](https://github.com/auscaster/icey/blob/main/src/sched/include/icy/sched/scheduler.h#L41)

Adds `task` to the scheduler and starts running it on its configured trigger. The scheduler takes ownership of the task.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `task` | [`sched::Task`](https://auscaster.com/icey/docs/api-reference/icy-sched-Task.md#task-5) * | [Task](https://auscaster.com/icey/docs/api-reference/icy-sched-Task.md#task-5) to schedule; must have a trigger set. |

---

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

### cancel

`virtual`

```cpp
virtual void cancel(sched::Task * task)
```

[Defined in src/sched/include/icy/sched/scheduler.h:47](https://github.com/auscaster/icey/blob/main/src/sched/include/icy/sched/scheduler.h#L47)

Removes `task` from the scheduler and cancels any pending execution.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `task` | [`sched::Task`](https://auscaster.com/icey/docs/api-reference/icy-sched-Task.md#task-5) * | [Task](https://auscaster.com/icey/docs/api-reference/icy-sched-Task.md#task-5) to cancel. |

---

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

### clear

`virtual` `override`

```cpp
virtual void clear() override
```

[Defined in src/sched/include/icy/sched/scheduler.h:50](https://github.com/auscaster/icey/blob/main/src/sched/include/icy/sched/scheduler.h#L50)

Removes all scheduled tasks.

#### Reimplements

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

---

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

### serialize

`virtual` `override`

```cpp
virtual void serialize(json::Value & root) override
```

[Defined in src/sched/include/icy/sched/scheduler.h:54](https://github.com/auscaster/icey/blob/main/src/sched/include/icy/sched/scheduler.h#L54)

Serializes all scheduled tasks and their triggers to `root`.

#### Reimplements

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `root` | [`json::Value`](https://auscaster.com/icey/docs/api-reference/icy-json.md#value) & | JSON array to append serialized task entries to. |

---

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

### deserialize

`virtual` `override`

```cpp
virtual void deserialize(json::Value & root) override
```

[Defined in src/sched/include/icy/sched/scheduler.h:59](https://github.com/auscaster/icey/blob/main/src/sched/include/icy/sched/scheduler.h#L59)

Reconstructs the task list from `root` using the [TaskFactory](https://auscaster.com/icey/docs/api-reference/icy-sched-TaskFactory.md#taskfactory). Skips entries that fail to deserialize and logs the error.

#### Reimplements

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `root` | [`json::Value`](https://auscaster.com/icey/docs/api-reference/icy-json.md#value) & | JSON array previously produced by [serialize()](#serialize-3). |

---

<a id="print-16"></a>

### print

`virtual`

```cpp
virtual void print(std::ostream & ost)
```

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

Writes a pretty-printed JSON representation of all tasks to `ost`.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `ost` | `std::ostream &` | Output stream to write to. |

---

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

### cancel

```cpp
bool cancel(Task * task)
```

[Defined in src/sched/include/icy/sched/scheduler.h:43](https://github.com/auscaster/icey/blob/main/src/sched/include/icy/sched/scheduler.h#L43)

Cancels a task.

The task reference will be managed by the [TaskRunner](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) until the task is destroyed.

## Public Static Methods

| Return | Name | Description |
|--------|------|-------------|
| [`Scheduler`](#scheduler) & | [`getDefault`](#getdefault-5) `static` | Returns the default [Scheduler](#scheduler) singleton, although [Scheduler](#scheduler) instances may also be initialized individually. |
| [`sched::TaskFactory`](https://auscaster.com/icey/docs/api-reference/icy-sched-TaskFactory.md#taskfactory) & | [`factory`](#factory-1) `static` | Returns the [TaskFactory](https://auscaster.com/icey/docs/api-reference/icy-sched-TaskFactory.md#taskfactory) singleton. |

---

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

### getDefault

`static`

```cpp
static Scheduler & getDefault()
```

[Defined in src/sched/include/icy/sched/scheduler.h:68](https://github.com/auscaster/icey/blob/main/src/sched/include/icy/sched/scheduler.h#L68)

Returns the default [Scheduler](#scheduler) singleton, although [Scheduler](#scheduler) instances may also be initialized individually.

---

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

### factory

`static`

```cpp
static sched::TaskFactory & factory()
```

[Defined in src/sched/include/icy/sched/scheduler.h:71](https://github.com/auscaster/icey/blob/main/src/sched/include/icy/sched/scheduler.h#L71)

Returns the [TaskFactory](https://auscaster.com/icey/docs/api-reference/icy-sched-TaskFactory.md#taskfactory) singleton.

## Protected Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`run`](#run-13) `virtual` `override` | The run method will be called by the asynchronous context. |
| `void` | [`update`](#update-9) `virtual` |  |

---

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

### run

`virtual` `override`

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

[Defined in src/sched/include/icy/sched/scheduler.h:74](https://github.com/auscaster/icey/blob/main/src/sched/include/icy/sched/scheduler.h#L74)

The run method will be called by the asynchronous context.

#### Reimplements

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

---

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

### update

`virtual`

```cpp
virtual void update()
```

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