MNP_Projekt_1/src/main/java/com/example/AkkaMainSystem.java
2024-05-18 18:19:24 +02:00

52 lines
1.7 KiB
Java

package com.example;
import akka.actor.typed.ActorRef;
import akka.actor.typed.Behavior;
import akka.actor.typed.javadsl.*;
import java.util.ArrayList;
import java.util.List;
public class AkkaMainSystem extends AbstractBehavior<AkkaMainSystem.Create> {
public static class Create {}
public static Behavior<Create> create() {
return Behaviors.setup(AkkaMainSystem::new);
}
// Statische Referenz auf das DistributionCenter
private static ActorRef<DistributionCenter.Message> distributionCenter;
// Statische Methode zum Abrufen der DistributionCenter-Referenz
public static ActorRef<DistributionCenter.Message> getDistributionCenter() {
return distributionCenter;
}
private AkkaMainSystem(ActorContext<Create> context) {
super(context);
// Erstellen des Adressbuchs
ArrayList<ActorRef<Customer.Message>> customers = new ArrayList<>();
customers.add(getContext().spawn(Customer.create("Alice"), "alice"));
customers.add(getContext().spawn(Customer.create("Bob"), "bob"));
customers.add(getContext().spawn(Customer.create("Charles"), "charles"));
customers.add(getContext().spawn(Customer.create("Derick"), "derick"));
ActorRef<AddressBook.Message> addressBook = getContext().spawn(AddressBook.create(customers), "addressBook");
// Erstellen des Verteilzentrums
distributionCenter = getContext().spawn(DistributionCenter.create(addressBook), "distributionCenter");
}
@Override
public Receive<Create> createReceive() {
return newReceiveBuilder().onMessage(Create.class, this::onCreate).build();
}
private Behavior<Create> onCreate(Create command) {
// Additional setup if needed
return this;
}
}