]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/group/jms/GroupJMSNACMsgListener.java
[JMS] corrected benchmarking.
[pub/jan/sbc.git] / src / main / java / at / ac / tuwien / sbc / valesriegler / group / jms / GroupJMSNACMsgListener.java
1 package at.ac.tuwien.sbc.valesriegler.group.jms;
2
3 import javax.jms.JMSException;
4 import javax.jms.Message;
5 import javax.jms.ObjectMessage;
6
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
9
10 import at.ac.tuwien.sbc.valesriegler.common.Util;
11 import at.ac.tuwien.sbc.valesriegler.group.GroupAgent;
12 import at.ac.tuwien.sbc.valesriegler.jms.nac.AbstractJMSNACMsgListener;
13 import at.ac.tuwien.sbc.valesriegler.jms.nac.actions.AddressInfoRequest;
14 import at.ac.tuwien.sbc.valesriegler.jms.nac.actions.AddressInfoResponse;
15 import at.ac.tuwien.sbc.valesriegler.jms.nac.actions.BenchmarkStart;
16 import at.ac.tuwien.sbc.valesriegler.jms.nac.actions.BenchmarkStop;
17 /**
18  * Handles the NAC communication for the Group Agent.
19  * 
20  * @author jan
21  * 
22  */
23 public class GroupJMSNACMsgListener extends AbstractJMSNACMsgListener implements Runnable {
24         private static final Logger log = LoggerFactory.getLogger(GroupJMSNACMsgListener.class);
25
26         public GroupJMSNACMsgListener() {
27                 Thread th = new Thread(this);
28                 th.setDaemon(true);
29                 th.start();
30         }
31
32         @Override
33         public void onMessage(Message msg) {
34                 try {
35                         if (msg instanceof ObjectMessage) {
36                                 ObjectMessage objMsg = (ObjectMessage) msg;
37                                 Object obj = objMsg.getObject();
38                                 if (obj instanceof AddressInfoRequest) {
39                                         log.debug("Received: " + obj);
40                                         return;
41                                         // DO NOTHING.
42
43                                 } else if (obj instanceof AddressInfoResponse) {
44                                         log.debug("Received: " + obj);
45                                         AddressInfoResponse response = (AddressInfoResponse) obj;
46                                         GroupAgent.getInstance().getPizzeriaIdentifiers().add(response.getAddress());
47                                         if (!Util.runSimulation) {
48                                                 GroupAgent.getGroupGui().getFrame().repaint();
49                                                 JMSGroupConnector.getConnectors().put(response.getAddress(), new JMSGroupConnector(response.getAddress()));
50                                         }
51                                         return;
52
53                                 } else if (obj instanceof BenchmarkStop) {
54                                         log.warn("Received: " + obj);
55                                         for (String keys : JMSGroupConnector.getConnectors().keySet()) {
56                                                 JMSGroupConnector c = JMSGroupConnector.getConnector(keys);
57                                                 c.getConnection().close();
58                                                 GroupAgent.getInstance().getDeliveryModel().createStatistics();
59                                                 GroupAgent.getJmsnac().stop();
60                                         }
61                                         return;
62
63                                 } else if (obj instanceof BenchmarkStart) {
64                                         log.debug("Received: " + obj);
65                                         return;
66                                         // DO NOTHING.
67
68                                 } else {
69                                         log.warn("Received unknown Object: " + obj);
70                                 }
71                         } else {
72                                 log.warn("Received unknown Message: " + msg);
73                         }
74                 } catch (JMSException e) {
75                         log.error("EXCEPTION!", e);
76                 }
77         }
78         @Override
79         public void run() {
80                 while (true) {
81                         try {
82                                 Thread.sleep(15000);
83                                 GroupAgent.getInstance().getPizzeriaIdentifiers().clear();
84                                 getJmsnac().sendNACMsg(new AddressInfoRequest());
85                         } catch (Exception e) {
86                                 log.warn("EXCEPTION!", e);
87                         }
88                 }
89         }
90
91 }