source: trunk/objectmq/src/omq/common/broker/Broker.java @ 18

Last change on this file since 18 was 18, checked in by gguerrero, 11 years ago

Logs and new event.

File size: 2.9 KB
Line 
1package omq.common.broker;
2
3import java.io.IOException;
4import java.util.Properties;
5
6import omq.Remote;
7import omq.client.proxy.Proxymq;
8import omq.client.remote.response.ResponseListener;
9import omq.common.event.Event;
10import omq.common.event.EventDispatcher;
11import omq.common.event.EventWrapper;
12import omq.common.util.Environment;
13import omq.common.util.OmqConnectionFactory;
14import omq.common.util.Serializer;
15import omq.exception.EnvironmentException;
16import omq.exception.RemoteException;
17import omq.exception.SerializerException;
18import omq.server.remote.request.RemoteObject;
19
20import com.rabbitmq.client.Channel;
21import com.rabbitmq.client.Connection;
22
23public class Broker {
24        private static Connection connection;
25        private static Channel channel;
26        private static boolean clientStarted = false;
27
28        public static void initBroker(Properties env) throws Exception {
29                try {
30                        Environment.getEnvironment();
31                } catch (EnvironmentException ex) { // environment not set.
32                        Environment.setEnvironment(env);
33                        connection = OmqConnectionFactory.getNewConnection(env);
34                        channel = connection.createChannel();
35                }
36        }
37
38        // TODO: what happens if the connection is not set
39        public static Connection getConnection() throws Exception {
40                return connection;
41        }
42
43        public static Channel getChannel() throws Exception {
44                return channel;
45        }
46
47        public static Channel getNewChannel() throws IOException {
48                return connection.createChannel();
49        }
50
51        public static Remote lookup(String reference, Class<?> contract) throws RemoteException {
52                try {
53                        Properties environment = Environment.getEnvironment();
54
55                        if (!clientStarted) {
56                                initClient(environment);
57                                clientStarted = true;
58                        }
59
60                        if (!Proxymq.containsProxy(reference)) {
61                                Proxymq proxy = new Proxymq(reference, contract, environment);
62                                Class<?>[] array = { contract };
63                                return (Remote) Proxymq.newProxyInstance(contract.getClassLoader(), array, proxy);
64                        }
65                        return (Remote) Proxymq.getInstance(reference);
66
67                } catch (Exception e) {
68                        throw new RemoteException(e);
69                }
70        }
71
72        public static void bind(String reference, RemoteObject remote) throws RemoteException {
73                try {
74                        Properties environment = Environment.getEnvironment();
75                        remote.start(reference, environment);
76                } catch (Exception e) {
77                        throw new RemoteException(e);
78                }
79        }
80
81        public static void unbind(String reference) throws RemoteException {
82
83        }
84
85        public void rebind(String name, Remote obj) throws RemoteException {
86
87        }
88
89        private static void initClient(Properties environment) throws Exception {
90                if (ResponseListener.isVoid()) {
91                        ResponseListener.init(environment);
92                }
93                if (EventDispatcher.isVoid()) {
94                        EventDispatcher.init(environment);
95                }
96        }
97       
98       
99        public static void trigger(Event event) throws IOException, SerializerException{
100                String UID = event.getTopic();
101                EventWrapper wrapper = new EventWrapper(event);
102                channel.exchangeDeclare(UID, "fanout");
103                channel.basicPublish(UID, "", null, Serializer.serialize(wrapper));
104        }
105
106}
Note: See TracBrowser for help on using the repository browser.