]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/group/jms/GroupJMSNACMsgListener.java
[JMS] added naming service + integrated with PG.
[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.group.GroupAgent;
11 import at.ac.tuwien.sbc.valesriegler.jms.nac.AbstractJMSNACMsgListener;
12 import at.ac.tuwien.sbc.valesriegler.jms.nac.actions.AddressInfoRequest;
13 import at.ac.tuwien.sbc.valesriegler.jms.nac.actions.AddressInfoResponse;
14 /**
15  * Handles the NAC communication for the Group Agent.
16  * 
17  * @author jan
18  * 
19  */
20 public class GroupJMSNACMsgListener extends AbstractJMSNACMsgListener implements Runnable {
21         private static final Logger log = LoggerFactory.getLogger(GroupJMSNACMsgListener.class);
22
23         public GroupJMSNACMsgListener() {
24                 Thread th = new Thread(this);
25                 th.setDaemon(true);
26                 th.run();
27         }
28
29         @Override
30         public void onMessage(Message msg) {
31                 try {
32                         if (msg instanceof ObjectMessage) {
33                                 ObjectMessage objMsg = (ObjectMessage) msg;
34                                 Object obj = objMsg.getObject();
35
36                                 if (obj instanceof AddressInfoResponse) {
37                                         AddressInfoResponse response = (AddressInfoResponse) obj;
38                                         GroupAgent.getInstance().getPizzeriaIdentifiers().add(response.getAddress());
39                                         GroupAgent.getGroupGui().getFrame().repaint();
40                                         JMSGroupConnector.getConnectors().put(response.getAddress(), new JMSGroupConnector(response.getAddress()));
41                                 } else {
42                                         log.warn("Received unknown Object: " + obj);
43                                 }
44                         } else {
45                                 log.warn("Received unknown Message: " + msg);
46                         }
47                 } catch (JMSException e) {
48                         log.error("EXCEPTION!", e);
49                 }
50         }
51         @Override
52         public void run() {
53                 while (true) {
54                         try {
55                                 getJmsnac().sendNACMsg(new AddressInfoRequest());
56                                 Thread.sleep(10000);
57                                 GroupAgent.getInstance().getPizzeriaIdentifiers().clear();
58                         } catch (Exception e) {
59                                 log.warn("EXCEPTION!", e);
60                         }
61                 }
62         }
63
64 }