# IntervalTrigger

<a id="intervaltrigger"></a>

# IntervalTrigger

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

struct IntervalTrigger
```

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

> **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 repeatedly at a fixed time interval.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`interval`](#interval-1) | `variable` | Declared here |
| [`maxTimes`](#maxtimes) | `variable` | Declared here |
| [`IntervalTrigger`](#intervaltrigger-1) | `function` | Declared here |
| [`update`](#update-7) | `function` | Declared here |
| [`expired`](#expired-3) | `function` | Declared here |
| [`serialize`](#serialize-2) | `function` | Declared here |
| [`deserialize`](#deserialize-2) | `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 Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`Timespan`](https://auscaster.com/icey/docs/api-reference/icy-Timespan.md#timespan) | [`interval`](#interval-1)  | This value represents the interval to wait before running the task. |
| `int` | [`maxTimes`](#maxtimes)  | The maximum number of times the task will be run before it is destroyed. 0 for no effect. |

---

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

### interval

```cpp
Timespan interval
```

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

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

This value represents the interval to wait before running the task.

---

<a id="maxtimes"></a>

### maxTimes

```cpp
int maxTimes
```

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

The maximum number of times the task will be run before it is destroyed. 0 for no effect.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`IntervalTrigger`](#intervaltrigger-1)  | Constructs the trigger with type "IntervalTrigger" and maxTimes = 0 (unlimited). |
| `void` | [`update`](#update-7) `virtual` `override` | Advances scheduleAt by one `interval` period. |
| `bool` | [`expired`](#expired-3) `virtual` `override` | Returns true when maxTimes > 0 and timesRun >= maxTimes. |
| `void` | [`serialize`](#serialize-2) `virtual` `override` | Serializes interval fields (days, hours, minutes, seconds) in addition to base fields. |
| `void` | [`deserialize`](#deserialize-2) `virtual` `override` | Deserializes interval fields from `root`. Throws if the resulting interval is zero. |

---

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

### IntervalTrigger

```cpp
IntervalTrigger()
```

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

Constructs the trigger with type "IntervalTrigger" and maxTimes = 0 (unlimited).

---

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

### update

`virtual` `override`

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

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

Advances scheduleAt by one `interval` period.

#### Reimplements

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

---

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

### expired

`virtual` `override`

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

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

Returns true when maxTimes > 0 and timesRun >= maxTimes.

#### Reimplements

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

---

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

### serialize

`virtual` `override`

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

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

Serializes interval fields (days, hours, minutes, seconds) in addition to base fields.

#### Reimplements

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

#### Parameters

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

---

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

### deserialize

`virtual` `override`

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

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

Deserializes interval fields from `root`. Throws if the resulting interval is zero.

#### Reimplements

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

#### Parameters

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