simplified function on paxos
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Andre Henriques 2024-01-09 19:34:26 +00:00
parent 6d929a347f
commit f2c4e10542

View File

@ -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