diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2021-08-04 18:45:54 +0200 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2021-08-04 18:45:54 +0200 |
| commit | ba6e5201d3eea1a0a36f685d4e1a5f57fcefe199 (patch) | |
| tree | 2a0f9789c564661ab9cbc7ee8299c7c87a7c7ee3 /domain/src/main/java/presentatie/Bart.java | |
| parent | 4852e6c08a0dd759a60b34b0d03c1f1eedc23805 (diff) | |
feat(presentatie): testing gif
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; + } + + +} |
