# LinuxDeviceWatcher

<a id="linuxdevicewatcher"></a>

# LinuxDeviceWatcher

```cpp
#include <icy/av/linux/v4l2.h>

class LinuxDeviceWatcher
```

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

> **Inherits:** [`DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher)

Monitors device add/remove events via libudev.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`LinuxDeviceWatcher`](#linuxdevicewatcher-1) | `function` | Declared here |
| [`~LinuxDeviceWatcher`](#linuxdevicewatcher-2) | `function` | Declared here |
| [`start`](#start-14) | `function` | Declared here |
| [`stop`](#stop-6) | `function` | Declared here |
| [`_impl`](#_impl) | `variable` | Declared here |
| [`_manager`](#_manager) | `variable` | Declared here |
| [`DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher-1) | `function` | Inherited from [`DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher) |
| [`~DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher-2) | `function` | Inherited from [`DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher) |
| [`start`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#start-19) | `function` | Inherited from [`DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher) |
| [`stop`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#stop-10) | `function` | Inherited from [`DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher) |

## Inherited from [`DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher)

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher-1) `inline` `explicit` |  |
| `function` | [`~DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher-2) `virtual` `noexcept` | Defaulted destructor. |
| `function` | [`start`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#start-19) `virtual` `inline` |  |
| `function` | [`stop`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#stop-10) `virtual` `inline` |  |

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`LinuxDeviceWatcher`](#linuxdevicewatcher-1) `explicit` |  |
|  | [`~LinuxDeviceWatcher`](#linuxdevicewatcher-2) `noexcept` `override` |  |
| `bool` | [`start`](#start-14) `virtual` `override` | Begin monitoring via libudev inotify events. |
| `void` | [`stop`](#stop-6) `virtual` `override` | Stop monitoring and close the udev monitor. |

---

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

### LinuxDeviceWatcher

`explicit`

```cpp
explicit LinuxDeviceWatcher(DeviceManager * manager)
```

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `manager` | [`DeviceManager`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceManager.md#devicemanager) * | The [DeviceManager](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceManager.md#devicemanager) whose DevicesChanged signal will be emitted on changes. |

---

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

### ~LinuxDeviceWatcher

`noexcept` `override`

```cpp
~LinuxDeviceWatcher() noexcept override
```

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

---

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

### start

`virtual` `override`

```cpp
virtual bool start() override
```

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

Begin monitoring via libudev inotify events. 
#### Returns
True if the udev monitor was successfully started.

#### Reimplements

- [`DeviceWatcher::start`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#start-19)

---

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

### stop

`virtual` `override`

```cpp
virtual void stop() override
```

[Defined in src/av/include/icy/av/linux/v4l2.h:57](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/linux/v4l2.h#L57)

Stop monitoring and close the udev monitor.

#### Reimplements

- [`DeviceWatcher::stop`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#stop-10)

## Private Attributes

| Return | Name | Description |
|--------|------|-------------|
| `std::unique_ptr< Impl >` | [`_impl`](#_impl)  |  |
| [`DeviceManager`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceManager.md#devicemanager) * | [`_manager`](#_manager)  |  |

---

<a id="_impl"></a>

### _impl

```cpp
std::unique_ptr< Impl > _impl
```

[Defined in src/av/include/icy/av/linux/v4l2.h:62](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/linux/v4l2.h#L62)

---

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

### _manager

```cpp
DeviceManager * _manager
```

Type: [`DeviceManager`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceManager.md#devicemanager) *

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