001    /** 
002     * 
003     * Copyright 2004 Protique Ltd
004     * 
005     * Licensed under the Apache License, Version 2.0 (the "License"); 
006     * you may not use this file except in compliance with the License. 
007     * You may obtain a copy of the License at 
008     * 
009     * http://www.apache.org/licenses/LICENSE-2.0
010     * 
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS, 
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
014     * See the License for the specific language governing permissions and 
015     * limitations under the License. 
016     * 
017     **/
018    
019    package org.activemq.broker;
020    
021    import org.activemq.message.ActiveMQMessage;
022    import org.activemq.message.ActiveMQXid;
023    import org.activemq.message.BrokerInfo;
024    import org.activemq.message.ConnectionInfo;
025    import org.activemq.message.ConsumerInfo;
026    import org.activemq.message.DurableUnsubscribe;
027    import org.activemq.message.MessageAck;
028    import org.activemq.message.ProducerInfo;
029    import org.activemq.message.SessionInfo;
030    import org.activemq.service.Service;
031    import org.activemq.transport.TransportServerChannel;
032    
033    import javax.jms.JMSException;
034    import javax.jms.JMSSecurityException;
035    import javax.transaction.xa.XAException;
036    
037    /**
038     * The Broker is the client side interface to the JMS server
039     *
040     * @version $Revision: 1.1.1.1 $
041     */
042    public interface BrokerConnector extends Service {
043    
044        /**
045         * @return infomation about the Broker
046         */
047        public BrokerInfo getBrokerInfo();
048    
049        /**
050         * @return the transport channel this broker is using
051         */
052        public TransportServerChannel getServerChannel();
053    
054        /**
055         * Get a hint about the broker capacity for more messages
056         *
057         * @return percentage value (0-100) about how much capacity the
058         *         broker has
059         */
060        public int getBrokerCapacity();
061    
062        /**
063         * Register a Broker Client
064         *
065         * @param client
066         * @param info   contains infomation about the Connection this Client
067         *               represents
068         * @throws JMSException
069         * @throws javax.jms.InvalidClientIDException
070         *                              if the JMS client specifies an invalid or duplicate client
071         *                              ID.
072         * @throws JMSSecurityException if client authentication fails due to an invalid user name or
073         *                              password.
074         */
075        public void registerClient(BrokerClient client, ConnectionInfo info) throws JMSException;
076    
077        /**
078         * Deregister a Broker Client
079         *
080         * @param client
081         * @param info
082         * @throws JMSException if some internal error occurs
083         */
084    
085        public void deregisterClient(BrokerClient client, ConnectionInfo info) throws JMSException;
086    
087        /**
088         * Registers a MessageConsumer
089         *
090         * @param client
091         * @param info
092         * @throws JMSException
093         * @throws JMSSecurityException if client authentication fails for the Destination the
094         *                              Consumer applies for
095         */
096        public void registerMessageConsumer(BrokerClient client, ConsumerInfo info) throws JMSException;
097    
098        /**
099         * De-register a MessageConsumer from the Broker
100         *
101         * @param client
102         * @param info
103         * @throws JMSException
104         */
105        public void deregisterMessageConsumer(BrokerClient client, ConsumerInfo info) throws JMSException;
106    
107        /**
108         * Registers a MessageProducer
109         *
110         * @param client
111         * @param info
112         * @throws JMSException
113         * @throws JMSSecurityException if client authentication fails for the Destination the
114         *                              Consumer applies for
115         */
116    
117        public void registerMessageProducer(BrokerClient client, ProducerInfo info) throws JMSException;
118    
119        /**
120         * De-register a MessageProducer from the Broker
121         *
122         * @param client
123         * @param info
124         * @throws JMSException
125         */
126        public void deregisterMessageProducer(BrokerClient client, ProducerInfo info) throws JMSException;
127    
128        /**
129         * Register a client-side Session (used for Monitoring)
130         *
131         * @param client
132         * @param info
133         * @throws JMSException
134         */
135    
136        public void registerSession(BrokerClient client, SessionInfo info) throws JMSException;
137    
138        /**
139         * De-register a client-side Session from the Broker (used for monitoring)
140         *
141         * @param client
142         * @param info
143         * @throws JMSException
144         */
145        public void deregisterSession(BrokerClient client, SessionInfo info) throws JMSException;
146    
147        /**
148         * Start a transaction from the Client session
149         *
150         * @param client
151         * @param transactionId
152         * @throws JMSException
153         */
154        public void startTransaction(BrokerClient client, String transactionId) throws JMSException;
155    
156        /**
157         * Rollback a transacton
158         *
159         * @param client
160         * @param transactionId
161         * @throws JMSException
162         */
163        public void rollbackTransaction(BrokerClient client, String transactionId) throws JMSException;
164    
165        /**
166         * Commit a transaction
167         *
168         * @param client
169         * @param transactionId
170         * @throws JMSException
171         */
172        public void commitTransaction(BrokerClient client, String transactionId) throws JMSException;
173    
174    
175        /**
176         * Start an XA transaction
177         *
178         * @param client
179         * @param xid
180         * @throws XAException
181         */
182        public void startTransaction(BrokerClient client, ActiveMQXid xid) throws XAException;
183    
184        /**
185         * Get all the Xids of the prepared XA transactions.
186         *
187         * @param client
188         * @return
189         * @throws XAException
190         */
191        public ActiveMQXid[] getPreparedTransactions(BrokerClient client) throws XAException;
192    
193        /**
194         * Prepare an XA transaction.
195         *
196         * @param client
197         * @param xid
198         * @return
199         * @throws XAException
200         */
201        public int prepareTransaction(BrokerClient client, ActiveMQXid xid) throws XAException;
202    
203        /**
204         * Rollback an XA transaction.
205         *
206         * @param client
207         * @param xid
208         * @throws XAException
209         */
210        public void rollbackTransaction(BrokerClient client, ActiveMQXid xid) throws XAException;
211    
212        /**
213         * Commit an XA transaction.
214         *
215         * @param client
216         * @param xid
217         * @param onePhase
218         * @throws XAException
219         */
220        public void commitTransaction(BrokerClient client, ActiveMQXid xid, boolean onePhase) throws XAException;
221    
222        /**
223         * Send a non-transacted message to the Broker
224         *
225         * @param client
226         * @param message
227         * @throws JMSException
228         */
229    
230        public void sendMessage(BrokerClient client, ActiveMQMessage message) throws JMSException;
231    
232        /**
233         * Acknowledge reciept of a message
234         *
235         * @param client
236         * @param ack
237         * @throws JMSException
238         */
239        public void acknowledgeMessage(BrokerClient client, MessageAck ack) throws JMSException;
240    
241        /**
242         * Command to delete a durable topic subscription
243         *
244         * @param client
245         * @param ds
246         * @throws JMSException
247         */
248    
249        public void durableUnsubscribe(BrokerClient client, DurableUnsubscribe ds) throws JMSException;
250    
251        /**
252         * Gets the unique id of the resource manager used for managing xa
253         * transactions.
254         *
255         * @param client
256         * @return the id
257         */
258        public String getResourceManagerId(BrokerClient client);
259    
260        /**
261         * @return the BrokerContainer for this Connector
262         */
263        public BrokerContainer getBrokerContainer();
264    
265    
266    }