simplify: get rid of tmp var

This commit is contained in:
Matthias Radestock 2014-04-21 12:57:30 +01:00
parent aa2f796b06
commit 9ad70e9640
1 changed files with 50 additions and 57 deletions

View File

@ -1091,7 +1091,7 @@ read_group(GroupName) -> mnesia:read({?GROUP_TABLE, GroupName}).
write_group(Group) -> mnesia:write(?GROUP_TABLE, Group, write), Group. write_group(Group) -> mnesia:write(?GROUP_TABLE, Group, write), Group.
prune_or_create_group(Self, GroupName, TxnFun) -> prune_or_create_group(Self, GroupName, TxnFun) ->
Group = TxnFun( TxnFun(
fun () -> fun () ->
GroupNew = #gm_group { name = GroupName, GroupNew = #gm_group { name = GroupName,
members = [Self], members = [Self],
@ -1099,63 +1099,56 @@ prune_or_create_group(Self, GroupName, TxnFun) ->
case read_group(GroupName) of case read_group(GroupName) of
[] -> [] ->
write_group(GroupNew); write_group(GroupNew);
[Group1 = #gm_group { members = Members }] -> [Group = #gm_group { members = Members }] ->
case lists:any(fun is_member_alive/1, Members) of case lists:any(fun is_member_alive/1, Members) of
true -> Group1; true -> Group;
false -> write_group(GroupNew) false -> write_group(GroupNew)
end end
end end
end), end).
Group.
record_dead_member_in_group(Member, GroupName, TxnFun) -> record_dead_member_in_group(Member, GroupName, TxnFun) ->
Group =
TxnFun( TxnFun(
fun () -> [Group1 = #gm_group { members = Members, version = Ver }] = fun () -> [Group = #gm_group { members = Members, version = Ver }] =
mnesia:read({?GROUP_TABLE, GroupName}), mnesia:read({?GROUP_TABLE, GroupName}),
case lists:splitwith( case lists:splitwith(
fun (Member1) -> Member1 =/= Member end, Members) of fun (Member1) -> Member1 =/= Member end, Members) of
{_Members1, []} -> %% not found - already recorded dead {_Members1, []} -> %% not found - already recorded dead
Group1; Group;
{Members1, [Member | Members2]} -> {Members1, [Member | Members2]} ->
Members3 = Members1 ++ [{dead, Member} | Members2], Members3 = Members1 ++ [{dead, Member} | Members2],
write_group(Group1 #gm_group { members = Members3, write_group(Group #gm_group { members = Members3,
version = Ver + 1 }) version = Ver + 1 })
end end
end), end).
Group.
record_new_member_in_group(GroupName, Left, NewMember, Fun, TxnFun) -> record_new_member_in_group(GroupName, Left, NewMember, Fun, TxnFun) ->
{Result, Group} =
TxnFun( TxnFun(
fun () -> fun () ->
[#gm_group { members = Members, version = Ver } = Group1] = [Group = #gm_group { members = Members, version = Ver }] =
mnesia:read({?GROUP_TABLE, GroupName}), mnesia:read({?GROUP_TABLE, GroupName}),
{Prefix, [Left | Suffix]} = {Prefix, [Left | Suffix]} =
lists:splitwith(fun (M) -> M =/= Left end, Members), lists:splitwith(fun (M) -> M =/= Left end, Members),
Members1 = Prefix ++ [Left, NewMember | Suffix], Group1 = Group #gm_group {
Group2 = Group1 #gm_group { members = Members1, members = Prefix ++ [Left, NewMember | Suffix],
version = Ver + 1 }, version = Ver + 1 },
{Fun(Group2), write_group(Group2)} {Fun(Group1), write_group(Group1)}
end), end).
{Result, Group}.
erase_members_in_group(Members, GroupName, TxnFun) -> erase_members_in_group(Members, GroupName, TxnFun) ->
DeadMembers = [{dead, Id} || Id <- Members], DeadMembers = [{dead, Id} || Id <- Members],
Group =
TxnFun( TxnFun(
fun () -> fun () ->
[Group1 = #gm_group { members = [_|_] = Members1, [Group = #gm_group { members = [_|_] = Members1,
version = Ver }] = version = Ver }] =
mnesia:read({?GROUP_TABLE, GroupName}), mnesia:read({?GROUP_TABLE, GroupName}),
case Members1 -- DeadMembers of case Members1 -- DeadMembers of
Members1 -> Group1; Members1 -> Group;
Members2 -> write_group( Members2 -> write_group(
Group1 #gm_group { members = Members2, Group #gm_group { members = Members2,
version = Ver + 1 }) version = Ver + 1 })
end end
end), end).
Group.
maybe_erase_aliases(State = #state { self = Self, maybe_erase_aliases(State = #state { self = Self,
group_name = GroupName, group_name = GroupName,