diff options
Diffstat (limited to 'domain/src/main/java/presentatie/Bart.java')
| -rw-r--r-- | domain/src/main/java/presentatie/Bart.java | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/domain/src/main/java/presentatie/Bart.java b/domain/src/main/java/presentatie/Bart.java new file mode 100644 index 0000000..085b0c9 --- /dev/null +++ b/domain/src/main/java/presentatie/Bart.java @@ -0,0 +1,70 @@ +package presentatie; + +import akka.actor.typed.ActorRef; +import akka.actor.typed.Behavior; +import akka.actor.typed.javadsl.AbstractBehavior; +import akka.actor.typed.javadsl.ActorContext; +import akka.actor.typed.javadsl.Behaviors; +import akka.actor.typed.javadsl.Receive; + +import java.time.Duration; + +public class Bart extends AbstractBehavior<Bart.Bericht> { + + public interface Bericht {} + + public static class reviewMijnCodeAlsjeblieft implements Bericht { + public ActorRef<isKlaarMetCodeReview> replyTo; + public reviewMijnCodeAlsjeblieft(ActorRef<isKlaarMetCodeReview> replyTo) { + this.replyTo = replyTo; + } + } + + public static class isKlaarMetCodeReview implements Bericht, Marco.Bericht { + public String string; + public isKlaarMetCodeReview(String string) { + this.string = string; + } + } + + public static Behavior<Bart.Bericht> create() { + return Behaviors.setup(context -> new Bart(context)); + } + + public Bart(ActorContext<Bart.Bericht> context) { + super(context); + } + + @Override + public Receive<Bart.Bericht> createReceive() { + return newReceiveBuilder() + .onMessage(Bart.reviewMijnCodeAlsjeblieft.class, this::reviewMarcosCode) + .build(); + } + + private Behavior<Bericht> bezigMetCodeReview() { + return newReceiveBuilder() + .onMessage(Bart.reviewMijnCodeAlsjeblieft.class, this::benAlBezig) + .build(); + } + + private Behavior<Bericht> reviewMarcosCode(reviewMijnCodeAlsjeblieft codeReviewVraag) { + getContext().getLog().info("Bart ontvangt vraag van Marco en begint met code review, en stuurt een reactie als hij klaar is."); + Duration seconds = Duration.ofSeconds(7); + getContext().getSystem().scheduler().scheduleOnce(seconds, new Runnable() { + @Override + public void run() { + codeReviewVraag.replyTo.tell(new isKlaarMetCodeReview("Ben klaar met de code review!")); + } + }, getContext().getExecutionContext()); + return bezigMetCodeReview(); + } + + private Behavior<Bericht> benAlBezig(reviewMijnCodeAlsjeblieft codeReviewVraag) { + getContext().getLog().info("Bart ontvangt tweede keer de vraag van Marco en reageert nu gelijk."); + codeReviewVraag.replyTo.tell(new isKlaarMetCodeReview("Ben al bezig met de code review, Life is bad.")); + return this; + } + + +} |
