From 6cb6de28fc75131bf8b6f800f703f9bd3facb08a Mon Sep 17 00:00:00 2001 From: Jaime Freire <5436581+jaimefreire@users.noreply.github.com> Date: Sun, 24 Dec 2023 10:25:45 +0100 Subject: [PATCH] Basic behavior ready --- README.txt | 6 +- pom.xml | 9 +- .../social_altruism/chat/ChatPotProtocol.java | 172 ++++++++++-------- .../social_altruism/chat/ChatQuickStart.java | 32 +++- .../social_altruism/chat/Participante.java | 63 ++++--- .../chat/TipoDeParticipante.java | 8 + .../chat/commands/Commands.java | 15 ++ .../social_altruism/chat/events/Events.java | 16 ++ src/main/resources/log4j.xml | 18 ++ .../chat/ChatQuickStartTest.java | 54 +++--- .../chat/ChatPotProtocol$EnterPot.class | Bin 2449 -> 0 bytes .../chat/ChatPotProtocol$MessagePosted.class | Bin 1956 -> 0 bytes .../ChatPotProtocol$ParticipateInTurn.class | Bin 1822 -> 1822 bytes .../chat/ChatPotProtocol$PotReturned.class | Bin 1761 -> 0 bytes .../chat/ChatPotProtocol$RoomCommand.class | Bin 288 -> 0 bytes .../chat/ChatPotProtocol$Session.class | Bin 4343 -> 4434 bytes .../chat/ChatPotProtocol$SessionDenied.class | Bin 1793 -> 0 bytes .../chat/ChatPotProtocol$SessionEvent.class | Bin 290 -> 0 bytes .../chat/ChatPotProtocol$SessionGranted.class | Bin 2369 -> 0 bytes ...PotProtocol$SharePotWithParticipants.class | Bin 1843 -> 1843 bytes ...hatPotProtocol$UpdatePlayerAfterTurn.class | Bin 2002 -> 0 bytes .../chat/ChatPotProtocol.class | Bin 11245 -> 10819 bytes .../chat/ChatQuickStart$Main.class | Bin 5997 -> 6704 bytes .../social_altruism/chat/ChatQuickStart.class | Bin 1050 -> 1050 bytes .../social_altruism/chat/Participante.class | Bin 7680 -> 7424 bytes .../chat/commands/Commands$EnterPot.class | Bin 0 -> 2365 bytes .../chat/commands/Commands$PlayTurn.class | Bin 0 -> 2507 bytes .../chat/commands/Commands$RoomCommand.class | Bin 0 -> 285 bytes .../chat/commands/Commands.class | Bin 0 -> 677 bytes .../chat/events/Events$PotReturned.class | Bin 0 -> 1980 bytes .../chat/events/Events$SessionDenied.class | Bin 0 -> 1770 bytes .../chat/events/Events$SessionEvent.class | Bin 0 -> 277 bytes .../chat/events/Events$SessionGranted.class | Bin 0 -> 2407 bytes .../social_altruism/chat/events/Events.class | Bin 0 -> 774 bytes target/classes/log4j.xml | 18 ++ .../chat/ChatQuickStartTest.class | Bin 3371 -> 3732 bytes 36 files changed, 277 insertions(+), 134 deletions(-) create mode 100644 src/main/java/dev/freireservices/social_altruism/chat/TipoDeParticipante.java create mode 100644 src/main/java/dev/freireservices/social_altruism/chat/commands/Commands.java create mode 100644 src/main/java/dev/freireservices/social_altruism/chat/events/Events.java create mode 100644 src/main/resources/log4j.xml delete mode 100644 target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$EnterPot.class delete mode 100644 target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$MessagePosted.class delete mode 100644 target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$PotReturned.class delete mode 100644 target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$RoomCommand.class delete mode 100644 target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$SessionDenied.class delete mode 100644 target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$SessionEvent.class delete mode 100644 target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$SessionGranted.class delete mode 100644 target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$UpdatePlayerAfterTurn.class create mode 100644 target/classes/dev/freireservices/social_altruism/chat/commands/Commands$EnterPot.class create mode 100644 target/classes/dev/freireservices/social_altruism/chat/commands/Commands$PlayTurn.class create mode 100644 target/classes/dev/freireservices/social_altruism/chat/commands/Commands$RoomCommand.class create mode 100644 target/classes/dev/freireservices/social_altruism/chat/commands/Commands.class create mode 100644 target/classes/dev/freireservices/social_altruism/chat/events/Events$PotReturned.class create mode 100644 target/classes/dev/freireservices/social_altruism/chat/events/Events$SessionDenied.class create mode 100644 target/classes/dev/freireservices/social_altruism/chat/events/Events$SessionEvent.class create mode 100644 target/classes/dev/freireservices/social_altruism/chat/events/Events$SessionGranted.class create mode 100644 target/classes/dev/freireservices/social_altruism/chat/events/Events.class create mode 100644 target/classes/log4j.xml diff --git a/README.txt b/README.txt index 9ffcf55..9b41b1b 100644 --- a/README.txt +++ b/README.txt @@ -11,8 +11,4 @@ Comprobar cómo de dispuesta está la gente a contribuir a un bien, que será compartido por todos por igual, -hayan contribuido o no. - --Un Chat genera una sesión para cada jugador. --Cada chat tiene 2 o más participantes. --Los chats tienen varios jugadores y ahí se juegan turnos. \ No newline at end of file +hayan contribuido o no. \ No newline at end of file diff --git a/pom.xml b/pom.xml index 210b44e..0de56a7 100644 --- a/pom.xml +++ b/pom.xml @@ -20,14 +20,13 @@ - + - ch.qos.logback - logback-classic - 1.4.14 + org.slf4j + slf4j-reload4j + 2.0.9 - com.typesafe.akka akka-actor-typed_2.13 diff --git a/src/main/java/dev/freireservices/social_altruism/chat/ChatPotProtocol.java b/src/main/java/dev/freireservices/social_altruism/chat/ChatPotProtocol.java index b94adf9..57a8f17 100644 --- a/src/main/java/dev/freireservices/social_altruism/chat/ChatPotProtocol.java +++ b/src/main/java/dev/freireservices/social_altruism/chat/ChatPotProtocol.java @@ -7,19 +7,23 @@ import akka.actor.typed.ActorRef; import akka.actor.typed.Behavior; import akka.actor.typed.javadsl.ActorContext; import akka.actor.typed.javadsl.Behaviors; +import dev.freireservices.social_altruism.chat.commands.Commands; +import dev.freireservices.social_altruism.chat.events.Events; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; public class ChatPotProtocol { - private final ActorContext context; + private final ActorContext context; + + private final List> sessions; public double getCurrentPot() { return currentPot; } - public void setCurrentPot(double currentPot) { - this.currentPot = currentPot; + public void resetPot() { + this.currentPot = 0; } public void addToPot(double pot) { @@ -27,109 +31,135 @@ public class ChatPotProtocol { } private double currentPot = 0.0; - private int currentTurn = 0; - private final int numberOfParticipants; - private ChatPotProtocol(ActorContext context, int numberOfParticipants) { - this.numberOfParticipants = numberOfParticipants; - this.context = context; + public int getCurrentTurn() { + return currentTurn; } - interface RoomCommand {} + public int incrementCurrentTurnAndGet() { + this.currentTurn++; + return this.currentTurn; + } - public record EnterPot(ActorRef replyTo, double pot) implements RoomCommand {} + private int currentTurn = 0; + private int totalTurns = 0; - // #chatroom-protocol - // #chatroom-behavior - private record UpdatePlayerAfterTurn(String screenName, String message) implements RoomCommand {} + public int getParticipantsInTurn() { + return participantsInTurn; + } + + public void incrementParticipantsInTurn() { + this.participantsInTurn++; + } + + public void resetParticipantsInTurn() { + this.participantsInTurn = 0; + } + + public int getNumberOfParticipants() { + return numberOfParticipants; + } + + private int participantsInTurn = 0; + private final int numberOfParticipants; + + private ChatPotProtocol( + ActorContext context, + List> sessions, + int numberOfParticipants, + int turns) { + this.context = context; + this.sessions = sessions; + this.numberOfParticipants = numberOfParticipants; + this.totalTurns = turns; + } // #chatroom-behavior // #chatroom-protocol - private Behavior onGetPotSession( - EnterPot enterPot, List> sessions) { - - //Add check session started + private Behavior onGetPotSession(Commands.EnterPot enterPot) { + // Add check session started if (sessions.stream() .anyMatch( s -> - s.path().name().equals(URLEncoder.encode(enterPot.replyTo.path().name(), UTF_8)))) { + s.path() + .name() + .equals(URLEncoder.encode(enterPot.replyTo().path().name(), UTF_8)))) { - enterPot.replyTo.tell(new SessionDenied("Can only enter a pot once")); + enterPot.replyTo().tell(new Events.SessionDenied("Can only enter a pot once")); } - context - .getLog() - .info("Participant joined {} turn pot: {}", enterPot.replyTo.path().name(), enterPot.pot); + context.getLog().info("Participant joined {} pot", enterPot.replyTo().path().name()); - // Add to current pot - addToPot(enterPot.pot); + ActorRef client = enterPot.replyTo(); - ActorRef client = enterPot.replyTo; - - ActorRef ses = + ActorRef session = context.spawn( - Session.create(client), URLEncoder.encode(enterPot.replyTo.path().name(), UTF_8)); + Session.create(client), URLEncoder.encode(enterPot.replyTo().path().name(), UTF_8)); // narrow to only expose PostMessage - client.tell(new SessionGranted(ses.narrow())); + client.tell(new Events.SessionGranted(session.narrow())); - List> newSessions = new ArrayList<>(sessions); - - newSessions.add(ses); - - if (numberOfParticipants == newSessions.size()) { - // Begin - context.getLog().info("All participants joined; beginning turn: " + getCurrentPot()); - - double amountToShare = (getCurrentPot() * 2) / numberOfParticipants; - - context.getLog().info("Starting pot: " + getCurrentPot()); - - newSessions.forEach(s -> s.tell(new SharePotWithParticipants(amountToShare))); - - currentTurn++; - return Behaviors.same(); + sessions.add(session); + if (numberOfParticipants == sessions.size()) { + context.getLog().info("All participants joined; pot is ready to start."); + return createPotBehaviour(); } else { // Waiting for more participants context.getLog().info("Waiting for more participants."); - - return createPot(newSessions); + return Behaviors.same(); } } - private Behavior onUpdatePlayerAfterTurn( - List> sessions, UpdatePlayerAfterTurn pub) { - // NotifyClient notification = new NotifyClient((new MessagePosted(pub.screenName, - // pub.message))); + private Behavior onPlayTurn(Commands.PlayTurn playTurn) { + + context + .getLog() + .info( + "Participant {} joined for turn {} with {}", + playTurn.replyTo().path().name(), + currentTurn, + playTurn.pot()); + + // Add to current pot + addToPot(playTurn.pot()); + incrementParticipantsInTurn(); + + if (getParticipantsInTurn() == numberOfParticipants) { + + double amountToShare = (getCurrentPot() * 2) / numberOfParticipants; + sessions.forEach(s -> s.tell(new SharePotWithParticipants(amountToShare))); + + resetPot(); + resetParticipantsInTurn(); + + context.getLog().info("Turn {} complete", getCurrentTurn()); + + if (incrementCurrentTurnAndGet() == totalTurns) { + context.getLog().info("All turns completed"); + return Behaviors.stopped(); + } + } return Behaviors.same(); } - private Behavior createPot(List> sessions) { - return Behaviors.receive(RoomCommand.class) - .onMessage(EnterPot.class, enterPot -> onGetPotSession(enterPot, sessions)) - // - .onMessage(UpdatePlayerAfterTurn.class, pub -> onUpdatePlayerAfterTurn(sessions, pub)) + private Behavior createPotBehaviour() { + return Behaviors.receive(Commands.RoomCommand.class) + .onMessage(Commands.EnterPot.class, this::onGetPotSession) + .onMessage(Commands.PlayTurn.class, this::onPlayTurn) .build(); } - public static Behavior create(int numberOfParticipants) { - return Behaviors.setup(ctx -> new ChatPotProtocol(ctx, numberOfParticipants).createPot(emptyList())); + public static Behavior create(int numberOfParticipants, int turns) { + return Behaviors.setup( + ctx -> + new ChatPotProtocol(ctx, new ArrayList<>(), numberOfParticipants, turns) + .createPotBehaviour()); } - public interface SessionEvent {} - - public record SessionGranted(ActorRef handle) implements SessionEvent {} - - public record SessionDenied(String reason) implements SessionEvent {} - - public record MessagePosted(String screenName, String message) implements SessionEvent {} - - public record PotReturned(double returnedAmount) implements SessionEvent {} - interface SessionCommand {} public record ParticipateInTurn(String message) implements SessionCommand {} @@ -137,7 +167,7 @@ public class ChatPotProtocol { public record SharePotWithParticipants(double returnedAmount) implements SessionCommand {} static class Session { - static Behavior create(ActorRef client) { + static Behavior create(ActorRef client) { return Behaviors.receive(ChatPotProtocol.SessionCommand.class) .onMessage( SharePotWithParticipants.class, @@ -146,8 +176,8 @@ public class ChatPotProtocol { } private static Behavior onSharePotWithParticipants( - ActorRef client, double returnedAmount) { - client.tell(new ChatPotProtocol.PotReturned(returnedAmount)); + ActorRef participant, double returnedAmount) { + participant.tell(new Events.PotReturned(participant, returnedAmount)); return Behaviors.same(); } } diff --git a/src/main/java/dev/freireservices/social_altruism/chat/ChatQuickStart.java b/src/main/java/dev/freireservices/social_altruism/chat/ChatQuickStart.java index 3291354..54914e8 100644 --- a/src/main/java/dev/freireservices/social_altruism/chat/ChatQuickStart.java +++ b/src/main/java/dev/freireservices/social_altruism/chat/ChatQuickStart.java @@ -5,6 +5,8 @@ import akka.actor.typed.ActorSystem; import akka.actor.typed.Behavior; import akka.actor.typed.Terminated; import akka.actor.typed.javadsl.Behaviors; +import dev.freireservices.social_altruism.chat.commands.Commands; +import dev.freireservices.social_altruism.chat.events.Events; import java.security.SecureRandom; import java.util.ArrayList; import java.util.List; @@ -19,25 +21,45 @@ public class ChatQuickStart { public static class Main { - static List> sessions = new ArrayList<>(); + static List> sessions = new ArrayList<>(); + + static final int numberOfParticipants = 2; + static final int numberOfTurns = 100; public static Behavior create() { return Behaviors.setup( context -> { - ActorRef chatRoom = context.spawn(ChatPotProtocol.create(100), "potRoom"); + ActorRef chatRoom = + context.spawn( + ChatPotProtocol.create(numberOfParticipants, numberOfTurns), "potRoom"); // Agregamos jugadores sessions.addAll( - IntStream.range(0, 100) + IntStream.range(0, numberOfParticipants) .mapToObj( i -> context.spawn( - Participante.create(getRandomNumberBetween(0, 100)), "participante-" + i)) + Participante.create(getRandomNumberBetween(0, 100)), + "participante-" + i)) .toList()); - sessions.forEach(s -> chatRoom.tell(new ChatPotProtocol.EnterPot(s, getRandomNumberBetween(0, 100)))); + // Entrar en pot + for (ActorRef session : sessions) { + chatRoom.tell(new Commands.EnterPot(session)); + } + for (int i = 0; i < numberOfTurns; i++) { + // Participar en cada turno cantidad diferente + for (ActorRef session : sessions) { + // Pícaro + if (session.path().name().contains("participante-0")) { + chatRoom.tell(new Commands.PlayTurn(session, 0)); + } else { + chatRoom.tell(new Commands.PlayTurn(session, getRandomNumberBetween(0, 10))); + } + } + } return Behaviors.receive(Void.class) .onSignal(Terminated.class, sig -> Behaviors.stopped()) diff --git a/src/main/java/dev/freireservices/social_altruism/chat/Participante.java b/src/main/java/dev/freireservices/social_altruism/chat/Participante.java index 1925f6c..0577c3b 100644 --- a/src/main/java/dev/freireservices/social_altruism/chat/Participante.java +++ b/src/main/java/dev/freireservices/social_altruism/chat/Participante.java @@ -3,14 +3,15 @@ package dev.freireservices.social_altruism.chat; import akka.actor.typed.Behavior; import akka.actor.typed.javadsl.ActorContext; import akka.actor.typed.javadsl.Behaviors; +import dev.freireservices.social_altruism.chat.events.Events; public class Participante { - public static Behavior create(int monedasInit) { + public static Behavior create(int monedasInit) { return Behaviors.setup(ctx -> new Participante(ctx, monedasInit).behavior()); } - private final ActorContext context; + private final ActorContext context; public double getMonedas() { return monedas; @@ -30,43 +31,55 @@ public class Participante { private double monedas; - private Participante(ActorContext context, double monedas) { - this.context = context; - this.monedas = monedas; + public double getMonedasInit() { + return monedasInit; } - private Behavior behavior() { - return Behaviors.receive(ChatPotProtocol.SessionEvent.class) - .onMessage(ChatPotProtocol.SessionDenied.class, this::onSessionDenied) - .onMessage(ChatPotProtocol.SessionGranted.class, this::onSessionGranted) - .onMessage(ChatPotProtocol.MessagePosted.class, this::onMessagePosted) - .onMessage(ChatPotProtocol.PotReturned.class, this::onPotReturned) + private final double monedasInit; + + private Participante(ActorContext context, double monedas) { + this.context = context; + this.monedas = monedas; + this.monedasInit = monedas; + } + + private Behavior behavior() { + return Behaviors.receive(Events.SessionEvent.class) + .onMessage(Events.SessionDenied.class, this::onSessionDenied) + .onMessage(Events.SessionGranted.class, this::onSessionGranted) + .onMessage(Events.PotReturned.class, this::onPotReturned) .build(); } - private Behavior onSessionDenied( - ChatPotProtocol.SessionDenied message) { + private Behavior onSessionDenied(Events.SessionDenied message) { context.getLog().info("cannot start chat room session: {}", message.reason()); return Behaviors.stopped(); } - private Behavior onSessionGranted( - ChatPotProtocol.SessionGranted message) { + private Behavior onSessionGranted(Events.SessionGranted message) { return Behaviors.same(); } - private Behavior onMessagePosted( - ChatPotProtocol.MessagePosted message) { - context - .getLog() - .info("message has been posted by '{}': {}", message.screenName(), message.message()); - return Behaviors.same(); - } - - private Behavior onPotReturned( - ChatPotProtocol.PotReturned potReturned) { + private Behavior onPotReturned(Events.PotReturned potReturned) { context.getLog().info("Pot returned: {}", potReturned.returnedAmount()); incrementMonedas(potReturned.returnedAmount()); + context + .getLog() + .info( + "Player {} has now {} coins; started with {} for a total profit of: {} %", + potReturned.participant().path().name(), + getMonedas(), + getMonedasInit(), + calculateProfit()); + + //Calcular contribución total. + //Si detecta baja contribución aplicar penalización + + return Behaviors.same(); } + + private double calculateProfit() { + return Math.round((getMonedas() * 100) / getMonedasInit() -100); + } } diff --git a/src/main/java/dev/freireservices/social_altruism/chat/TipoDeParticipante.java b/src/main/java/dev/freireservices/social_altruism/chat/TipoDeParticipante.java new file mode 100644 index 0000000..b298e8b --- /dev/null +++ b/src/main/java/dev/freireservices/social_altruism/chat/TipoDeParticipante.java @@ -0,0 +1,8 @@ +package dev.freireservices.social_altruism.chat; + +public enum TipoDeParticipante { + SANTO, + JUSTICIERO, + PICARO, + +} diff --git a/src/main/java/dev/freireservices/social_altruism/chat/commands/Commands.java b/src/main/java/dev/freireservices/social_altruism/chat/commands/Commands.java new file mode 100644 index 0000000..cdd817d --- /dev/null +++ b/src/main/java/dev/freireservices/social_altruism/chat/commands/Commands.java @@ -0,0 +1,15 @@ +package dev.freireservices.social_altruism.chat.commands; + +import akka.actor.typed.ActorRef; +import dev.freireservices.social_altruism.chat.events.Events; + +public class Commands { + public interface RoomCommand {} + + public record EnterPot(ActorRef replyTo) implements RoomCommand {} + + public record PlayTurn(ActorRef replyTo, double pot) implements RoomCommand {} + + // #chatroom-protocol + // #chatroom-behavior +} diff --git a/src/main/java/dev/freireservices/social_altruism/chat/events/Events.java b/src/main/java/dev/freireservices/social_altruism/chat/events/Events.java new file mode 100644 index 0000000..22ab9e6 --- /dev/null +++ b/src/main/java/dev/freireservices/social_altruism/chat/events/Events.java @@ -0,0 +1,16 @@ +package dev.freireservices.social_altruism.chat.events; + +import akka.actor.typed.ActorRef; +import dev.freireservices.social_altruism.chat.ChatPotProtocol; + +public class Events { + public interface SessionEvent {} + + public record SessionGranted(ActorRef handle) implements SessionEvent {} + + public record SessionDenied(String reason) implements SessionEvent {} + + public record PotReturned(ActorRef participant, double returnedAmount) implements SessionEvent {} + + +} diff --git a/src/main/resources/log4j.xml b/src/main/resources/log4j.xml new file mode 100644 index 0000000..c6b1322 --- /dev/null +++ b/src/main/resources/log4j.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/java/dev/freireservices/social_altruism/chat/ChatQuickStartTest.java b/src/test/java/dev/freireservices/social_altruism/chat/ChatQuickStartTest.java index 8174893..fc92c52 100644 --- a/src/test/java/dev/freireservices/social_altruism/chat/ChatQuickStartTest.java +++ b/src/test/java/dev/freireservices/social_altruism/chat/ChatQuickStartTest.java @@ -3,6 +3,8 @@ package dev.freireservices.social_altruism.chat; import akka.actor.testkit.typed.javadsl.ActorTestKit; import akka.actor.testkit.typed.javadsl.TestProbe; import akka.actor.typed.ActorRef; +import dev.freireservices.social_altruism.chat.commands.Commands; +import dev.freireservices.social_altruism.chat.events.Events; import java.time.Duration; import org.junit.Test; @@ -13,35 +15,41 @@ public class ChatQuickStartTest { // #test @Test + // FIXME - Improve or delete.. public void testCooperationCaseOne() { final ActorTestKit testKit = ActorTestKit.create(); - TestProbe testProbe = testKit.createTestProbe(); + TestProbe testProbe = testKit.createTestProbe(); - ActorRef chatRoomTest = - testKit.spawn(ChatPotProtocol.create(2), "chatRoom"); + ActorRef chatRoomTest = + testKit.spawn(ChatPotProtocol.create(2, 1), "chatRoom"); - ActorRef participanteUno = + ActorRef participanteUno = testKit.spawn(Participante.create(100), "participanteUno"); - ActorRef participanteDos = + ActorRef participanteDos = testKit.spawn(Participante.create(10), "participanteDos"); - ActorRef participanteTres = - testKit.spawn(Participante.create(100), "participanteTres"); + ActorRef participanteTres = + testKit.spawn(Participante.create(100), "participanteTres"); - ActorRef participanteCuatro = - testKit.spawn(Participante.create(10), "participanteCuatro"); + ActorRef participanteCuatro = + testKit.spawn(Participante.create(10), "participanteCuatro"); + // Enter POT + + chatRoomTest.tell(new Commands.EnterPot(participanteUno)); + chatRoomTest.tell(new Commands.EnterPot(participanteDos)); + + chatRoomTest.tell(new Commands.EnterPot(participanteTres)); + chatRoomTest.tell(new Commands.EnterPot(participanteCuatro)); // Turnos - - chatRoomTest.tell(new ChatPotProtocol.EnterPot(participanteUno, 10)); - chatRoomTest.tell(new ChatPotProtocol.EnterPot(participanteDos, 1)); - - chatRoomTest.tell(new ChatPotProtocol.EnterPot(participanteTres, 11)); - chatRoomTest.tell(new ChatPotProtocol.EnterPot(participanteCuatro, 2)); + chatRoomTest.tell(new Commands.PlayTurn(participanteUno, 1)); + chatRoomTest.tell(new Commands.PlayTurn(participanteDos, 2)); + chatRoomTest.tell(new Commands.PlayTurn(participanteTres, 3)); + chatRoomTest.tell(new Commands.PlayTurn(participanteCuatro, 4)); // #assert // #assert @@ -51,19 +59,19 @@ public class ChatQuickStartTest { @Test public void testActorGetsUserDenied() { final ActorTestKit testKit = ActorTestKit.create(); - TestProbe testProbe = testKit.createTestProbe(); + TestProbe testProbe = testKit.createTestProbe(); - ActorRef chatRoomTest = - testKit.spawn(ChatPotProtocol.create(2), "chatRoom"); + ActorRef chatRoomTest = + testKit.spawn(ChatPotProtocol.create(2, 1), "chatRoom"); - chatRoomTest.tell(new ChatPotProtocol.EnterPot(testProbe.ref(), 10)); + chatRoomTest.tell(new Commands.EnterPot(testProbe.ref())); - testProbe.expectMessageClass(ChatPotProtocol.SessionGranted.class, Duration.ofSeconds(10)); + testProbe.expectMessageClass(Events.SessionGranted.class, Duration.ofSeconds(10)); - chatRoomTest.tell(new ChatPotProtocol.EnterPot(testProbe.ref(), 10)); + chatRoomTest.tell(new Commands.EnterPot(testProbe.ref())); - ChatPotProtocol.SessionDenied sessionDenied = - new ChatPotProtocol.SessionDenied("Can only enter a pot once"); + Events.SessionDenied sessionDenied = + new Events.SessionDenied("Can only enter a pot once"); testProbe.expectMessage(Duration.ofSeconds(10), sessionDenied); diff --git a/target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$EnterPot.class b/target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$EnterPot.class deleted file mode 100644 index aa3a7eab22d2f9521bedc5c10fbbc02407ba654b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2449 zcmb_d|5F=96#r}>xdcK(BSkB=rIl(DYR{@z^^mqCRM3<%z~GGip|f1JpMGk>XC-TGHzJ2@N`@DVM_OHK>{siyyYr^5rPjlzz15OCd76bbkI^evB^ksT3+o($IdBGAr?!*HW=K8(|-?lFwVi77R` zKy3Cp`$FyVeV-gGH>Jz{J+3^nPnhGn?NO{(NA_?~$>iJYNdT(g1Z4V&&~4e;;)-_! z6+QtT47taJg)553Oy!Jfj=Fh+;Y#JK3Zd?zek`9pVz@@u&Tmr&G3@-pE*81pV3^pE zJ>`nWp2_dbe}>Fm)5FxPn(pkx2p5`C9`?FUDkI5Q zN^ug!U8=i=2wmlMX?Uhp>OK#{G$XO`?6i?I`iW_nOp!buF-#_-+o6G6qDfBQ6hm<% z2!x8T1QmLI&>$qAnjIF_85$!dV<9~j2r<32@B_o` z6)X@vPdpOEZG1$lp<)O_8RHpzOk4vRpUo3hA-a$uLBm4gO%<2vO{~$e@!=k=M#ZWf z5g)%1nK^|WTeTAG%k;=Co}qpP_~otC=Wr)cUnZ~&>EvsRN4R>P{%kDs@74481a~99 zCt=f>xrZI?fo$z}Si^3SP0Ylp`IOX3Q4nGyCV{b$sb7cOWnd(W&myVM@kO*Q;XbX# y-;?=|v;P&HT_S+5DeHMW#474&5bsvBU&0!N;2M_jIG4wFv~J`I_#RDc;_5$sx`ZeI diff --git a/target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$MessagePosted.class b/target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$MessagePosted.class deleted file mode 100644 index 15c4f641965a08e6cc538d228da6c009054f6167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1956 zcmb_dTTc@~6#k~tZi|bBiWg7;6|^nldcPI%0w@?jB7_GqF~fGG3)>x>oi_2&|Ko!s z5)&T$0sbiC*$c8-B!uwLnVmD|oNvzg&N==0Yx@U)CzxnQ3danznMfnU(7DE&+;X|M zYP}J*R8@w|sN*?$jNw?Zw3I^@IRot`j>BY_tcs@fK?z3*U#O;I3*Yjk?Qr)!ceQFb ze%-QbTwCL`%u7A5q?WdH2WN%v^Hnh~eJu#1-M5tx-W;zBhQiG5BNnuBywyqod%{FM zz%=TSZGi&lGEu-uhOCy6Cc|=Z=13k@DYZT$fIMa5G|muYjr+B6S)~WRIx@)V0HMc3 zFV0co#m5GBeTH{Oyq_aZfeQ>1hfUc6ap6dBvMD^xaJ85~h^cFpl$IFU zqRi!I98b(O>MKGm@)b8EU)tPV;>romv9L|o9LmGXBVv}yd{*e1tj=>q6{m$F=iS9U z2oH;Xn&DJ3us^9|VDj&BjjyPn7i2@(;)N5$)csHOUk~b=DripldWt&0z;%ZEhope& zWT#U*pG&EIt@uV1o}bU)Ry%Ivj)A)-?%_T||88%ohNqpnu%buDCJeci9WM-<$+#V_ zDc6M+DNb>(>I#2wM#}ZZMx~YIgd{dx{Inq^1a-Qzp`}WijJw?TlY+Q*mRp@9(f?}E zIQ3aPBuaM2NhO{Zc^Vw_>tHaaJx{0*QV{PQ|BNCtS<(icG7RmeY@ZYuc+SwbzbbJR z5WjvD93HY`~y5f1*0VECBm{8 U!DIALEsS6+lcRs-XBbD%ZxI;iBLDyZ diff --git a/target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$ParticipateInTurn.class b/target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$ParticipateInTurn.class index fdd28653435eda955a85a10e412ff8dc92045626..110c86f01791a40faa65291f95069c5cb8fd2e6c 100644 GIT binary patch delta 37 ncmbQoH;-?_d{)M#lNYcC1IaI}c0kgY%^pY=v$+AuU2G`;0(=cr delta 37 ncmbQoH;-?_d{)Nx$qQJ6f#erfJ0NMyW)CEb+1!BSF18c^_;(Dx diff --git a/target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$PotReturned.class b/target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$PotReturned.class deleted file mode 100644 index aa0587496ffe164c4e2d5792eb6710408de5e224..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1761 zcmb_dZBG+H5PlYD?^;fQ%8Q_aFCcAEPJBZx;tRztc z6KvWm+!eCK5TEe^Pt7v4r!(sbm`E5%TIhtuFjwL=`<>*T;N;<~jKpUZQ4JIW%cm&1vlhD0&0s3As-zce zGQ3U~THrC4DIBEPfX-=$DGTS&OAgCUSe_Fl&aluThl?7&-@*XS6Qlfn)$v1yjn<$y zW%H`I#a)%lY#10~$e)(1RUU?(2S@ zuRGGy=SbP1${wXS-;#n+W4`37EK19cbShkNNzlFNW9nFM(?y29^l_|EYY83iLHQ%X z>SlR{0_nFwxn?U@%yVLBM4l znNyKF4^0ZIxiJmQFpM4WazdU4XnqZ!e3c5)AccrGX(}=d(wEYMj^1vJ)lah%s zTqgvb&3J@l6OIltmi-Fj^9f-z+5(r(s4HT#qF>AY=X-Nb!N;{j=g X>Zb`jq)H890*~Seb;@6h!9(v5lcfkt0yEB_)L=M4AL82Z)yS2NtdUrTvQ!mm&w?P$)~PC}pOY zX-1j@76*Z^MTTDPFvG#+__3O}3q+U6dqF!s1P& zYozOJ-V!?%-F8Qnly$Ak zQsuaUZB;v{6Ap~)Dc~I%YobP^0IT6SD?Nr?X7XWZ5=7M)j$k&7OF6v5aTU0l|Lvy^_KbZ#)kNU zmf=snW|b1Wl_v9R-3gAd;T}Co@8rysac1B2uCSR&ba=^)$xI^U5k|+~9DWHRn$9tTBL1$(3(mR`XT9Iap;#|3Sf^~!BHgR>~$A}-;wsPiPK khCHtLb;*&(Rn*9}>Bn`!HsLp*cE*k1aMM2O_aiyZrQUfgoU&JT1t*@$y zsi~u_^;sYFu~WJb6ape{DhTyIa3i?Ur7MfmL_}Sj^9{e5^P3sYr{*84{ketLRbV5} zU-|{hY?06DR#|W2Y}diU&V1qMkpubtK20QYb{G(>PL*~Q(>g;!~&zMo!mD*-XGM(xQ$9%3*aTpJ{ zhR8zdeK_GWz+}J%_QXudeDF%%r5o*shONIRuJ>IPX6zY5i*yDp35TcB9d@hh+i*v^ zOqwxb##u&LvQcNaS652t@(pcoXxc43(aOyegiLZ+#SGSBiensCE=GOyV>qF4pseRk zDo^RL7>s>RGbGh$tvxupZo7PmD$7eXt9tnq!;EO@87ak^hAV$H@%}XNILkRTKd*JR z@`BzMYxbA8Tw{?d%2;z{o&GvExXCSUb4S&7k~kE(n{7j5y1Q-SC;yNi zB+;1g!5`p{GS0mq6_6P1huhtmn|WrRnc4aNWAht;8O-F7LXU-B8);-12Hx;CcYGeK zIZuTvRh=O-?FF8>%g|FQujG(L&O+WsA8dyCx@bGEmGG3%LbW|tXh%!ee(L?IhoH)dsBFg)y9$i$jQeO0JueATDS6>HMv{t8!K zC@0EZ)9{G(gD%yPn)i_~4Ow5}imwYJ6oC(w_9$=E%8NT_{7Mu9lfO4&@{1wAEL+MI z_q~wQ(2ky-3_F+l<+0FaL26@Rg5kzLCY-ur>-`PflhSCTcr&J_3mG_hT*8!v%Qmjy zD#O_Jt5L1McRF$jc;kOh^uf5#lL6FKTr z3sr`*+nL#isf9ZXqx+juN#e9%iiThc48!yl!$C-oIZfv@j*a(Vnk-1*=Sa zfwe(W3MXjIkR|W|qqH85tuTg@B$0iD#&C+xX+{DtNR#h0xrDG&w1>`CWfT3tCpzxN zv}2P5bC9OknLXSGfscRXegxx*`!od$No6Y&n>h3*|Cmzt7o{xD;v6A_Y_@nfkxUdT zpJDCCBAvjbaXz|i3FT<7;6iwj2sF(8MfyVCljtGsHC)FH(u_n>1vjZu!>Hg^CWqUY Irs@p;1ZxA%xBvhE diff --git a/target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$SessionEvent.class b/target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$SessionEvent.class deleted file mode 100644 index f11cd3dfc9e3d1109fddda994e4222c9ebb1df73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmbV{J#IoV5QJxW@E$xUC~}07 z8jZer{M_yUCKyy`5oUXC)FHBsEF2qaSd;`~wfoX8#jBNzGAEtXG|M)mZ44=x;68UO zVuPPI>{Ep{VR+V!R!;k)+I*kcBtpFl*JyZQ9TPtOG>o2kLU+xQmO*k!k1+lx4q>qJ mp5xSM5tjVE^OXcbkyk&jKqqSpC90QqQD?7nBEz6x_I?54K~ydP diff --git a/target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$SessionGranted.class b/target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$SessionGranted.class deleted file mode 100644 index cdec854fbf53f0770dfc3c477b3fb5a185023575..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2369 zcmb_dTTc@~6#k|_x0EUc5k&!SsBKYKylWAan>1D>LU`~JGi*mXwCvQ`X%ip(M?OfR zG2y`<;Eyt%?XJ=aZ4CBdcV^DaobR0PT;|8mo$ml1U@49Wx-4`j(1R#La+BA%UFPnF z{X#fO7Z{?`(v@b0p(~YM>qQK`7UBu?A;GX%5H> z%XW&~*mLw-R%Tf%qa0P9SP`BlmHSw8*9ae^$lXF&Fr3WuQi87yTR}}mG6uh*>rx_{Xlyib1;D;7$VFf_lk3>KxRJa9A?gU zYdC>pI8Ho>_f=l@7~XUYpuwl->zl$c+4M^bCm81cleLAKa1BH6irjFyscNF7*gAUC z2M*FQ*G4+B!i~tet5xl0XR-|Asn%H8^cq8V5UKvWbj7pk*1FKEeBDp6!Mt*Kd5vr7 zuR~$CDN3S!>A+StXEYf&+zdmh96}|Z3R6@Ca*J;XBQ(L5+Bnl$;(TU?Qu`!&y}ok{ zM^pPH3bG!8s<`TmgX=`1x44dutJL?=nd_`5YBNn9}=%K&5&K2K!D&uFuGfT=d z7N!_(AFv9jR)2TMGNEZd-r2M3qxebSrAD^;pivJC+V8&-oPytqoKH!nO#%L+Bp#w&AW?s<)Z zP{*siN*d9d`ec{~G4%B_SPY4r>k3`hEGV-NH`fL2hk|cfbft>}d=P1AAl^ z<{8fKvfqYH3yaiO+8?E`2h?MVp27$iM(7*#pFL;oua`;4H1^e5myt&3)~GWRzwTH1A=wjS%uY2IyV9 zKwCcG6pj9IE3<<`z-O99_MinCtq^U1p16zqTps{F{nPbhNQKv@Lw94D$sHVRbw6-6 z_Q%;6(#X{9?!zQ$@cppsYjQR71y(yRdO|e;|CfmS%XOo#kP6@TtGGsElGHWF={iY$ n9&S)HV#s0|_epXV-L$%j8H())jSr%|cu3&tLY;HjEJX;C?^5hJ0 diff --git a/target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$UpdatePlayerAfterTurn.class b/target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol$UpdatePlayerAfterTurn.class deleted file mode 100644 index 4e918661196cec2af240192738763ace4f985e1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2002 zcmb_dTTc^F5dKb~-2#h+3Mz=;1+*>5;uW=cff54=w}A4X59Y8v(3S0;diIor|Kx)t z5)&T$0sbiCYx;Y2|oZ z#Q^@2iA;cPRE6*JEs>=_x=mzpnIWxZsL5dG7B2L0#eDN~0_a{7S8$b}E8MS?WSJhm zdg0LX0aBldeq1L)#FsjEeTMQy-nci#)I;w!deo(o|C>d zFwQXfpG;8M95!^FQdkgKE!Vj>*=st|X*giV< zNR+@$T2tf(7{e`EZ-%P4jXQKBqlW9?d#2$$fnhqgB}g2IXv`Ao2ssFl9?%}B8ifON z0pIA@j9`W;5kfaj%DX3+_W)ndW!{f_k@*yXCCDaS7(KwX)9kN=I)4L9BZoYBU=-0| z99H8FBn#hRoE1efa>FPUCmDC1$2f^XBhpc#AV}DKShQcFQ^;z_=|n@uD95eD{4=~j b5mO}VC&JQX^O8;jw7*KF=|6lLCG`CPVfpxp diff --git a/target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol.class b/target/classes/dev/freireservices/social_altruism/chat/ChatPotProtocol.class index 0ee8630d337ed58e45e7edf96d9ec17a54c2c6e4..210abc47ee951e4f6ab35c5bfbc16f4d89474094 100644 GIT binary patch literal 10819 zcmc&)349dSdH;X9W?2oAEFmso5JngwFiQa2U~x+v0s%6@fN*R)+8s#?tDW`kNE|+s z*v4_}ICg>!i4StLNo+U4X%JTvJ8j*=P1Ce#+BEKcx^3F@aN4G>lm6e#?Ch+xQa8bE z{lh!+j``kq{J-P9r`LaU>8k+N$!8{^1f?3vbd;k)aAV9Ij`XF?c-qXE>EU?P%tSI) zG;Smg8VNf+6weGsq63B6_{!h%X~XwOhO z$*~SKrt6rj#%fbW+Kxx#DI;lTI+ALN8m`t+qlTv>hX#Ai^sc_Hz_c)GQKw;wj(SWL z)EqK~jYz^s_D6R09x|g`zhZSf8MoI8N}Ct%RrIFon4#!}ZOb+iYL$%YZqP9cR|~YL zm9)*H{Bl93arm$iF`~AWj@ZXiW-Ow}$1;h?2G!T*PHa_Q&(YC{xq?u}%w*zLGDBWE z9cG5?cp}mn&)BV%n1?0}^L1Q{1%j&lVRD+W)21;fXlPy-_}1->bUTBswY1ej9W7WS zD6`EB`HVGp7Hg`gH8^M_W0^>s_tLb9!lr4c*5HzTL&>O3DI#5IGZv2;wn^r%!x9Y< z9ZT^Z!L%IndHhiWM)KGW!;TIJ<~9e!C_r=JfiRY1g@)^O+<+Se8?Rgr8Zd39636yf zf~%>=F(!0Ox7+M%)v!v?R_u!AFae#3Y;qn=-L93}&1Bq+h0rRP(PktYtz_a@Bj=gv zMx!xh+3bj#VXVX&g->Fz-qVPKP+Bye>~CGTw-W2ILBmEJZD=Q{ad~!3o}h>2(Q%RP z(AkVF8n)`_z&64BF?0&Sm$>UU?M|zo9!7mx>HbJ2(YNAIgkAk+x;2DOvJ~*S#zR&- zX~r7wx<`qqc;BgG7rMw?%CKqn>G^7R6yC)VVrVzIHSE!G3-)rk0Dt}@Qb`(vrpt^2 zvY@Uiu^&Ae4(PZQ@1={4=9XW_lYKP(f&z+m!59b*R9P6eD^w_=t`t)GF5mTsA)= zW~ma5Wf?kf2p<(J42BKH3oml0rEKP16+({0?EyZ+IH?lBQ&*G&x)R1QmCwUCh0_{7 zuHzGUMsQUwjC9cC3~Edg!$xAr+|?(T+T0PuuQ!AKauUz!cphhHD#kg-VC`Xi3ZK^S z8AbVL^2&{NYp6Ftv(`7a2g$kJjC}j?S!J`&37QM|)~x~f`{7)f_XQm<;w6<;W3fFJ ztxNTC1;(usd_l(-RngNBPty2^PHH-1~k?Nj-Ig`z)n8;Y!<$M;f2&H^4u%JZ z^KsTwX8L;_-@`wsOlR6dDZx!%))?oL0xV|3CzbYn{F8=%*6}Z@Msl;ilUd`*Ve7CN z={D2cf-!}}I*q~Jn8El)Sa%TZJ4}1PitS|Z4dX5RK*PW3_;&^Fz^=&6t@Nw`BQwy( ztRKP;xfQaKx!Cy@-q!J7Dx+1HcMcheOb9;`R9i{<0$tH7eM8*6VS2)0p~=lXO{-Qd zH&@=U?E0qnPzov0rBtn+&))WUl8*CzDc7Y!3D`j9vxqSgD*C4TjHu}#J0x7CVFKl= z-QU}aTBRr$iU&!1?1cf3Do(C5vN)C#T*;xHSd$A)c1eTpvi zin>nf$}p}lC{tt8b(x{Yrg~#8Yk{R21V-^5IW~f14ViULBd~o9qD-#VWwy-mqN0&f zg2pzaxech#&xoF^A(?xHoCUU;V?u$?SxDvyHq-0I4{A>RmEC+#>`SL)zAo1)6o%qS zd#}p*nl!VH36unhgxPN-C^@rM(%y7br8n+8ylZQa6YhBA7^pR0guO7=n zw(>51*)e)>H|}1F<+^I+G8G6J;ySsn-RT@M?J=BUuC~*P8i~CIP0qI0S!NH!S>>)O zTJ%voaKUMGes`h#(=28Xr^aA-$X}U9)>kic|Nt z7p?HI68WKrNiCX)lPD9*`1qoUH18mfF>m~N#Vfhs7SuURau8^~8*7ZhS@ujKhjkYC zJUfUU-eIIXG`(;onZ{S@1TnaH4UIKgJ`BmcF=!1X?LC$g%!rMYx8LJYz!hM_Pnd!$ zQio6H|41Eu`NwSTc08L$-%Y*G$<@FGiwVKN#53MaX6l-9IhbCfD&QvGRRoK(aSG+^ z33u=Skm111?1FiLT5dcFJOqf^M_DiXRYFFSo^1Aa2>T=K^{V4saoxlsU`})U_|DD~ zN!HcOF4@X@RMp+IRM7jb`0PYH9H4~V)=)ZXZjP%njVYrd%Mw+z@GfU3uOD`p>QaVk zhzdG>+UmrwNNm$Rw$OyjZvJV>d0P}O@NxgM(Xwn_Qy3|?+Rjv0$Us=)a!8ZIx+H{m zE`f^Bv%U*1eqnG!!s{Mxl`98>t*;jVox8wR9?&MtOjD<29Ue-x29V{QZ3cS0)!YyF zFwqC67eDAOIq|o_gDH=4n~_L#$9ca~gL|o!lqy&6)a5q0y+*-s;^WT)HE8EY!|J0W zx*U*OYjB($$CYmH(&cWshuaHY7Un7Oq5mbd6*@y3tLL1+Qd?av_bcAtr*nrpw?^ic z^02F1{eVLcsi6}(_s0!2(m=5uQ5_%B>7es!NJQ z$(p*G)%eSMWQg3rR*BrmHgAUg_Das<^|~5UH{#Bd*U`?Cx8Qu%s_Sm&De6>~U#?;+ z!ui5ydCQj}U*t=P+{E7sr*o>b@?Cc)$ZA=`mZ&3C@8cCHb;c@Ms?I@P_P-{e`96~j zH3TSB_!M~b>``dr9OW35Ej?U+L9_sw+2neTLuRT&w$dZRk9dr(7!`F4>&v6st~}aH zK1Z%RO#yDoeQtPA>wUb&lc!p7qm|up4jR=GAma+wOpX=?NLBl!cphGWkIK<}EDd~| zG_Ih_~q*jWlv<|unDs`=i{-#wUy16YXLsOE#{*aTVhm;5FGOZB%F{j!C<0q8gLfC!6_J>Z{!y+v1OH~0>*o6mZi3h2@6G-D>e(?w%qZLl^_j9}^cnMEB`fsGe9VEK8Gb$>upY<(q zRyt(|qk__GIpl2~%emOz$%(w@^*px6i#u~_zjXoMu3g@834Z{L;E!rg^7SvA*Ae`s zLXDdyraCV76#vfZX}aYpG|&TP^R_jYHs-iIc+2ggBOB7?Ew_$~D?Te{HeABrfGYmG z9BDUVKkJb40>78Q_<`fQ*;IIQO;~nIw;S~2+mwO+EsxU@|JYfwhBp4!7rDq*{$Kj} zl2^9#xu(AU&2REK_l7UL@EtxQi)#O41pj#&b4%BJ7PA)BzT>p&%Gjz}RQqG6RbIYk z)(f0W+Dn~>O0{5&0q^yJ*IPzJLT99!&$2qvMr6`yDPbdACzDkJKVYM(POfqqZ?aKW zCsUoq8*EIglbKHA8!e?HGV4{8I2u38A(F)fKC@);A{##0=h*PcKEZ}h_5n6Xw$UMb zBuADub;#CKoWUKO7BM4WI5RHhj8^*&y9(9J+Hnx~E2@sin-}T)jF5J$qRe z^wi11^Rnm_s>nsXYuK6`M&xnXBezhk3Y}9CdIyU&yd{$-hiAQwz5Mq>m^3kDo`;)T ziEo-1^_Nl7v-q+s?l~_@W;UFchzfHYaKTySOnM$yF(OXE^Ui|GMfjnQq+VMkDL$$nDML!bc z{>LL2B_j$x^A_bI6%iZA4sP@(^m2Ju-5>&cDgHhN$o8DYWVoBP0vt>w*$}#reEBDF!VasX4C-~QoE9FV~7@xOu&65Zr!}e2bpXB({e1411Qx%hB8OKj!hV=6J ZaXw>wexf2I&v5>89DiOuDWArS{|3)L^d0~J literal 11245 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 av3-iq_p$vT+b*^rs;ZU`%hU1^)cqeQckGGM zZ2+#Po*UJnrg#N8Dn_74!AK3oxRKCLkhPzUU@7&x^`M*3B_m%fF?H!UnxItpf}?!C z@@U+Iu?og%xEbRKX`(5HAJaHv0dA?DU|vn3X!tQp!))9^i1Gy8em&^(6B05q3#aNc zbysE3Gu@RR;paqS4(?KLw}uezAvi8q;k&2kfg<;;AiAF{&>>4?7s=G9pqu>E?%-YGK;6cJramtX9TIwq=*S%!{S6<|hI?T(F6#IfI=HX!t zW;`N}*;CYLRN*lVk7K^LVC}*=RpChuPeJgV6?$+AA(8LYr%lscdMW4U%9U#|OE{xv z@T`L8G(3+4Lc1#|$;kC`cN7*9Y!$jc=qdG7=p0IRZxxAHq~S%p#N{jXd4sygn-(B+ z%xEqjr#RV_H%0f4cF(AEdrRFpnI#IAL^4djJj3GY`s^{4ey@tfSSmAI#*G!n%<-a^ zVzu9pIab9AtW>Z{!z)-VimW9@1+R+vN_)#|8rEUGSfdouMsZq6wpHVG1#f8Bj2c1) z_ueT6N6n6^MxBOwG>Gj{J(IU;*oFq~S|I4FsBo95*nu|{yd^=llh8*tLX1>3vB;F7 zI$*?Z4R7Ne;a25_KMGE3ID@ldm2G#w^C}8(K|?C??8uXmndO353mI5MMh!_A zV#g3>SlFBtjiSgZmc<_FLD7Wv8TpX`3?nEqBdi=Ft!)~9#R)sv#aeqx9CIBi#Zx|*w1sW4<)28xd@$Wtge0?+@cl0sbxeWly3|0yLw zYui_a(g?$(+7$}9#L;$rBJI%+e^;i3w+5gzT(FL%LSw= zNaS92IEUe9F`S(+Q227bn+|Z0X4X5LWww{qqR=s_4r7cc+=LRNxfZu&)uRlk!(;<5 z(}7NIy`E?s-~mHL7nVnOED>8 zg`(_;kvudT4Kz7Tb$CMhf12O)3pV401xR2|i^n@nwi>+L>IlB8+< zTm!9YTIg6)i?xmo^~eRki8gIUtt_S~T+9+~1(3{CS8hNGVv&Y+=#I`vXHHLE(~!-* z%tvpG!__FkwU~&${PpP%fdN>F9BjcLY-j#%48egA-*N~;xuZkEJ?_J$%!ds}aFihx zVpVxEF|<7Rn&Bg%b{NO-4eznoi*H#<_%0ljF=BcAlI3x>Y}WdowPZ8X5p@CADX3B~ zrxD%Ghd^{5Hm1&FAhR3Mz7d8-j^YQ_HnG)@+-x5G=4PW8b0i{7wb&xdVrYZ0+%_mR z;b;89^0r?16~MLI^3q^PU7Jb)gjM RX0cK#)7^Pbr%dVr=f4oqJh1=( delta 1639 zcmaJ>X>e0j6#j0um%Ln)G)=>FZ)v4_JI*jv%?zZp9S2M)wzb#_Gln)`n38mov|1Ib zqPB`l@uGDX6c-e=rPx(LL|kygeM3~-MO0K2H|n`bJIybDU;#U2P+h3Asqmmi!4i&IEM+Jc$27%agU+eV$X_IwIW66YItHaZ7^w>e*P79Q za}_jlEW>#WrwXPf3%7*}t$vxI8Rsi-4Xw~`W3%kg;$n_2T*6@RwzT-#BMfKe3oB3Q zb`^Nmcsspi9T9(9*{Y5}OT-@xlvM@;;f}Swkjsn^F5_5-%c<_FV5r*Lav?)j{{JQw zG%C1)!4d^-^9ELzH3t2yDmbpvdT@3RmVxHJy%C@N3gnKyjxR)U_%0Pmvs-V$~&Df&gevSvQRcut!M4>U$sNx}c z9S@87=5o~z9ky{iipRue^W37x84_oRs|ba>T^@g!3U7y&!Bp>G9q>jvLOzBLF==iP zJvytnfIEi9csUbkmia7I(x2{PaC(9*-nK?>$nRa*=4lz)Hgm~*#Z}PAz`~-}y4=A0q%IPNt+keSRJ@D#6ui&z0X`H9Z2QU&s%XY1 z9J#2pp;Aj*rwV!c?P7JOFF@^UINN^C z80xj~>_C&&)+*9wrFJ(JjpHIv;-wncyGL=Q{hD!90K@1R#*G7%tA(sq3NxLlu+SYk zkco6;VK!ZL9@!XspU5}S|Cxs|Br^?3ox#NPBo%{^8JWsBlK%tiUuDYx diff --git a/target/classes/dev/freireservices/social_altruism/chat/ChatQuickStart.class b/target/classes/dev/freireservices/social_altruism/chat/ChatQuickStart.class index 8be709ac082ffd63c8098b5dcd5320eece407b59..f23f60191a8f08c93b0b319f5b938c4cacd598bc 100644 GIT binary patch delta 33 pcmbQmF^gk^H8UgsWE*BjR$&HC29e24%$}@X3>*yJlP@rP0RViS2R;A* delta 33 pcmbQmF^gk^H8UgcWE*BjRzU_%2BFDK%$}?!3>*xmlP@rP0RVdR2MhoJ diff --git a/target/classes/dev/freireservices/social_altruism/chat/Participante.class b/target/classes/dev/freireservices/social_altruism/chat/Participante.class index e75cae56a893d281baa7f9b56bdcac72cb07c6bb..50901fe7c9d2e7c6abc5bee15de33b6989208564 100644 GIT binary patch literal 7424 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 literal 7680 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 aK7r3^e5Ux6eQ7bD^*CB6qCrG)^nU@FUg@m> diff --git a/target/classes/dev/freireservices/social_altruism/chat/commands/Commands$EnterPot.class b/target/classes/dev/freireservices/social_altruism/chat/commands/Commands$EnterPot.class new file mode 100644 index 0000000000000000000000000000000000000000..a29b00623f28e792a42695e0437bd66e4afe301e GIT binary patch literal 2365 zcmb_dTTc@~6#k|_w=GplRTS?R)V8QA-nEFzMZr`hK!}$IGi*n?vfZgO(zH z8{3ifI`^yEo{APDGrkdOUK$2ViH7%aNirO(@U=B=bH_+!n~x1qwI2oR1@W$&Cwup2 zF@PLH%E(2dTz{3}Wufx_Hk6B%O}|6rw!VB82XK(|)wr%r$*N#@vN!tX0(XY8IE*6{ zVez5KJQAvpyK-Cd9%JE)DmCu$hv$*I^0|4$_@4r zv)9yI3ikA_&FfseWZckJ6;!m5n%pyCYO*@d6|W1bby8XF;>aFFD+tHI!VdM^?%z3v zLxr8{gMm^1<+mR(oFKH$ZOPztJKrO(7&42psT}dx4br-AV~Sh}+LrqBxzJ`-YGYxH z;qE_|Ikn=()XPmuX|z$i5vEZOBylr?TexlEP8N4@kKxqj&`?d^xOHKN4Ht<}r>tzC zFnoyz-t}8@P1xbZS(=QV&?6No*P4xTED6ypig6;rC91P&p&jKmXgJoJevovVBU#0R0Q-m>k1`}WyrY|2ng+!0hL{H#2y`zl26X?N7;>;5- zK{QkP4ptid2I~v$dT@&VNxBK7ahm=^;VqoOS=!P42=yGT1N4w{oK_>W?qhU}NacA9 z(zAGhjsk^aM1$*AX&w83&$LWz(-tCHk+wm43}K pi5tY>24y3KGRASAIA_sIyQ`R>+zu0ckWAwtCNWKP22U`D;osx@i7WsB literal 0 HcmV?d00001 diff --git a/target/classes/dev/freireservices/social_altruism/chat/commands/Commands$PlayTurn.class b/target/classes/dev/freireservices/social_altruism/chat/commands/Commands$PlayTurn.class new file mode 100644 index 0000000000000000000000000000000000000000..592fa3171b163439594ae4dc620e170a66e2296a GIT binary patch literal 2507 zcmb_d|5F=96#r}>xde`e#ulyE7Aw^xXwRys^^mp@TF{gtFpOV*=q#5lxpKLUyPM4L zKRKhFvEvLs_y_n$IllXX90SQ<<%hd{`*z>g&wFqG`up%t0Qd3T7;+e~Flr-@0>k7B z-seuh!#!tHcv7_(3JZSdn?;6^YHg>4B1#sdNZSZayB^IQpE2`yCL_k?z|^n4yX z_)&3wtFgMu$1Tq2iuZiy2B(v^mRH7XQC#l{=B!ca7F%P2qGWB9(>{QrKrwdQdy63uR8Z_37- zc#G_{xo$7ZmSA{%G4|FX^>5pl#ygaC@pF#{n&F2FQJ#tA>Fx{R8MpSMg&Pbjub-(+ zDLW~g45cl9FXX1DC?9+ccS*CK3x~utV(Sxe9mz1wacAa@@OJXE=g&$QM{X=smld?H3k<8 z7QVKzi2GEZ$HPPQLgROYlQdo`LLIYvq=n&SHvN9sm;1s=F0Rtl41}I-O1a0=#ljPY+sC*K!NI~)h8x4L zQo$sk;VwO0IZ)5gzY;y1MBk)YpTi98=|v;DK)gKO#RzWE?isD4w3h3CfYs+-!KznZ zVd5pRM(|#G9i(cO=o#YCRouq=v_@27BBCPYIeb9e$Y^plLsXUMQjRW0ETrDlaGBoH zIvqzo+@&=VvFeA!$8SXDPT5YhTB+^J^fb<$A$}G3acz+N zRC4Fv(2Mv8cVfTC;m}zWhZFCCeEoM=!=lKiY7%HZCb4pyghWXMV4`H=*CDYSDaqrL z_|~WREMDjF1+9_4C-G0v|B}uwk%4=JdJzw>gk>~{cPrk{V}(+19rJipDB&^I@GY%P JtYZV${sGg7m^J_a literal 0 HcmV?d00001 diff --git a/target/classes/dev/freireservices/social_altruism/chat/commands/Commands$RoomCommand.class b/target/classes/dev/freireservices/social_altruism/chat/commands/Commands$RoomCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..c2c21b509e07a98893cf3e0d4bd81379622477c4 GIT binary patch literal 285 zcmbV{L5cz~5Ji94+O4ev9%9yJ?aGBHx>0ZrAemTdnsf(Ju@5(kIe>=}qbSUJYVm&+ z{130Lx1V1CGmHv!2#W)^>KNDt77nd7EK0nw+U>QA;bNs$=B%SKzOHq15H)`-pF8jC z*HNHL7+1R0%IW5$w%-+-NGQMjB^X{>$Aph}bMgoh`Wu$G@)8RS2-AOq5Ju~!;V^ev igoQBtLzWW=S$g;}8G1=O$Wc7Kk1~0g5{U-Gd~gSYh*6#Z literal 0 HcmV?d00001 diff --git a/target/classes/dev/freireservices/social_altruism/chat/commands/Commands.class b/target/classes/dev/freireservices/social_altruism/chat/commands/Commands.class new file mode 100644 index 0000000000000000000000000000000000000000..c019d43dcef12decca05568db02f634ce37fdb60 GIT binary patch literal 677 zcmbtS%Sr<=6g}xHecD=|tt-KWx-e_0C|D{8wH7ViN;-|2GLwNMQ}DA~2`>BqKT5n) zT5w$xIQO1&N$!LD{qy++;0gz2WRT^^Rgp)5p)r$lDMD#p#QkKZ0?$ym&_?@9hV1dl zn4`#WK2>w^Y?ZdkDLdDJa>B)dmf@2Oy-l=>MDQxT2;wM`X6i(D=`iHF@l-L?``V~M z5>1pH$w^2`vmXaC980THz7%u*RXc`Gf9;GNhVo;a*g)OrG)-+)%30beLuH_xzf)-; zj-$zNy>_ajVJP25i8UPC|N5tAyt2dCbL=wo*01Lwj-zF}4Aom>lnDOL!p3qMb`Ml6dB!VKzYkS!A5 Y#1?k2N36YI9Q$aI#tB;#;b<31zXEi-#sB~S literal 0 HcmV?d00001 diff --git a/target/classes/dev/freireservices/social_altruism/chat/events/Events$PotReturned.class b/target/classes/dev/freireservices/social_altruism/chat/events/Events$PotReturned.class new file mode 100644 index 0000000000000000000000000000000000000000..456cab78f307d043c699e569f90aebc0dc1825b0 GIT binary patch literal 1980 zcmb_dZEq7t5PsH)eRh0_LkhGIUQ!yU?X(z4~fS)Fi!h5^RZ3={7@QNk-D%Wf-g0c1kFs)g7C|IuB{AZpGTHqw#E1Mc)&xebYP$L zMLSq_=PmKL;et>3s9>65N~ZwJJvDHStT{s&&G`5Trx}V?ZCfp)Ck#JVTOWMOMy+*N zm;|`t!kzW;F+QPi9d0_Ssx27SP9)rhLqG3h78i&C@yCF74Z|-dft|_Z!R}KL+D7eH z50@BL-mgsC!WgNdm|BL*)e!_XYdZ|%Nu4S!8HxLY-mcJ(_->afH`7uf@9uCd-FvDW zw;f5Dubu#h)ZLrHc2xTz*SsgJ&;)$CdJMI3uWvA%sUBA>>NVwVd)N_a9T_eX+PnKV zhHWxTY^#9|#hP?kmy?;e?$D@_?h9krm9ZWc8E(B7Bh)Ylvpc<_lr>iKev-MV6mV+- z-{7`~J3hX}cf{CX9-1ae_C%26le#dJb`MY(US>-oqoLXpL1MVhqjp!A`Ib_9gMK4Z zo^)U`n$+kIoh_b&gliOrh?i>RR<-@A;36e)<`fqeZhc%!n&r!b64@x>cwM@!;7 z`FunU2hMqX8CzXP5X&3*isTgCGhsF1^y^s1aFe(!qJi&mm;RM$^%G%5+`x~N@%0*DY3us%E6%}tqNVphCDjFdq;)9uPN4n7N)R}D)|C0}r zXiRwU2l%6mXD>jxNR0Mj=gc{K&UfZJ=gj>4wf_UaJmypAK&OE&6EVaYdUtq}TUG9E zTW^FdRhc0^>$r|L$IzM0Z6=XG(m={YH%x}bvS?Z#lyH>LLNy&*XiH1m;nnxN>ZyjK zYnEN%o+X;X^|ZAdi1BrywIkgn;X1<4paj>_Wylnd(yx2UakmQ@I_3ovY4kEAJQ-RU z-e!w!NL|RCoiJnKBKj#|h3m?qEDMH}HYHs32@RSU!X+XuJ~nt&Gi2Vy#gt3AMpXRjOI0C~aQd6Dv^5yt)e|HRi^Ra>@$rj(F{IXIL)qem<1^|G z2YAXKQyPyop}iHUJp+>rGyha$8iIq1*1I63r#;2%At#-V!%E>ErVZRT@c<7Q#*QwC zYPgYh}sA&XV6b*mv7j(4X)TC*R!eNnv==uR^j4Cboq3Kbv=>S@o3C&P^NpdSVb3=>C{ zIfto%=M1CgyHZQSvS6BCyACi6)0gpIJi5Cv+Q)F2>{m#eBiTVRmH!TwpZo@6kF*Y4 zr8Q2Tpr}z=2SYE6;Tmb=AD}T@r+tj(ibNkhayKZ%hn*(r2OIf)^Z;LIdm7UWT_Vgr zda`bw5#9%U{;TjIj7QPi~91CSIJk; z*Zl!tf_{z$VS3<79Ru6I!lAN;MM-I_c0282xLLU>bJkID#XgFf*BEYD#FoBJIa-9l zMORum?N4g6zp#mfVq4yV;e~Zf=zR}IpBkaFW{JyEVva6h{Feivzw(~L%xMvp6n~{M b0->26{Y(?>v>V8f*X*E3EK(z>pqF*ugU(L* literal 0 HcmV?d00001 diff --git a/target/classes/dev/freireservices/social_altruism/chat/events/Events$SessionGranted.class b/target/classes/dev/freireservices/social_altruism/chat/events/Events$SessionGranted.class new file mode 100644 index 0000000000000000000000000000000000000000..a07e9b98c2bd3c42530bdb4649578a9682723918 GIT binary patch literal 2407 zcmb_dTT>HB6#hCuCJCbiR&nvVBJL(Z9ohA=Ygkl3AXZdLC?51-tC_Txskfk&anbUpJ{hiBq&gqYzcK-!%ACGfLVZgzliy@>L^4q+_ zy(SN~yywDKy2g;6m4UQ#3x+8sIJfnQcn}6}9 z)op2ZJipGZCpsdq#(NZrsWoAYRKc?5ffb>NIuB}1!Emn18x8Jp-zx3d*DX==9)|1Z z;#GN!96sq{1bK#xRcltuV2j~Jq1q28%Ejtl=rML=am>XJI7Jrg+|(CTjhw9X%VH%A zY23vb{75+vf46zlFud#&d{;crHn)Xu%f%NC&N9q@SH2<&8M13~E8w=RDIxWvS(`mJ zISW)KtIDowWtFd*Q>$EC>B|J-!8mY=aJZT{OA6$t>qM52H)o8cMT`VNisY{bwT&H?l6vo%G zMKiPe%0iPH)2&D_ULFMLw!UvDCgf)@Ji_2GxRoFfIzkpy&L_Vf>TaTl2yyU`2Iq0} z|G%@q!2-kGZ-iqQJuqAxEHPZ&qpk-P4pwLm^*%~96Z3`{dN5O9n4sTS_-K+mM`J&Q z^Yr2}`dz>PE|O-IbSaX#(m!CO=?`$;(QW{j=$odKKo&pIcRW6Y%b27colj7&&^knq zHRowHMe8AI2@PqamqV_P0&k9W z{R|4p_1PrcOlf)-r;oZH2b=j4Yz9S?BEN?*O$cEeUbLrBOYh_AUo5kFe literal 0 HcmV?d00001 diff --git a/target/classes/log4j.xml b/target/classes/log4j.xml new file mode 100644 index 0000000..c6b1322 --- /dev/null +++ b/target/classes/log4j.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/target/test-classes/dev/freireservices/social_altruism/chat/ChatQuickStartTest.class b/target/test-classes/dev/freireservices/social_altruism/chat/ChatQuickStartTest.class index e73dabf0eac0b5e9ea32b8e630636d9243742a90..5cb271f0198141cbffa5d9b41c2b247ef242f992 100644 GIT binary patch literal 3732 zcmb_e+gB4u82=3<*(64xDTsJQM4NEis#vR01Vf}~6eJj>t+mT$fQ7J=?ruV15JZTfeMMW>)S_lCsnZK9Tz42k7Yx&IMj2WY$$S)HL=;40*o7FwkhZ$2shaKx zOLe&ItQwB$Y?OFGm2wJpQ5~0ibF_8Mkg{}(YYt~PnMh_|h&LrQ?}?!e?F?<67%6tf z5(^}6xEXo1^CT>eR~2+fH#!;47WlflXmP{hHn-Ldo!hD{bVDoN(~6E&HtaQ3U)CHo zO`jPdl{!KfMTR4ZsVToFuJ@PuvbJsrD-}i;Ls;_83b7`A=#F7O4lo4ml6K!@xSH?* z;b+f22}jPc409>fK$#2iEMFwA4&ktZBhsrLhLL8yn$axB(2bI2%FrB6JjbJ63P7oj z<(4VJ=zD5$LfB!PpoFSFIY;=0kzk0|ucphIV+jTQ440cVSr=<-npv>bbY;?)A>%EI zO%zEC%4{BzuI$9NhE_7a3o2e$a59EdIL**qpO9`Gs%IGj4lh!;I}>#g@d_lB%quwa zQl`%owT-#5WkxZAv(of8Wnw+U^oe9XG)DC+f1$B(b<*xlq8P)tg3B?aF~QJZ?^eSa zt?xspRLX7*x8un#aHRlt{UzCQ1cvDx@XI# zEP=dX89T^Dc)*x7kl}$G$~x0IyW3zHF~yRq0IA z+1k)TPYh{{=0w@j`4vN!N7v3`8kQZ9vT4dRx#jjLZY$WJ2G(q~><9$CL#lTqO{;f~ zf=?LEG%M8S6vG~WJ14j*3!a|}zIcIq(I>llQDo$`K{!<8x}<`y88Xe9yaR{6x`brd zRY&0{-lONR{I!B!Xb92weWFwv8I8gIEwG`M^MXR1(J|5v=SSmqe(t^O_`- zp~pzhcL%mG@Cd^#@W`N_4Eaf=jvOK0wk^C-WhOeH!Ey8ue7*F-I))2GUBU@Wp&xfJfF%rJ9m9BtllYEK z{D9MVL~o!!aL&ba*2ArWX#l@rk$9**<5w)hAbdNqg%zxlExq`W{;On%ito`!vmojF zmb9%B{!{o037RP=lC`6>;>lR6$uMg&L`{aM$q+Ref@G9PhK&6OG%{E;cO#9ziBmpl z?lz3H8>YccT&jj*FrMkao+e;2c zAWwOK$x{-rdLUX*rjsoc(EBu=B2bcefDb7pMrizq#tc5jr!?kh{EWuWY5X!2q0l_Q H!%*a3D_Sts delta 1313 zcmZva%~M-d7{;HI+}wL}8zF>9r317HDTE}2VFoJ@2~iRPHKi3o5kG1Ji4a!w2SvMHUbm|z z!v9KUs)r^b0{*j|g<6@}5&606ycQKmQ}m^QNR}G4o7K9Wj&KHk7Dkcq!GkOEJ9k*> z?xnDv9&u`V+Oce!!K{I#4=-a*ASQp;L$XVo)aC^imGI@rTKVv>Qnhn6HD$@u{?Wn$ zG6u3fEFver)#l6@EcTrzP(HatVIJYH9`tqMFJ z&F>YDiWB#W_Rhpwy;iYzl4G~jUydIriAPBG(% zyw?%g>4@xhM0PtGyB&>PYE-D9ZfuWM;4b~v{ooIJ>h*8&ej5L|pcdIg6VqpCCjzM; z(kFPeiKUJIYj}$MW?W@db@*lvx9Zz6l(!pxQBg;D{g%}r