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