]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/xvsm/waiter/Waiter.java
[XVSM] Create initial Pizzeria Recovery support.
[pub/jan/sbc.git] / src / main / java / at / ac / tuwien / sbc / valesriegler / xvsm / waiter / Waiter.java
1 package at.ac.tuwien.sbc.valesriegler.xvsm.waiter;
2
3 import java.io.Serializable;
4
5 import at.ac.tuwien.sbc.valesriegler.common.Tuple;
6 import at.ac.tuwien.sbc.valesriegler.common.Util;
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
9
10 import at.ac.tuwien.sbc.valesriegler.xvsm.WaiterXVSM;
11
12 /**
13  * This is a waiter using XVSM
14  * 
15  * @author Gregor Riegler <gregor DOT riegler AT gmail DOT com>
16  * 
17  */
18 public class Waiter implements Serializable {
19     private static final String USAGE = "Waiter needs exactly two integer parameters: WAITERID, PIZZERIA-SPACE-PORT";
20         private static final Logger log = LoggerFactory.getLogger(Waiter.class);
21
22     private final int port;
23     private final int id;
24         private WaiterXVSM xvsm;
25
26         public static void main(String[] args) {
27         final Tuple<Integer> waiterIdAndSpacePort = Util.parseIdAndSpacePort(args, USAGE);
28
29                 Waiter waiter = new Waiter(waiterIdAndSpacePort.fst, waiterIdAndSpacePort.snd);
30                 waiter.start();
31         }
32
33         private void start() {
34                 xvsm = new WaiterXVSM(id, port);
35                 
36                 xvsm.listenForOrderRequests();
37                 
38                 xvsm.listenForPaymentRequest();
39                 
40                 xvsm.listenForPreparedPizzas();
41                 
42                 // when new guests arrive the waiter should try to assign a table to them
43                 xvsm.listenForNewGuests();
44                 
45                 // when tables get free the waiter should have a look if there are waiting guests and assign the new table to them
46                 xvsm.listenForFreeTable();
47
48         xvsm.listenForPhoneOrders();
49
50         xvsm.listenForPreparedDeliveryPizzas();
51         }
52
53
54         public Waiter(int id, int port) {
55                 this.id = id;
56         this.port = port;
57                 log.info("I AM A WAITER WITH ID {}", id);
58         }
59
60 }