]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/xvsm/LoadBalancerXVSM.java
[XVSM] LoadBalancer skeleton
[pub/jan/sbc.git] / src / main / java / at / ac / tuwien / sbc / valesriegler / xvsm / LoadBalancerXVSM.java
1 package at.ac.tuwien.sbc.valesriegler.xvsm;
2
3
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;
8
9 import java.io.Serializable;
10 import java.util.List;
11 import java.util.Set;
12
13 public class LoadBalancerXVSM extends AbstractXVSMConnector {
14     private static final Logger log = LoggerFactory.getLogger(LoadBalancerXVSM.class);
15
16     private int loadBalancerId;
17     private Set<Integer> pizzeriaIdentifiers;
18
19     public LoadBalancerXVSM(int id, int port) {
20         super(port);
21
22         this.loadBalancerId = id;
23
24         this.groupAgentInfoContainer = useContainerOfSpaceWithPort(Util.GROUP_AGENT_INFO, Util.GROUP_AGENT_PORT);
25     }
26
27     public void listenForPizzerias() {
28         getDefaultBuilder("listenForPizzerias").setLookaround(true).setCref(groupAgentInfoContainer).setSpaceAction(new SpaceAction() {
29             @Override
30             public void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
31
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);
38                     }
39                 }
40
41             }
42         }).createSpaceListenerImpl();
43     }
44
45     private void listenToPizzeria(int pizzeriaId) {
46         getDefaultBuilder("listenForPizzeriaDeliveries").setLookaround(true).setCref(useContainerOfSpaceWithPort(Util.DELIVERY_ORDER_TAKEN, pizzeriaId)).setSpaceAction(new SpaceAction() {
47             @Override
48             public void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
49                 // TODO: do something when pizzeria gets new deliveries
50             }
51         }).createSpaceListenerImpl();
52     }
53
54 }