Skip to content

Commit

Permalink
Reshape put_in/update_in calls in crashgroups
Browse files Browse the repository at this point in the history
  • Loading branch information
FelonEkonom committed May 23, 2024
1 parent eae44ae commit 5294057
Showing 1 changed file with 6 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ defmodule Membrane.Core.Parent.ChildLifeController.CrashGroupUtils do
def add_crash_group(group_name, mode, children, state)
when not is_map_key(state.crash_groups, group_name) do
put_in(
state,
[:crash_groups, group_name],
state.crash_groups[group_name],
%CrashGroup{
name: group_name,
mode: mode,
Expand All @@ -28,7 +27,7 @@ defmodule Membrane.Core.Parent.ChildLifeController.CrashGroupUtils do

@spec extend_crash_group(Child.group(), [Child.name()], Parent.state()) :: Parent.state()
def extend_crash_group(group_name, children, state) do
update_in(state, [:crash_groups, group_name, :members], &(children ++ &1))
update_in(state.crash_groups[group_name].members, &(children ++ &1))
end

@spec get_child_crash_group(Child.name(), Parent.state()) :: {:ok, CrashGroup.t()} | :error
Expand All @@ -44,7 +43,7 @@ defmodule Membrane.Core.Parent.ChildLifeController.CrashGroupUtils do
# and we will not want to have it in :crash_group_members in the callback context in handle_crash_group_down/3,
# so this child is removed from :members in crash group struct
members = List.delete(group.members, child_name)
state = put_in(state, [:crash_groups, group.name, :members], members)
state = put_in(state.crash_groups[group.name].members, members)

if group.detonating? and Enum.all?(members, &(not Map.has_key?(state.children, &1))) do
cleanup_crash_group(group.name, state)
Expand Down Expand Up @@ -83,8 +82,7 @@ defmodule Membrane.Core.Parent.ChildLifeController.CrashGroupUtils do
end)

update_in(
state,
[:crash_groups, group.name],
state.crash_groups[group.name],
&%CrashGroup{
&1
| detonating?: true,
Expand All @@ -96,15 +94,15 @@ defmodule Membrane.Core.Parent.ChildLifeController.CrashGroupUtils do

defp cleanup_crash_group(group_name, state) do
state = exec_handle_crash_group_down(group_name, state)
{_group, state} = pop_in(state, [:crash_groups, group_name])
{_group, state} = pop_in(state.crash_groups[group_name])
state
end

defp exec_handle_crash_group_down(
group_name,
state
) do
crash_group = get_in(state, [:crash_groups, group_name])
crash_group = state.crash_groups[group_name]

context_generator =
&Component.context_from_state(&1,
Expand Down

0 comments on commit 5294057

Please sign in to comment.