LogDB.Client.Connection (logdb_client v0.3.0)

Copy Markdown View Source

Соединение одного клиента с шиной: подключает транспорт, переподключает его и передаёт входящие события Worker'у.

Текущий транспорт лежит в ETS-таблице клиента (table/1): публикация и подтверждения (LogDB.publish/…) берут его оттуда, а не вызовом этого процесса. Раньше каждая публикация стояла в его очереди за входящими событиями — под потоком событий публикация ждала доставки чужих.

Переподключение — с нарастающей паузой (1 с, 2 с, 4 с … до 30 с) и разбросом: после рестарта шины клиенты не ломятся в неё одновременно.

Summary

Functions

Returns a specification to start this module under a supervisor.

Запомнить подписку, сделанную LogDB.subscribe/2,3: после каждого переподключения соединение повторит её само.

ETS-таблица клиента с текущим транспортом: {:transport, module, state}.

Текущий транспорт клиента — без вызова процесса соединения.

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

remember_subscription(name, subscription)

Запомнить подписку, сделанную LogDB.subscribe/2,3: после каждого переподключения соединение повторит её само.

start_link(config)

table(name)

ETS-таблица клиента с текущим транспортом: {:transport, module, state}.

transport(name)

@spec transport(atom()) :: {:ok, module(), term()} | {:error, :disconnected}

Текущий транспорт клиента — без вызова процесса соединения.