# Roster

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

# Roster

```cpp
#include <icy/symple/roster.h>

class Roster
```

[Defined in src/symple/include/icy/symple/roster.h:29](https://github.com/auscaster/icey/blob/main/src/symple/include/icy/symple/roster.h#L29)

> **Inherits:** [`string, Peer >`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore)

The [Roster](#roster-2) provides a registry for active network peers indexed by session ID.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`PeerAdded`](#peeradded) | `variable` | Declared here |
| [`PeerRemoved`](#peerremoved) | `variable` | Declared here |
| [`Roster`](#roster-3) | `function` | Declared here |
| [`~Roster`](#roster-4) | `function` | Declared here |
| [`getByHost`](#getbyhost) | `function` | Declared here |
| [`peers`](#peers) | `function` | Declared here |
| [`print`](#print-20) | `function` | Declared here |
| [`className`](#classname-15) | `function` | Declared here |
| [`onAdd`](#onadd-3) | `function` | Declared here |
| [`onRemove`](#onremove-4) | `function` | Declared here |
| [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore-1) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`~KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore-2) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore-3) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#operator-43) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore-4) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#operator-44) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`get`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#get-3) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`add`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#add-1) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`tryAdd`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#tryadd) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`put`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#put-3) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`erase`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#erase) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`contains`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#contains) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`empty`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#empty) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`size`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#size-2) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`clear`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#clear-1) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map-1) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`begin`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#begin-3) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`end`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#end) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`begin`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#begin-4) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`end`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#end-1) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`_map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#_map) | `variable` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`onAdd`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#onadd) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`onRemove`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#onremove) | `function` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |
| [`Map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map-2) | `typedef` | Inherited from [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) |

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

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore-1)  | Defaulted constructor. |
| `function` | [`~KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore-2) `virtual` `inline` |  |
| `function` | [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore-3)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#operator-43)  | Deleted assignment operator. |
| `function` | [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore-4)  | Defaulted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#operator-44)  | Defaulted assignment operator. |
| `function` | [`get`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#get-3) `const` `inline` | Returns the item for `key`, or nullptr if not found. |
| `function` | [`add`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#add-1) `inline` | Inserts a uniquely owned item. Returns a reference to the stored item. |
| `function` | [`tryAdd`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#tryadd) `inline` | Inserts if absent; returns false on duplicate (never throws). |
| `function` | [`put`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#put-3) `inline` | Inserts or replaces the item under `key`. |
| `function` | [`erase`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#erase) `inline` | Removes and destroys the item under `key`. |
| `function` | [`contains`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#contains) `const` `inline` |  |
| `function` | [`empty`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#empty) `const` `inline` |  |
| `function` | [`size`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#size-2) `const` `inline` |  |
| `function` | [`clear`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#clear-1) `inline` |  |
| `function` | [`map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map) `inline` | Direct map access for iteration. |
| `function` | [`map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map-1) `const` `inline` |  |
| `function` | [`begin`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#begin-3) `inline` |  |
| `function` | [`end`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#end) `inline` |  |
| `function` | [`begin`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#begin-4) `const` `inline` |  |
| `function` | [`end`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#end-1) `const` `inline` |  |
| `variable` | [`_map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#_map)  |  |
| `function` | [`onAdd`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#onadd) `virtual` `inline` | Override for lifecycle reactions. |
| `function` | [`onRemove`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#onremove) `virtual` `inline` |  |
| `typedef` | [`Map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map-2)  |  |

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< [`void`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map)([`Peer`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Peer.md#peer-1) &)> | [`PeerAdded`](#peeradded)  | Lifecycle signals for external observers (samples, UI). |
| [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< [`void`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map)([`const`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map)[`Peer`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Peer.md#peer-1) &)> | [`PeerRemoved`](#peerremoved)  |  |

---

<a id="peeradded"></a>

### PeerAdded

```cpp
Signal< void(Peer &)> PeerAdded
```

Type: [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< [`void`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map)([`Peer`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Peer.md#peer-1) &)>

[Defined in src/symple/include/icy/symple/roster.h:46](https://github.com/auscaster/icey/blob/main/src/symple/include/icy/symple/roster.h#L46)

Lifecycle signals for external observers (samples, UI).

---

<a id="peerremoved"></a>

### PeerRemoved

```cpp
Signal< void(constPeer &)> PeerRemoved
```

Type: [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< [`void`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map)([`const`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map)[`Peer`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Peer.md#peer-1) &)>

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

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`Roster`](#roster-3)  |  |
|  | [`~Roster`](#roster-4)  |  |
| [`Peer`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Peer.md#peer-1) * | [`getByHost`](#getbyhost)  | Returns the first peer which matches the given host address. |
| [`Map`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map-2) | [`peers`](#peers) `const` | Returns a deep copy of the peer map. |
| [`void`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map) | [`print`](#print-20) `const` |  |
| [`const`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map)[`char`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map) * | [`className`](#classname-15) `virtual` `const` `inline` |  |

---

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

### Roster

```cpp
Roster()
```

[Defined in src/symple/include/icy/symple/roster.h:32](https://github.com/auscaster/icey/blob/main/src/symple/include/icy/symple/roster.h#L32)

---

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

### ~Roster

```cpp
~Roster()
```

[Defined in src/symple/include/icy/symple/roster.h:33](https://github.com/auscaster/icey/blob/main/src/symple/include/icy/symple/roster.h#L33)

---

<a id="getbyhost"></a>

### getByHost

```cpp
Peer * getByHost(std::string_view host)
```

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

Returns the first peer which matches the given host address.

---

<a id="peers"></a>

### peers

`const`

```cpp
Map peers() const
```

[Defined in src/symple/include/icy/symple/roster.h:39](https://github.com/auscaster/icey/blob/main/src/symple/include/icy/symple/roster.h#L39)

Returns a deep copy of the peer map.

---

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

### print

`const`

```cpp
void print(std::ostream & os) const
```

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

---

<a id="classname-15"></a>

### className

`virtual` `const` `inline`

```cpp
virtual inline constchar * className() const
```

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

## Protected Methods

| Return | Name | Description |
|--------|------|-------------|
| [`void`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map) | [`onAdd`](#onadd-3) `inline` `override` |  |
| [`void`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#map) | [`onRemove`](#onremove-4) `inline` `override` |  |

---

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

### onAdd

`inline` `override`

```cpp
inline void onAdd(const std::string &, Peer * peer) override
```

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

---

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

### onRemove

`inline` `override`

```cpp
inline void onRemove(const std::string &, Peer * peer) override
```

[Defined in src/symple/include/icy/symple/roster.h:51](https://github.com/auscaster/icey/blob/main/src/symple/include/icy/symple/roster.h#L51)
