MNP_Projekt_1/src/main/java/com/example/AkkaMainSystem.java

62 lines
2.4 KiB
Java
Raw Normal View History

2023-05-03 12:02:18 +02:00
package com.example;
import akka.actor.typed.ActorRef;
import akka.actor.typed.Behavior;
import akka.actor.typed.javadsl.*;
2024-05-15 01:29:12 +02:00
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
2024-05-15 01:29:12 +02:00
2023-05-03 12:02:18 +02:00
public class AkkaMainSystem extends AbstractBehavior<AkkaMainSystem.Create> {
public static class Create {
}
public static Behavior<Create> create() {
return Behaviors.setup(AkkaMainSystem::new);
}
private AkkaMainSystem(ActorContext<Create> context) {
super(context);
}
@Override
public Receive<Create> createReceive() {
return newReceiveBuilder().onMessage(Create.class, this::onCreate).build();
}
private Behavior<Create> onCreate(Create command) {
// Erstellen des Adressbuchs
ArrayList<ActorRef<Customer.Message>> customers = new ArrayList<>();
// Erstellen von vier Empfänger*innen
/* for (int i = 0; i < 4; i++) {
customers.add(getContext().spawn(Customer.create("Customer" + (i + 1)), "customer" + (i + 1)));
}*/
customers.add(getContext().spawn(Customer.create("Alice"+( 1)) ,"alice"+(1)));
customers.add(getContext().spawn(Customer.create("Bob"+( 1)) ,"bob"+(1)));
customers.add(getContext().spawn(Customer.create("Charles"+( 1)) ,"charles"+(1)));
customers.add(getContext().spawn(Customer.create("Derick"+( 1)) ,"derick"+(1)));
ActorRef<AddressBook.Message> addressBook = getContext().spawn(AddressBook.create(customers), "addressBook");
// Nachricht GetCustomers senden, um Kundenreferenzen abzurufen
// Erstellen des Verteilzentrums
ActorRef<DistributionCenter.Message> distributionCenter = getContext().spawn(DistributionCenter.create(addressBook), "distributionCenter");
/*
// Erstellen von vier Wagen mit zufälligen Routen
for (int i = 0; i < 4; i++) {
List<String> route = new ArrayList<>(); // Hier sollte die Liste der Orte sein, nicht der Kundenreferenzen
Collections.shuffle(route);
ActorRef<DeliveryCar.Message> truck = getContext().spawn(DeliveryCar.create(route), "truck" + (i + 1));
// Erstellen einer leeren Paketliste
List<Paket> paketeList = new ArrayList<>();
// Beispiel für den Aufruf der ArriveMessage-Nachricht mit korrekten Parametern
distributionCenter.tell(new DistributionCenter.ArriveMessage(paketeList, truck));
}
*/
2023-05-03 12:02:18 +02:00
return this;
}
}