Size: a a a

2021 June 22

IM

Ivan Mironov in pro.elixir
именно
источник

LL

Lama Lover in pro.elixir
def handle_info({:shot, shot}, %{shots: shots} = state) do
 {:noreply, %{state | shots: [shot | shots]}}
end
источник

IN

Ildar Nasyrov in pro.elixir
а, все вроде понял. изменяю стейт в handle_info и оттуда же делаю broadcast для liveview - котоырый через get_all получает историю, тогда порядок будут гарантирован
источник

A ß in pro.elixir
selective receive, не?
источник

LL

Lama Lover in pro.elixir
В генсервере такого нет
источник

IN

Ildar Nasyrov in pro.elixir
пока не знаю этого
источник

A ß in pro.elixir
ну да, но с порядком все равно сложно
источник

LL

Lama Lover in pro.elixir
Ты о чём?
источник

IM

Ivan Mironov in pro.elixir
как уже говорили, генсервер максимально прост, обрабатывает все сообщения из mailbox’а последовательно
источник

IM

Ivan Mironov in pro.elixir
хочешь чтоб действия каста гарантированно выполнились (например в тесте) - вызови после него колл
источник

LL

Lama Lover in pro.elixir
А, ну может GenServer.call работает с selective receive ...
источник

A ß in pro.elixir
я бы не рассчитывал что генсерверу сообщения будут приходить в определенном порядке
источник

IN

Ildar Nasyrov in pro.elixir
после этого пояснения, у меня отпали все вопросы в принципе. благодарю. просто делаю в handle_info изменение состояние и оттуда же посылаю сообщение broadcast (handle_info которого в liveview будет делать call к моему GenServer, который гарантированно получит уже измененное состояние)
источник

LL

Lama Lover in pro.elixir
Ну, если они из одного процесса, то это гарантируется
Если не из одного, то да
источник

IM

Ivan Mironov in pro.elixir
именно
источник

IM

Ivan Mironov in pro.elixir
👍
источник

LL

Lama Lover in pro.elixir
Всё-равно как-то странно. Зачем делать из процесса-историка-высрелов бродкаст по liveview, чтобы они сделали GenServer.call потом...
Может просто сразу на liveview посылать бродкаст с историей?
источник

IN

Ildar Nasyrov in pro.elixir
так он же сохраняет историю, этот процесс историк. А liveview должен отобразить историю
источник

IN

Ildar Nasyrov in pro.elixir
я ниоткуда не получаю историю. получаю только результат единичного выстрела
источник

LL

Lama Lover in pro.elixir
Это не противоречит моей идее...
источник