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

Last change on this file since 15 was 15, checked in by stoda, 11 years ago

Listeners added (not tested)
little test to shut up Vilella

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