# SympleServerSignaller

<a id="sympleserversignaller"></a>

# SympleServerSignaller

```cpp
#include <icy/webrtc/support/sympleserversignaller.h>

class SympleServerSignaller
```

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

> **Inherits:** [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface)

Server-side Symple signaller for virtual peers and embedded apps.

This adapter sends signalling messages through a [`smpl::Server`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Server.md#server-12) on behalf of a local virtual peer address, and accepts inbound Symple call messages through [`onMessage()`](#onmessage-2).

The remote peer identifier on this signalling boundary is the full Symple address string (`user|id`).

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`SympleServerSignaller`](#sympleserversignaller-1) | `function` | Declared here |
| [`~SympleServerSignaller`](#sympleserversignaller-2) | `function` | Declared here |
| [`SympleServerSignaller`](#sympleserversignaller-3) | `function` | Declared here |
| [`operator=`](#operator-257) | `function` | Declared here |
| [`sendSdp`](#sendsdp-3) | `function` | Declared here |
| [`sendCandidate`](#sendcandidate-3) | `function` | Declared here |
| [`sendControl`](#sendcontrol-3) | `function` | Declared here |
| [`onMessage`](#onmessage-2) | `function` | Declared here |
| [`setRemoteAddress`](#setremoteaddress) | `function` | Declared here |
| [`localAddress`](#localaddress-1) | `function` | Declared here |
| [`remoteAddress`](#remoteaddress-1) | `function` | Declared here |
| [`_server`](#_server-2) | `variable` | Declared here |
| [`_localAddress`](#_localaddress) | `variable` | Declared here |
| [`_remoteAddress`](#_remoteaddress) | `variable` | Declared here |
| [`_dispatch`](#_dispatch-1) | `variable` | Declared here |
| [`_mutex`](#_mutex-28) | `variable` | Declared here |
| [`_pending`](#_pending-1) | `variable` | Declared here |
| [`_closing`](#_closing) | `variable` | Declared here |
| [`send`](#send-22) | `function` | Declared here |
| [`sendNow`](#sendnow) | `function` | Declared here |
| [`flushPending`](#flushpending-1) | `function` | Declared here |
| [`SdpReceived`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sdpreceived) | `variable` | Inherited from [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface) |
| [`CandidateReceived`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#candidatereceived) | `variable` | Inherited from [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface) |
| [`ControlReceived`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#controlreceived) | `variable` | Inherited from [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface) |
| [`~SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface-1) | `function` | Inherited from [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface) |
| [`sendSdp`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendsdp) | `function` | Inherited from [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface) |
| [`sendCandidate`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendcandidate) | `function` | Inherited from [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface) |
| [`sendControl`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendcontrol) | `function` | Inherited from [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface) |

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

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`SdpReceived`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sdpreceived)  | Fires when an SDP offer or answer arrives from a remote peer. Parameters: peerId, type ("offer"/"answer"), sdp. |
| `variable` | [`CandidateReceived`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#candidatereceived)  | Fires when an ICE candidate arrives from a remote peer. Parameters: peerId, candidate, mid. |
| `variable` | [`ControlReceived`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#controlreceived)  | Fires when a control message arrives from a remote peer. Parameters: peerId, type ("init"/"accept"/"reject"/"hangup"), reason. |
| `function` | [`~SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface-1) `virtual` | Defaulted destructor. |
| `function` | [`sendSdp`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendsdp) `virtual` | Send an SDP offer or answer to the remote peer. |
| `function` | [`sendCandidate`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendcandidate) `virtual` | Send an ICE candidate to the remote peer. |
| `function` | [`sendControl`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendcontrol) `virtual` | Send a control message to the remote peer. |

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`SympleServerSignaller`](#sympleserversignaller-1)  |  |
|  | [`~SympleServerSignaller`](#sympleserversignaller-2) `override` |  |
|  | [`SympleServerSignaller`](#sympleserversignaller-3)  | Deleted constructor. |
| [`SympleServerSignaller`](#sympleserversignaller) & | [`operator=`](#operator-257)  | Deleted assignment operator. |
| `void` | [`sendSdp`](#sendsdp-3) `virtual` `override` | Send an SDP offer or answer to the remote peer. |
| `void` | [`sendCandidate`](#sendcandidate-3) `virtual` `override` | Send an ICE candidate to the remote peer. |
| `void` | [`sendControl`](#sendcontrol-3) `virtual` `override` | Send a control message to the remote peer. |
| `void` | [`onMessage`](#onmessage-2)  |  |
| `void` | [`setRemoteAddress`](#setremoteaddress)  |  |
| `const std::string &` | [`localAddress`](#localaddress-1) `const` `inline` |  |
| `const std::string &` | [`remoteAddress`](#remoteaddress-1) `const` `inline` |  |

---

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

### SympleServerSignaller

```cpp
SympleServerSignaller(smpl::Server & server, std::string localAddress, std::string remoteAddress = {})
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:42](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L42)

---

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

### ~SympleServerSignaller

`override`

```cpp
~SympleServerSignaller() override
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:45](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L45)

---

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

### SympleServerSignaller

```cpp
SympleServerSignaller(const SympleServerSignaller &) = delete
```

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

Deleted constructor.

---

<a id="operator-257"></a>

### operator=

```cpp
SympleServerSignaller & operator=(const SympleServerSignaller &) = delete
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:48](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L48)

Deleted assignment operator.

---

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

### sendSdp

`virtual` `override`

```cpp
virtual void sendSdp(const std::string & peerId, const std::string & type, const std::string & sdp) override
```

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

Send an SDP offer or answer to the remote peer.

#### Reimplements

- [`SignallingInterface::sendSdp`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendsdp)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `peerId` | `const std::string &` | Remote peer identifier. |
| `type` | `const std::string &` | "offer" or "answer". |
| `sdp` | `const std::string &` | The SDP string. |

---

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

### sendCandidate

`virtual` `override`

```cpp
virtual void sendCandidate(const std::string & peerId, const std::string & candidate, const std::string & mid) override
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:54](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L54)

Send an ICE candidate to the remote peer.

#### Reimplements

- [`SignallingInterface::sendCandidate`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendcandidate)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `peerId` | `const std::string &` | Remote peer identifier. |
| `candidate` | `const std::string &` | The candidate string (from RTCIceCandidate). |
| `mid` | `const std::string &` | The sdpMid value. |

---

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

### sendControl

`virtual` `override`

```cpp
virtual void sendControl(const std::string & peerId, const std::string & type, const std::string & reason = {}) override
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:58](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L58)

Send a control message to the remote peer.

#### Reimplements

- [`SignallingInterface::sendControl`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendcontrol)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `peerId` | `const std::string &` | Remote peer identifier. |
| `type` | `const std::string &` | Control type: "init", "accept", "reject", "hangup". |
| `reason` | `const std::string &` | Optional reason string (for reject/hangup). |

---

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

### onMessage

```cpp
void onMessage(const json::Value & msg)
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:62](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L62)

---

<a id="setremoteaddress"></a>

### setRemoteAddress

```cpp
void setRemoteAddress(std::string remoteAddress)
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:64](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L64)

---

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

### localAddress

`const` `inline`

```cpp
inline const std::string & localAddress() const
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:65](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L65)

---

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

### remoteAddress

`const` `inline`

```cpp
inline const std::string & remoteAddress() const
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:66](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L66)

## Private Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`smpl::Server`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Server.md#server-12) & | [`_server`](#_server-2)  |  |
| `std::string` | [`_localAddress`](#_localaddress)  |  |
| `std::string` | [`_remoteAddress`](#_remoteaddress)  |  |
| [`Synchronizer`](https://auscaster.com/icey/docs/api-reference/icy-Synchronizer.md#synchronizer) | [`_dispatch`](#_dispatch-1)  |  |
| `std::mutex` | [`_mutex`](#_mutex-28)  |  |
| `std::deque< OutboundMessage >` | [`_pending`](#_pending-1)  |  |
| `bool` | [`_closing`](#_closing)  |  |

---

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

### _server

```cpp
smpl::Server & _server
```

Type: [`smpl::Server`](https://auscaster.com/icey/docs/api-reference/icy-smpl-Server.md#server-12) &

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:83](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L83)

---

<a id="_localaddress"></a>

### _localAddress

```cpp
std::string _localAddress
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:84](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L84)

---

<a id="_remoteaddress"></a>

### _remoteAddress

```cpp
std::string _remoteAddress
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:85](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L85)

---

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

### _dispatch

```cpp
Synchronizer _dispatch
```

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

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:86](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L86)

---

<a id="_mutex-28"></a>

### _mutex

```cpp
std::mutex _mutex
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:87](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L87)

---

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

### _pending

```cpp
std::deque< OutboundMessage > _pending
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:88](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L88)

---

<a id="_closing"></a>

### _closing

```cpp
bool _closing = false
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:89](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L89)

## Private Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`send`](#send-22)  |  |
| `bool` | [`sendNow`](#sendnow)  |  |
| `void` | [`flushPending`](#flushpending-1)  |  |

---

<a id="send-22"></a>

### send

```cpp
void send(const std::string & action, const std::string & to, const json::Value & data = {})
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:77](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L77)

---

<a id="sendnow"></a>

### sendNow

```cpp
bool sendNow(const std::string & to, const json::Value & msg)
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:80](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L80)

---

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

### flushPending

```cpp
void flushPending()
```

[Defined in src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h:81](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/sympleserversignaller.h#L81)
