1 package at.ac.tuwien.sbc.valesriegler.xvsm;
4 import at.ac.tuwien.sbc.valesriegler.common.Util;
5 import at.ac.tuwien.sbc.valesriegler.xvsm.spacehelpers.SpaceAction;
6 import org.slf4j.Logger;
7 import org.slf4j.LoggerFactory;
9 import java.io.Serializable;
10 import java.util.List;
13 public class LoadBalancerXVSM extends AbstractXVSMConnector {
14 private static final Logger log = LoggerFactory.getLogger(LoadBalancerXVSM.class);
16 private int loadBalancerId;
17 private Set<Integer> pizzeriaIdentifiers;
19 public LoadBalancerXVSM(int id, int port) {
22 this.loadBalancerId = id;
24 this.groupAgentInfoContainer = useContainerOfSpaceWithPort(Util.GROUP_AGENT_INFO, Util.GROUP_AGENT_PORT);
27 public void listenForPizzerias() {
28 getDefaultBuilder("listenForPizzerias").setLookaround(true).setCref(groupAgentInfoContainer).setSpaceAction(new SpaceAction() {
30 public void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
32 final List<PizzeriaRegistration> pizzeriaRegistrations = castEntries(entries);
33 for (PizzeriaRegistration registration : pizzeriaRegistrations) {
34 final int pizzeriaId = registration.pizzeriaSpacePort;
35 if (! pizzeriaIdentifiers.contains(pizzeriaId)) {
36 pizzeriaIdentifiers.add(pizzeriaId);
37 listenToPizzeria(pizzeriaId);
42 }).createSpaceListenerImpl();
45 private void listenToPizzeria(int pizzeriaId) {
46 getDefaultBuilder("listenForPizzeriaDeliveries").setLookaround(true).setCref(useContainerOfSpaceWithPort(Util.DELIVERY_ORDER_TAKEN, pizzeriaId)).setSpaceAction(new SpaceAction() {
48 public void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
49 // TODO: do something when pizzeria gets new deliveries
51 }).createSpaceListenerImpl();