# OnceOnlyTrigger

<a id="onceonlytrigger"></a>

# OnceOnlyTrigger

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

struct OnceOnlyTrigger
```

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

> **Inherits:** [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1)

[Trigger](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1) that fires exactly once at the scheduled time and then expires.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`OnceOnlyTrigger`](#onceonlytrigger-1) | `function` | Declared here |
| [`update`](#update-8) | `function` | Declared here |
| [`expired`](#expired-4) | `function` | Declared here |
| [`type`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#type-20) | `variable` | Inherited from [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1) |
| [`name`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#name-14) | `variable` | Inherited from [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1) |
| [`timesRun`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#timesrun) | `variable` | Inherited from [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1) |
| [`createdAt`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#createdat) | `variable` | Inherited from [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1) |
| [`scheduleAt`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#scheduleat) | `variable` | Inherited from [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1) |
| [`lastRunAt`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#lastrunat) | `variable` | Inherited from [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1) |
| [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-2) | `function` | Inherited from [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1) |
| [`update`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#update-10) | `function` | Inherited from [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1) |
| [`remaining`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#remaining-2) | `function` | Inherited from [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1) |
| [`timeout`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#timeout-11) | `function` | Inherited from [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1) |
| [`expired`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#expired-5) | `function` | Inherited from [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1) |
| [`serialize`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#serialize-5) | `function` | Inherited from [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1) |
| [`deserialize`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#deserialize-5) | `function` | Inherited from [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1) |
| [`~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 [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-1)

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`type`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#type-20)  | The type of this trigger class. |
| `variable` | [`name`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#name-14)  | The display name of this trigger class. |
| `variable` | [`timesRun`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#timesrun)  | The number of times the task has run since creation; |
| `variable` | [`createdAt`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#createdat)  | The time the task was created. |
| `variable` | [`scheduleAt`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#scheduleat)  | The time the task is scheduled to run. |
| `variable` | [`lastRunAt`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#lastrunat)  | The time the task was last run. |
| `function` | [`Trigger`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#trigger-2)  |  |
| `function` | [`update`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#update-10) `virtual` | Updates the scheduleAt value to the next scheduled time. |
| `function` | [`remaining`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#remaining-2) `virtual` | Returns the milliseconds remaining until the next scheduled timeout. |
| `function` | [`timeout`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#timeout-11) `virtual` | Returns true if the task is ready to be run, false otherwise. |
| `function` | [`expired`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#expired-5) `virtual` | Returns true if the task is expired and should be destroyed. Returns false by default. |
| `function` | [`serialize`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#serialize-5) `virtual` `override` | Serializes timing state (type, name, createdAt, scheduleAt, lastRunAt, timesRun) to `root`. |
| `function` | [`deserialize`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#deserialize-5) `virtual` `override` | Deserializes timing state from `root`. |

## 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 |
|--------|------|-------------|
|  | [`OnceOnlyTrigger`](#onceonlytrigger-1)  | Constructs the trigger with type "OnceOnlyTrigger". |
| `void` | [`update`](#update-8) `virtual` `inline` `override` | No-op; scheduleAt is set once at construction and never advanced. |
| `bool` | [`expired`](#expired-4) `virtual` `override` | Returns true after the task has run at least once. |

---

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

### OnceOnlyTrigger

```cpp
OnceOnlyTrigger()
```

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

Constructs the trigger with type "OnceOnlyTrigger".

---

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

### update

`virtual` `inline` `override`

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

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

No-op; scheduleAt is set once at construction and never advanced.

#### Reimplements

- [`Trigger::update`](https://auscaster.com/icey/docs/api-reference/icy-sched-Trigger.md#update-10)

---

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

### expired

`virtual` `override`

```cpp
virtual bool expired() override
```

[Defined in src/sched/include/icy/sched/trigger.h:126](https://github.com/auscaster/icey/blob/main/src/sched/include/icy/sched/trigger.h#L126)

Returns true after the task has run at least once.

#### Reimplements

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