feat: resets genserver inactivity with :keep_alive info message

This commit is contained in:
chrishop 2022-12-12 11:57:32 +09:00
parent 404cfbc3c5
commit a795477d12
3 changed files with 21 additions and 0 deletions

View file

@ -122,6 +122,10 @@ defmodule AshGenServer.Server do
end
end
def handle_info(:keep_alive, state) do
{:noreply, maybe_set_inactivity_timer(state)}
end
defp primary_key_from_resource_and_changeset(resource, changeset) do
resource
|> Resource.Info.primary_key()

View file

@ -38,4 +38,17 @@ defmodule AshGenServer.ServerTest do
refute state.record.nickname
end
end
describe "handle_info/3" do
test "when send :keep_alive to server resets inactivity timer" do
changeset =
TimeTravel.Character
|> Changeset.for_create(:create, %{name: "Biff Tannen", current_year: 2015})
{:ok, old_state} = Server.init([TimeTravel.Character, changeset])
{:noreply, new_state} = Server.handle_info(:keep_alive, old_state)
refute old_state.inactivity_timer == new_state.inactivity_timer
end
end
end

View file

@ -37,4 +37,8 @@ defmodule TimeTravel.Character do
create_timestamp(:created_at)
update_timestamp(:updated_at)
end
gen_server do
inactivity_timeout(:timer.minutes(1))
end
end