# logdb_client v0.3.0 - Table of Contents

> Client for Logdb event bus

## Pages

- [logdb_client](readme.md)
- [Changelog](changelog.md)
- [Строка подключения LogDB](connection-string.md)

## Modules

- [LogDB](LogDB.md): Работа с шиной из приложения. `name` — имя клиента (`name:` в его опциях).
- [LogDB.Client.Config](LogDB.Client.Config.md): Конфиг клиента: опции разбираются и проверяются один раз, при старте
(`LogDB.Client.Supervisor`), и дальше процессы и транспорты получают эту
структуру, а не сырой keyword.
- [LogDB.Client.Connection](LogDB.Client.Connection.md): Соединение одного клиента с шиной: подключает транспорт, переподключает
его и передаёт входящие события `Worker`'у.
- [LogDB.Client.ConnectionString](LogDB.Client.ConnectionString.md): Строка подключения к LogDB — всё о подключении в одной строке (одна
переменная окружения, как `DATABASE_URL`)
- [LogDB.Client.Consumer](LogDB.Client.Consumer.md)
- [LogDB.Client.ConsumerRef](LogDB.Client.ConsumerRef.md): Какой консьюмер читать (`LogDB.Client.Config`, поле `consumer`)
- [LogDB.Client.Hello](LogDB.Client.Hello.md): Знакомство с шиной: клиент называет себя и API, на котором говорит, шина
отвечает версией, согласованным API и возможностями.
- [LogDB.Client.Parser](LogDB.Client.Parser.md): Как payload превращается в байты при публикации и обратно при доставке.
- [LogDB.Client.Parser.Auto](LogDB.Client.Parser.Auto.md): Раскодирует payload по типу, который объявил издатель (`_content_type` в
meta), — один консьюмер читает и JSON, и термы, и текст, что бы ни
публиковали и через какой транспорт.
- [LogDB.Client.Parser.Erlangd](LogDB.Client.Parser.Erlangd.md)
- [LogDB.Client.Parser.Json](LogDB.Client.Parser.Json.md)
- [LogDB.Client.Parser.Raw](LogDB.Client.Parser.Raw.md)
- [LogDB.Client.Supervisor](LogDB.Client.Supervisor.md): Клиент шины: `Connection` и, если задан модуль консьюмера, `Worker`.
- [LogDB.Client.Transport](LogDB.Client.Transport.md): Как клиент говорит с шиной. Реализации: `Erlangd` (дистрибуция Erlang),
`WebSocket` (доставка и подтверждения), `HTTP` (публикация и
подтверждения), `Hybrid` (WS для доставки, HTTP для остального).
- [LogDB.Client.Transport.Erlangd](LogDB.Client.Transport.Erlangd.md)
- [LogDB.Client.Transport.HTTP](LogDB.Client.Transport.HTTP.md)
- [LogDB.Client.Transport.Hybrid](LogDB.Client.Transport.Hybrid.md): Доставка по WebSocket; публикация и подтверждения — по тому же сокету, если
шина говорит на клиентском API 1 (договорились в `hello`), иначе — по HTTP,
как раньше.
- [LogDB.Client.Transport.WebSocket](LogDB.Client.Transport.WebSocket.md): WebSocket: доставка событий и все команды шины по одному соединению —
публикация, подписка, подтверждения, ping.
- [LogDB.Client.Worker](LogDB.Client.Worker.md)

- Exceptions
  - [LogDB.Client.DecodeError](LogDB.Client.DecodeError.md): Payload события не раскодировался парсером. Приходит в `handle_error/2`
консьюмера вместо вызова `handle_event/4`; событие отклоняется окончательно
(`term`): повтор раскодировался бы так же, а бесконечная переотправка
занимала слоты консьюмера. Видно в консоли LogDB среди отброшенных.

  - [LogDB.Error](LogDB.Error.md): Ошибка клиента — одна форма для всех транспортов: `{:error, %LogDB.Error{}}`.

