001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package org.jboss.mq.il;
023:
024: import javax.jms.Destination;
025: import javax.jms.JMSException;
026: import javax.jms.Queue;
027: import javax.jms.TemporaryQueue;
028: import javax.jms.TemporaryTopic;
029: import javax.jms.Topic;
030:
031: import org.jboss.mq.AcknowledgementRequest;
032: import org.jboss.mq.ConnectionToken;
033: import org.jboss.mq.DurableSubscriptionID;
034: import org.jboss.mq.SpyDestination;
035: import org.jboss.mq.SpyMessage;
036: import org.jboss.mq.SpyTopic;
037: import org.jboss.mq.Subscription;
038: import org.jboss.mq.TransactionRequest;
039:
040: /**
041: * Defines the methods that can be called by a client on the server.
042: *
043: * @author <a href="Cojonudo14@hotmail.com">Hiram Chirino</a>
044: * @author <a href="Norbert.Lataille@m4x.org">Norbert Lataille</a>
045: * @author <a href="pra@tim.se">Peter Antman</a>
046: * @version $Revision: 57198 $
047: * @created August 16, 2001
048: */
049: public interface Invoker {
050: /**
051: * Get the thread group of the server.
052: */
053: public ThreadGroup getThreadGroup();
054:
055: /**
056: * Gets a clientID from server.
057: *
058: * @return The ID value
059: * @exception JMSException Description of Exception
060: */
061: public String getID() throws JMSException;
062:
063: /**
064: * Get a temporary topic.
065: *
066: * @param dc Description of Parameter
067: * @return The TemporaryTopic value
068: * @exception JMSException Description of Exception
069: */
070: public TemporaryTopic getTemporaryTopic(ConnectionToken dc)
071: throws JMSException;
072:
073: /**
074: * Get a temporary queue
075: *
076: * @param dc Description of Parameter
077: * @return The TemporaryQueue value
078: * @exception JMSException Description of Exception
079: */
080: public TemporaryQueue getTemporaryQueue(ConnectionToken dc)
081: throws JMSException;
082:
083: /**
084: * Close connection.
085: *
086: * @param dc Description of Parameter
087: * @exception JMSException Description of Exception
088: */
089: public void connectionClosing(ConnectionToken dc)
090: throws JMSException;
091:
092: /**
093: * Check id, must not be taken.
094: *
095: * @param ID Description of Parameter
096: * @exception JMSException Description of Exception
097: */
098: public void checkID(String ID) throws JMSException;
099:
100: /**
101: * Add the message to the destination.
102: *
103: * @param dc The feature to be added to the Message attribute
104: * @param message The feature to be added to the Message attribute
105: * @exception JMSException Description of Exception
106: */
107: public void addMessage(ConnectionToken dc, SpyMessage message)
108: throws JMSException;
109:
110: /**
111: * Create a queue.
112: *
113: * The destination name must be the name of an already existing
114: * destination. This method should only be used to skip looking
115: * up a destination through JNDI, not to actually create a new destination.
116: *
117: * @param dc Description of Parameter
118: * @param dest Description of Parameter
119: * @return Description of the Returned Value
120: * @exception JMSException Description of Exception
121: */
122: public Queue createQueue(ConnectionToken dc, String dest)
123: throws JMSException;
124:
125: /**
126: * Create a topic.
127: *
128: * The destination name must be the name of an already existing
129: * destination. This method should only be used to skip looking
130: * up a destination through JNDI, not to actually create a new destination.
131: *
132: * @param dc Description of Parameter
133: * @param dest Description of Parameter
134: * @return Description of the Returned Value
135: * @exception JMSException Description of Exception
136: */
137: public Topic createTopic(ConnectionToken dc, String dest)
138: throws JMSException;
139:
140: /**
141: * #Description of the Method
142: *
143: * @param dc Description of Parameter
144: * @param dest Description of Parameter
145: * @exception JMSException Description of Exception
146: */
147: public void deleteTemporaryDestination(ConnectionToken dc,
148: SpyDestination dest) throws JMSException;
149:
150: /**
151: * #Description of the Method
152: *
153: * @param dc Description of Parameter
154: * @param t Description of Parameter
155: * @exception JMSException Description of Exception
156: */
157: public void transact(ConnectionToken dc, TransactionRequest t)
158: throws JMSException;
159:
160: /**
161: * #Description of the Method
162: *
163: * @param dc Description of Parameter
164: * @param item Description of Parameter
165: * @exception JMSException Description of Exception
166: */
167: public void acknowledge(ConnectionToken dc,
168: AcknowledgementRequest item) throws JMSException;
169:
170: /**
171: * #Description of the Method
172: *
173: * @param dc Description of Parameter
174: * @param dest Description of Parameter
175: * @param selector Description of Parameter
176: * @return Description of the Returned Value
177: * @exception JMSException Description of Exception
178: */
179: public SpyMessage[] browse(ConnectionToken dc, Destination dest,
180: String selector) throws JMSException;
181:
182: /**
183: * #Description of the Method
184: *
185: * @param dc Description of Parameter
186: * @param subscriberId Description of Parameter
187: * @param wait Description of Parameter
188: * @return Description of the Returned Value
189: * @exception JMSException Description of Exception
190: */
191: public SpyMessage receive(ConnectionToken dc, int subscriberId,
192: long wait) throws JMSException;
193:
194: /**
195: * Sets the Enabled attribute of the ServerIL object
196: *
197: * @param dc The new Enabled value
198: * @param enabled The new Enabled value
199: * @exception JMSException Description of Exception
200: */
201: public void setEnabled(ConnectionToken dc, boolean enabled)
202: throws JMSException;
203:
204: /**
205: * Close the server side message consumer. Client is no longer
206: * available to receive messages.
207: *
208: * @param dc Description of Parameter
209: * @param subscriptionId Description of Parameter
210: * @exception JMSException Description of Exception
211: */
212: public void unsubscribe(ConnectionToken dc, int subscriptionId)
213: throws JMSException;
214:
215: /**
216: * Unsubscribe from the durable subscription.
217: *
218: * @param id Description of Parameter
219: * @exception JMSException Description of Exception
220: */
221: public void destroySubscription(ConnectionToken dc,
222: DurableSubscriptionID id) throws JMSException;
223:
224: /**
225: * Check user for autentication.
226: *
227: * @param userName Description of Parameter
228: * @param password Description of Parameter
229: * @return a preconfigured clientId.
230: * @exception JMSException if user was not allowed to login
231: */
232: public String checkUser(String userName, String password)
233: throws JMSException;
234:
235: /**
236: * Check user for autentication.
237: *
238: * @param userName Description of Parameter
239: * @param password Description of Parameter
240: * @return a sessionId.
241: * @exception JMSException if user was not allowed to login
242: */
243: public String authenticate(String userName, String password)
244: throws JMSException;
245:
246: /**
247: * @param dc org.jboss.mq.ConnectionToken
248: * @param s org.jboss.mq.Subscription
249: * @exception JMSException The exception description.
250: */
251: void subscribe(org.jboss.mq.ConnectionToken dc,
252: org.jboss.mq.Subscription s) throws JMSException;
253:
254: /**
255: * Ping the server.
256: *
257: * @param dc Description of Parameter
258: * @param clientTime Description of Parameter
259: * @exception JMSException Description of Exception
260: */
261: public void ping(ConnectionToken dc, long clientTime)
262: throws JMSException;
263:
264: /**
265: * Get the topic the durable subscription is on.
266: * Primary for internal use in the server, and not for the IL's.
267: */
268: public SpyTopic getDurableTopic(DurableSubscriptionID sub)
269: throws JMSException;
270:
271: /**
272: * Get the subscription that match the id.
273: *
274: * @exception JMSException if it can not find the subscription.
275: */
276: public Subscription getSubscription(ConnectionToken dc,
277: int subscriberId) throws JMSException;
278:
279: }
|