simplified function on paxos
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
6d929a347f
commit
f2c4e10542
38
lib/paxos.ex
38
lib/paxos.ex
@ -455,25 +455,13 @@ defmodule Paxos do
|
||||
def propose_loop(inInst) do
|
||||
receive do
|
||||
{:timeout, inst} ->
|
||||
if inInst == inst do
|
||||
{:timeout}
|
||||
else
|
||||
propose_loop(inInst)
|
||||
end
|
||||
check_and_apply({:timeout}, inst, inInst, &propose_loop/1)
|
||||
|
||||
{:abort, inst} ->
|
||||
if inInst == inst do
|
||||
{:abort}
|
||||
else
|
||||
propose_loop(inInst)
|
||||
end
|
||||
check_and_apply({:abort}, inst, inInst, &propose_loop/1)
|
||||
|
||||
{:decision, inst, d} ->
|
||||
if inInst == inst do
|
||||
{:decision, d}
|
||||
else
|
||||
propose_loop(inInst)
|
||||
end
|
||||
check_and_apply({:decision, d}, inst, inInst, &propose_loop/1)
|
||||
|
||||
x ->
|
||||
Process.send_after(self(), x, 500)
|
||||
@ -489,22 +477,22 @@ defmodule Paxos do
|
||||
def get_decision_loop(inInst) do
|
||||
receive do
|
||||
{:get_value_res, inst} ->
|
||||
if inst == inInst do
|
||||
nil
|
||||
else
|
||||
get_decision_loop(inInst)
|
||||
end
|
||||
check_and_apply(nil, inst, inInst, &get_decision_loop/1)
|
||||
|
||||
{:get_value_res_actual, inst, v} ->
|
||||
if inst == inInst do
|
||||
v
|
||||
else
|
||||
get_decision_loop(inInst)
|
||||
end
|
||||
check_and_apply(v, inst, inInst, &get_decision_loop/1)
|
||||
|
||||
x ->
|
||||
Process.send_after(self(), x, 500)
|
||||
get_decision_loop(inInst)
|
||||
end
|
||||
end
|
||||
|
||||
def check_and_apply(v, inst, inInst, fun) do
|
||||
if inst == inInst do
|
||||
v
|
||||
else
|
||||
fun.(inInst)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user