# ParserObserver

<a id="parserobserver"></a>

# ParserObserver

```cpp
#include <icy/http/parser.h>

class ParserObserver
```

[Defined in src/http/include/icy/http/parser.h:27](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/parser.h#L27)

> **Subclassed by:** [`ConnectionAdapter`](https://auscaster.com/icey/docs/api-reference/icy-http-ConnectionAdapter.md#connectionadapter-1)

Abstract observer interface for HTTP parser events.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`onParserHeader`](#onparserheader-1) `virtual` | Called for each parsed HTTP header name/value pair. |
| `void` | [`onParserHeadersEnd`](#onparserheadersend-1) `virtual` | Called when all HTTP headers have been parsed. |
| `void` | [`onParserChunk`](#onparserchunk-1) `virtual` | Called for each chunk of body data received. |
| `void` | [`onParserEnd`](#onparserend-1) `virtual` | Called when the HTTP message is fully parsed. |
| `void` | [`onParserError`](#onparsererror-1) `virtual` | Called when a parse error occurs. |

---

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

### onParserHeader

`virtual`

```cpp
virtual void onParserHeader(const std::string & name, const std::string & value)
```

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

Called for each parsed HTTP header name/value pair.

#### Reimplemented by

- [`ConnectionAdapter::onParserHeader`](https://auscaster.com/icey/docs/api-reference/icy-http-ConnectionAdapter.md#onparserheader)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `name` | `const std::string &` | Header field name. |
| `value` | `const std::string &` | Header field value. |

---

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

### onParserHeadersEnd

`virtual`

```cpp
virtual void onParserHeadersEnd(bool upgrade)
```

[Defined in src/http/include/icy/http/parser.h:37](https://github.com/auscaster/icey/blob/main/src/http/include/icy/http/parser.h#L37)

Called when all HTTP headers have been parsed.

#### Reimplemented by

- [`ConnectionAdapter::onParserHeadersEnd`](https://auscaster.com/icey/docs/api-reference/icy-http-ConnectionAdapter.md#onparserheadersend)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `upgrade` | `bool` | True if the connection should be upgraded (e.g. to WebSocket). |

---

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

### onParserChunk

`virtual`

```cpp
virtual void onParserChunk(const char * data, size_t len)
```

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

Called for each chunk of body data received.

#### Reimplemented by

- [`ConnectionAdapter::onParserChunk`](https://auscaster.com/icey/docs/api-reference/icy-http-ConnectionAdapter.md#onparserchunk)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `data` | `const char *` | Pointer to the body data chunk. |
| `len` | `size_t` | Length of the chunk in bytes. |

---

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

### onParserEnd

`virtual`

```cpp
virtual void onParserEnd()
```

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

Called when the HTTP message is fully parsed.

#### Reimplemented by

- [`ConnectionAdapter::onParserEnd`](https://auscaster.com/icey/docs/api-reference/icy-http-ConnectionAdapter.md#onparserend)

---

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

### onParserError

`virtual`

```cpp
virtual void onParserError(const Error & err)
```

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

Called when a parse error occurs.

#### Reimplemented by

- [`ConnectionAdapter::onParserError`](https://auscaster.com/icey/docs/api-reference/icy-http-ConnectionAdapter.md#onparsererror)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `err` | const [`Error`](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) & | [Error](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) details from llhttp. |
