Aufgabe 2.4
This commit is contained in:
parent
e748f4e870
commit
61fc8c548c
|
@ -53,12 +53,16 @@ public class Greeter extends AbstractBehavior<Greeter.Greet> {
|
|||
// #greeter
|
||||
}
|
||||
|
||||
public static Behavior<Greet> create() {
|
||||
return Behaviors.setup(Greeter::new);
|
||||
private final int max;
|
||||
private int greetingCounter;
|
||||
|
||||
public static Behavior<Greet> create(int max) {
|
||||
return Behaviors.setup(context -> new Greeter(context, max));
|
||||
}
|
||||
|
||||
private Greeter(ActorContext<Greet> context) {
|
||||
private Greeter(ActorContext<Greet> context, int max) {
|
||||
super(context);
|
||||
this.max = max;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -67,12 +71,17 @@ public class Greeter extends AbstractBehavior<Greeter.Greet> {
|
|||
}
|
||||
|
||||
private Behavior<Greet> onGreet(Greet command) {
|
||||
getContext().getLog().info("Hello {}!", command.whom);
|
||||
this.greetingCounter++;
|
||||
getContext().getLog().info("Hello {}! ({})", command.whom, this.greetingCounter);
|
||||
if (this.greetingCounter == max) {
|
||||
return Behaviors.stopped();
|
||||
} else {
|
||||
//#greeter-send-message
|
||||
command.replyTo.tell(new Greeted(command.whom, getContext().getSelf()));
|
||||
//#greeter-send-message
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
// #greeter
|
||||
|
||||
|
|
|
@ -5,16 +5,12 @@ import akka.actor.typed.javadsl.*;
|
|||
|
||||
public class GreeterBot extends AbstractBehavior<Greeter.Greeted> {
|
||||
|
||||
public static Behavior<Greeter.Greeted> create(int max) {
|
||||
return Behaviors.setup(context -> new GreeterBot(context, max));
|
||||
public static Behavior<Greeter.Greeted> create() {
|
||||
return Behaviors.setup(GreeterBot::new);
|
||||
}
|
||||
|
||||
private final int max;
|
||||
private int greetingCounter;
|
||||
|
||||
private GreeterBot(ActorContext<Greeter.Greeted> context, int max) {
|
||||
private GreeterBot(ActorContext<Greeter.Greeted> context) {
|
||||
super(context);
|
||||
this.max = max;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -23,13 +19,8 @@ public class GreeterBot extends AbstractBehavior<Greeter.Greeted> {
|
|||
}
|
||||
|
||||
private Behavior<Greeter.Greeted> onGreeted(Greeter.Greeted message) {
|
||||
greetingCounter++;
|
||||
getContext().getLog().info("Greeting {} for {}", greetingCounter, message.whom);
|
||||
if (greetingCounter == max) {
|
||||
return Behaviors.stopped();
|
||||
} else {
|
||||
getContext().getLog().info("Greeting for {}", message.whom);
|
||||
message.from.tell(new Greeter.Greet(message.whom, getContext().getSelf()));
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ public class GreeterMain extends AbstractBehavior<GreeterMain.SayHello> {
|
|||
private GreeterMain(ActorContext<SayHello> context) {
|
||||
super(context);
|
||||
//#create-actors
|
||||
greeter = context.spawn(Greeter.create(), "greeter");
|
||||
greeter = context.spawn(Greeter.create(6), "greeter");
|
||||
//#create-actors
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@ public class GreeterMain extends AbstractBehavior<GreeterMain.SayHello> {
|
|||
private Behavior<SayHello> onSayHello(SayHello command) {
|
||||
//#create-actors
|
||||
ActorRef<Greeter.Greeted> replyTo =
|
||||
getContext().spawn(GreeterBot.create(6), command.name);
|
||||
getContext().spawn(GreeterBot.create(), command.name);
|
||||
greeter.tell(new Greeter.Greet(command.name, replyTo));
|
||||
//#create-actors
|
||||
return this;
|
||||
|
|
Loading…
Reference in New Issue