Skip to content

Commit

Permalink
not liking jj at all
Browse files Browse the repository at this point in the history
  • Loading branch information
simbo1905 committed Mar 29, 2024
2 parents af1cb0b + 3fce4a8 commit 38d9988
Showing 1 changed file with 47 additions and 0 deletions.
47 changes: 47 additions & 0 deletions trex2-lib/src/main/java/com/github/trex_paxos/AcceptHandler.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.github.trex_paxos;

<<<<<<< HEAD
public interface AcceptHandler {

default PaxosData handleAccept(PaxosData data, Accept accept, Journal journal, Messaging io) {
Expand All @@ -8,11 +9,34 @@ default PaxosData handleAccept(PaxosData data, Accept accept, Journal journal, M
return data;
} else if (equalOrHigherAccept(data, accept)){
return handleEqualOrHigherAccept(data, accept, journal, io);
=======
import java.util.function.Function;

public interface AcceptHandler {

default PaxosData handleAccept(PaxosIO io, PaxosAgent agent, Accept accept) {
Function<Identifier, Boolean> lowerAccept =
id -> id.number().
lessThan(
agent.data().progress().highestPromised());
Function<Identifier, Boolean> higherAcceptForCommittedSlot =
id -> id.number().greaterThan(
agent.data().progress().highestPromised())
&&
id.logIndex() <= agent.data().progress().highestCommitted().logIndex();

if ((lowerAccept.apply(accept.id())) || (higherAcceptForCommittedSlot.apply(accept.id()))) {
io.nack(accept);
return agent.data();
} else if (agent.data().progress().highestPromised(). lessThanOrEqualTo ( accept.id().number()) ){
return handleHighAccept(io, agent.data(), accept);
>>>>>>> lost-in-jj
} else {
throw new IllegalArgumentException(STR."\{accept.getClass().getCanonicalName()}:\{accept.toString()}");
}
}

<<<<<<< HEAD
private static boolean equalOrHigherAccept(PaxosData data, Accept accept) {
return data.progress().highestPromised().lessThanOrEqualTo(accept.id().number());
}
Expand Down Expand Up @@ -45,4 +69,27 @@ default PaxosData handleEqualOrHigherAccept(PaxosData data, Accept accept, Journ
private static Boolean higherAccept(PaxosData data, Accept accept) {
return accept.id().number().greaterThan(data.progress().highestPromised());
}
=======
default PaxosData handleHighAccept(PaxosIO io, PaxosData data, Accept accept) {
if (data.progress().highestPromised().greaterThan(accept.id().number())) {
throw new IllegalArgumentException("Accept number must be greater or equal to the agent's promise.");
}
io.journal().accept(accept);
PaxosData updatedData;
if (accept.id().number().
greaterThan(
data.progress().highestPromised())) {
updatedData = highestPromisedSet(data, accept.id().number());
io.journal().accept(updatedData.progress());
} else {
updatedData = data;
}
io.ack(accept);
return updatedData;
}

default PaxosData highestPromisedSet(PaxosData data, BallotNumber number){
throw new AssertionError("Not implemented");
};
>>>>>>> lost-in-jj
}

0 comments on commit 38d9988

Please sign in to comment.