mirror of
https://github.com/team-alembic/ash_gen_server.git
synced 2024-09-19 21:02:53 +12:00
feat: resets genserver inactivity with :keep_alive info message
This commit is contained in:
parent
404cfbc3c5
commit
a795477d12
3 changed files with 21 additions and 0 deletions
|
@ -122,6 +122,10 @@ defmodule AshGenServer.Server do
|
||||||
end
|
end
|
||||||
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
|
defp primary_key_from_resource_and_changeset(resource, changeset) do
|
||||||
resource
|
resource
|
||||||
|> Resource.Info.primary_key()
|
|> Resource.Info.primary_key()
|
||||||
|
|
|
@ -38,4 +38,17 @@ defmodule AshGenServer.ServerTest do
|
||||||
refute state.record.nickname
|
refute state.record.nickname
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
|
@ -37,4 +37,8 @@ defmodule TimeTravel.Character do
|
||||||
create_timestamp(:created_at)
|
create_timestamp(:created_at)
|
||||||
update_timestamp(:updated_at)
|
update_timestamp(:updated_at)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
gen_server do
|
||||||
|
inactivity_timeout(:timer.minutes(1))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue