001    /*
002     * Copyright 2009 Red Hat, Inc.
003     * Red Hat licenses this file to you under the Apache License, version
004     * 2.0 (the "License"); you may not use this file except in compliance
005     * with the License.  You may obtain a copy of the License at
006     *    http://www.apache.org/licenses/LICENSE-2.0
007     * Unless required by applicable law or agreed to in writing, software
008     * distributed under the License is distributed on an "AS IS" BASIS,
009     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
010     * implied.  See the License for the specific language governing
011     * permissions and limitations under the License.
012     */
013    
014    package org.hornetq.api.jms.management;
015    
016    import org.hornetq.api.core.DiscoveryGroupConfiguration;
017    import org.hornetq.api.core.TransportConfiguration;
018    import org.hornetq.api.core.client.ClientSessionFactory;
019    import org.hornetq.api.core.management.Operation;
020    import org.hornetq.api.core.management.Parameter;
021    
022    /**
023     * A ConnectionFactoryControl is used to manage a JMS ConnectionFactory.
024     * <br>
025     * HornetQ JMS ConnectionFactory uses an underlying ClientSessionFactory to connect to HornetQ servers.
026     * Please refer to the ClientSessionFactory for a detailed description.
027     * 
028     * @author <a href="mailto:jmesnil@redhat.com">Jeff Mesnil</a>
029     * @author <a href="mailto:fox@redhat.com">Tim Fox</a>
030     * 
031     * @see ClientSessionFactory
032     */
033    public interface ConnectionFactoryControl
034    {
035       /**
036        * Returns the configuration name of this connection factory.
037        */
038       String getName();
039    
040       /**
041        * Returns the JNDI bindings associated  to this connection factory.
042        */
043       String[] getJNDIBindings();
044    
045       /**
046        * does ths cf support HA
047        * @return true if it supports HA
048        */
049       boolean isHA();
050    
051       /**
052       * return the type of factory
053        * @return 0 = jms cf, 1 = queue cf, 2 = topic cf, 3 = xa cf, 4 = xa queue cf, 5 = xa topic cf
054       */
055       int getFactoryType();
056    
057       /**
058        * Returns the Client ID of this connection factory (or {@code null} if it is not set.
059        */
060       String getClientID();
061    
062       /**
063       * Sets the Client ID for this connection factory.
064       */
065       void setClientID(String clientID);
066       
067       boolean isCompressLargeMessages();
068       
069       void setCompressLargeMessages(boolean compress);
070    
071       /**
072        * @see ClientSessionFactory#getClientFailureCheckPeriod()
073        */
074       long getClientFailureCheckPeriod();
075    
076       /**
077        * @see ClientSessionFactory#setClientFailureCheckPeriod
078        */
079       void setClientFailureCheckPeriod(long clientFailureCheckPeriod);
080    
081       /**
082        * @see ClientSessionFactory#getCallTimeout()
083        */
084       long getCallTimeout();
085    
086       /**
087        * @see ClientSessionFactory#setCallTimeout(long)
088        */
089       void setCallTimeout(long callTimeout);
090    
091       /**
092        * Returns the batch size (in bytes) between acknowledgements when using DUPS_OK_ACKNOWLEDGE mode.
093        * 
094        * @see ClientSessionFactory#getAckBatchSize()
095        * @see javax.jms.Session#DUPS_OK_ACKNOWLEDGE
096        */
097       int getDupsOKBatchSize();
098    
099       /**
100        * @see ClientSessionFactory#setAckBatchSize(int)
101        */
102       void setDupsOKBatchSize(int dupsOKBatchSize);
103    
104       /**
105        * @see ClientSessionFactory#getConsumerMaxRate()
106        */
107       int getConsumerMaxRate();
108    
109       /**
110        * @see ClientSessionFactory#setConsumerMaxRate(int)
111        */
112       void setConsumerMaxRate(int consumerMaxRate);
113    
114       /**
115        * @see ClientSessionFactory#getConsumerWindowSize()
116        */
117       int getConsumerWindowSize();
118    
119       /**
120        * @see ClientSessionFactory#setConfirmationWindowSize(int)
121        */
122       void setConsumerWindowSize(int consumerWindowSize);
123    
124       /**
125        * @see ClientSessionFactory#getProducerMaxRate()
126        */
127       int getProducerMaxRate();
128    
129       /**
130        * @see ClientSessionFactory#setProducerMaxRate(int)
131        */
132       void setProducerMaxRate(int producerMaxRate);
133    
134       /**
135        * @see ClientSessionFactory#getConfirmationWindowSize()
136        */
137       int getConfirmationWindowSize();
138    
139        /**
140        * @see ClientSessionFactory#setConfirmationWindowSize(int)
141        */
142       void setConfirmationWindowSize(int confirmationWindowSize);
143    
144       /**
145        * @see ClientSessionFactory#isBlockOnAcknowledge()
146        */
147       boolean isBlockOnAcknowledge();
148    
149        /**
150        * @see ClientSessionFactory#setBlockOnAcknowledge(boolean)
151        */
152       void setBlockOnAcknowledge(boolean blockOnAcknowledge);
153    
154       /**
155        * @see ClientSessionFactory#isBlockOnDurableSend()
156        */
157       boolean isBlockOnDurableSend();
158    
159        /**
160        * @see ClientSessionFactory#setBlockOnDurableSend(boolean)
161        */
162       void setBlockOnDurableSend(boolean blockOnDurableSend);
163    
164       /**
165        * @see ClientSessionFactory#isBlockOnNonDurableSend()
166        */
167       boolean isBlockOnNonDurableSend();
168    
169        /**
170        * @see ClientSessionFactory#setBlockOnNonDurableSend(boolean)
171        */
172       void setBlockOnNonDurableSend(boolean blockOnNonDurableSend);
173    
174       /**
175        * @see ClientSessionFactory#isPreAcknowledge()
176        */
177       boolean isPreAcknowledge();
178    
179        /**
180        * @see ClientSessionFactory#setPreAcknowledge(boolean)
181        */
182       void setPreAcknowledge(boolean preAcknowledge);
183    
184    
185       /**
186        * @see ClientSessionFactory#getConnectionTTL()
187        */
188       long getConnectionTTL();
189    
190        /**
191        * @see ClientSessionFactory#setConnectionTTL(long)
192        */
193       void setConnectionTTL(long connectionTTL);
194    
195       /**
196        * Returns the batch size (in bytes) between acknowledgements when using a transacted session.
197        * 
198        * @see ClientSessionFactory#getAckBatchSize()
199        */
200       int getTransactionBatchSize();
201    
202        /**
203        * @see ClientSessionFactory#setAckBatchSize(int)
204        */
205       void setTransactionBatchSize(int transactionBatchSize);
206    
207       /**
208        * @see ClientSessionFactory#getMinLargeMessageSize()
209        */
210       int getMinLargeMessageSize();
211    
212        /**
213        * @see ClientSessionFactory#setMinLargeMessageSize(int)
214        */
215       void setMinLargeMessageSize(int minLargeMessageSize);
216    
217       /**
218        * @see ClientSessionFactory#isAutoGroup()
219        */
220       boolean isAutoGroup();
221    
222        /**
223        * @see ClientSessionFactory#setAutoGroup(boolean)
224        */
225       void setAutoGroup(boolean autoGroup);
226    
227       /**
228        * @see ClientSessionFactory#getRetryInterval()
229        */
230       long getRetryInterval();
231    
232        /**
233        * @see ClientSessionFactory#setRetryInterval(long)
234        */
235       void setRetryInterval(long retryInterval);
236    
237       /**
238        * @see ClientSessionFactory#getRetryIntervalMultiplier()
239        */
240       double getRetryIntervalMultiplier();
241    
242        /**
243        * @see ClientSessionFactory#setRetryIntervalMultiplier(double)
244        */
245       void setRetryIntervalMultiplier(double retryIntervalMultiplier);
246    
247       /**
248        * @see ClientSessionFactory#getReconnectAttempts()
249        */
250       int getReconnectAttempts();
251    
252        /**
253        * @see ClientSessionFactory#setReconnectAttempts(int)
254        */
255       void setReconnectAttempts(int reconnectAttempts);
256       
257       /**
258        * @see ClientSessionFactory#isFailoverOnInitialConnection()
259        */
260       boolean isFailoverOnInitialConnection();
261    
262        /**
263        * @see ClientSessionFactory#setFailoverOnInitialConnection(boolean)
264        */
265       void setFailoverOnInitialConnection(boolean failoverOnInitialConnection);
266    
267    
268        /**
269        * @see org.hornetq.api.core.client.ClientSessionFactory#getProducerWindowSize()
270        */
271       int getProducerWindowSize();
272    
273        /**
274        * @see ClientSessionFactory#setProducerWindowSize(int)
275        */
276       void setProducerWindowSize(int producerWindowSize);
277    
278        /**
279        * @see ClientSessionFactory#isCacheLargeMessagesClient()
280        */
281       boolean isCacheLargeMessagesClient();
282    
283        /**
284        * @see ClientSessionFactory#setCacheLargeMessagesClient(boolean)
285        */
286       void setCacheLargeMessagesClient(boolean cacheLargeMessagesClient);
287    
288        /**
289        * @see ClientSessionFactory#getMaxRetryInterval()
290        */
291       long getMaxRetryInterval();
292    
293        /**
294        * @see ClientSessionFactory#setMaxRetryInterval(long)
295        */
296       void setMaxRetryInterval(long retryInterval);
297    
298        /**
299        * @see ClientSessionFactory#getScheduledThreadPoolMaxSize()
300        */
301       int getScheduledThreadPoolMaxSize();
302    
303        /**
304        * @see ClientSessionFactory#setScheduledThreadPoolMaxSize(int)
305        */
306       void setScheduledThreadPoolMaxSize(int scheduledThreadPoolMaxSize);
307    
308        /**
309        * @see ClientSessionFactory#getThreadPoolMaxSize()
310        */
311       int getThreadPoolMaxSize();
312    
313        /**
314        * @see ClientSessionFactory#setThreadPoolMaxSize(int)
315        */
316       void setThreadPoolMaxSize(int threadPoolMaxSize);
317    
318        /**
319        * @see ClientSessionFactory#getGroupID()
320        */
321       String getGroupID();
322    
323        /**
324        * @see ClientSessionFactory#setGroupID(String)
325        */
326       void setGroupID(String groupID);
327    
328        /**
329        * @see ClientSessionFactory#getInitialMessagePacketSize()
330        */
331       int getInitialMessagePacketSize();
332    
333        /**
334        * @see ClientSessionFactory#isUseGlobalPools()
335        */
336       boolean isUseGlobalPools();
337    
338        /**
339        * @see ClientSessionFactory#setUseGlobalPools(boolean)
340        */
341       void setUseGlobalPools(boolean useGlobalPools);
342    
343        /**
344        * @see ClientSessionFactory#getConnectionLoadBalancingPolicyClassName()
345        */
346       String getConnectionLoadBalancingPolicyClassName();
347    
348        /**
349        * @see ClientSessionFactory#setConnectionLoadBalancingPolicyClassName(String)
350        */
351       void setConnectionLoadBalancingPolicyClassName(String connectionLoadBalancingPolicyClassName);
352    
353        /**
354        * @see ClientSessionFactory#getStaticConnectors()
355        */
356       TransportConfiguration[] getStaticConnectors();
357    
358       /**
359        * get the discovery group configuration
360        */
361       DiscoveryGroupConfiguration getDiscoveryGroupConfiguration();
362    
363       /**
364        * Add the JNDI binding to this destination
365        */
366       @Operation(desc = "Adds the factory to another JNDI binding")
367       void addJNDI(@Parameter(name = "jndiBinding", desc = "the name of the binding for JNDI") String jndi) throws Exception;
368    }