# Server::RoomIndex

<a id="roomindex"></a>

# RoomIndex

```cpp
#include <src/symple/src/server/detail.h>

class RoomIndex
```

[Defined in src/symple/src/server/detail.h:62](https://github.com/auscaster/icey/blob/main/src/symple/src/server/detail.h#L62)

Room membership by peer ID, and the recipients of a message sent to a set of rooms.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`join`](#join-1)  |  |
| `void` | [`leave`](#leave)  |  |
| `void` | [`leaveAll`](#leaveall)  |  |
| `void` | [`clear`](#clear-13)  |  |
| const [`MemberSet`](#memberset) * | [`members`](#members) `const` |  |
| `std::unordered_set< std::string >` | [`collectRecipients`](#collectrecipients) `const` |  |

---

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

### join

```cpp
void join(const std::string & room, const std::string & peerId)
```

[Defined in src/symple/src/server/detail.h:67](https://github.com/auscaster/icey/blob/main/src/symple/src/server/detail.h#L67)

---

<a id="leave"></a>

### leave

```cpp
void leave(const std::string & room, const std::string & peerId)
```

[Defined in src/symple/src/server/detail.h:68](https://github.com/auscaster/icey/blob/main/src/symple/src/server/detail.h#L68)

---

<a id="leaveall"></a>

### leaveAll

```cpp
void leaveAll(const std::string & peerId)
```

[Defined in src/symple/src/server/detail.h:69](https://github.com/auscaster/icey/blob/main/src/symple/src/server/detail.h#L69)

---

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

### clear

```cpp
void clear()
```

[Defined in src/symple/src/server/detail.h:70](https://github.com/auscaster/icey/blob/main/src/symple/src/server/detail.h#L70)

---

<a id="members"></a>

### members

`const`

```cpp
const MemberSet * members(const std::string & room) const
```

[Defined in src/symple/src/server/detail.h:72](https://github.com/auscaster/icey/blob/main/src/symple/src/server/detail.h#L72)

---

<a id="collectrecipients"></a>

### collectRecipients

`const`

```cpp
std::unordered_set< std::string > collectRecipients(const std::unordered_set< std::string > & rooms, std::string_view excludeId = {}) const
```

[Defined in src/symple/src/server/detail.h:73](https://github.com/auscaster/icey/blob/main/src/symple/src/server/detail.h#L73)

## Public Types

| Name | Description |
|------|-------------|
| [`MemberSet`](#memberset)  |  |

---

<a id="memberset"></a>

### MemberSet

```cpp
using MemberSet = std::unordered_set< std::string >
```

[Defined in src/symple/src/server/detail.h:65](https://github.com/auscaster/icey/blob/main/src/symple/src/server/detail.h#L65)

## Private Attributes

| Return | Name | Description |
|--------|------|-------------|
| std::unordered_map< std::string, [`MemberSet`](#memberset) > | [`_rooms`](#_rooms)  |  |

---

<a id="_rooms"></a>

### _rooms

```cpp
std::unordered_map< std::string, MemberSet > _rooms
```

Type: std::unordered_map< std::string, [`MemberSet`](#memberset) >

[Defined in src/symple/src/server/detail.h:78](https://github.com/auscaster/icey/blob/main/src/symple/src/server/detail.h#L78)
