KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > exolab > jms > messagemgr > ConsumerEndpoint


1 /**
2  * Redistribution and use of this software and associated documentation
3  * ("Software"), with or without modification, are permitted provided
4  * that the following conditions are met:
5  *
6  * 1. Redistributions of source code must retain copyright
7  * statements and notices. Redistributions must also contain a
8  * copy of this document.
9  *
10  * 2. Redistributions in binary form must reproduce the
11  * above copyright notice, this list of conditions and the
12  * following disclaimer in the documentation and/or other
13  * materials provided with the distribution.
14  *
15  * 3. The name "Exolab" must not be used to endorse or promote
16  * products derived from this Software without prior written
17  * permission of Exoffice Technologies. For written permission,
18  * please contact info@exolab.org.
19  *
20  * 4. Products derived from this Software may not be called "Exolab"
21  * nor may "Exolab" appear in their names without prior written
22  * permission of Exoffice Technologies. Exolab is a registered
23  * trademark of Exoffice Technologies.
24  *
25  * 5. Due credit should be given to the Exolab Project
26  * (http://www.exolab.org/).
27  *
28  * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS
29  * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
30  * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
31  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
32  * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
33  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
37  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
38  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
39  * OF THE POSSIBILITY OF SUCH DAMAGE.
40  *
41  * Copyright 2001-2005 (C) Exoffice Technologies Inc. All Rights Reserved.
42  */

43 package org.exolab.jms.messagemgr;
44
45 import javax.jms.MessageConsumer JavaDoc;
46 import javax.jms.QueueBrowser JavaDoc;
47 import javax.jms.JMSException JavaDoc;
48
49 import org.exolab.jms.client.JmsDestination;
50 import org.exolab.jms.selector.Selector;
51 import org.exolab.jms.server.ServerConnection;
52
53
54 /**
55  * <code>ConsumerEndpoint</code> represents the server-side view of of the
56  * {@link MessageConsumer} and {@link QueueBrowser} interfaces
57  *
58  * @author <a HREF="mailto:jima@comware.com.au">Jim Alateras</a>
59  * @author <a HREF="mailto:tma@netspace.net.au">Tim Anderson</a>
60  * @version $Revision: 1.2 $ $Date: 2005/03/18 03:58:39 $
61  */

62 public interface ConsumerEndpoint
63         extends DestinationCacheEventListener, Runnable JavaDoc {
64
65     /**
66      * Returns the identity of this consumer.
67      *
68      * @return the identity of this consumer
69      */

70     long getId();
71
72     /**
73      * Determines if this is a persistent or non-persistent consumer.
74      * <p/>
75      * If persistent, then the consumer is persistent accross subscriptions and
76      * server restarts, and {@link #getPersistentId} returns a non-null value
77      *
78      * @return <code>true</code> if this is a persistent consumer; otherwise
79      * <code>false</code>
80      */

81     boolean isPersistent();
82
83     /**
84      * Returns the persistent identifier for this consumer. This is the identity
85      * of the consumer which is persistent across subscriptions and server
86      * restarts.
87      *
88      * @return the persistent identifier for this consumer, or <code>null</code>
89      * if this is a transient consumer
90      */

91     String JavaDoc getPersistentId();
92
93     /**
94      * Returns the identity of the connection that owns this consumer.
95      *
96      * @return the identity of the connection
97      * @see ServerConnection#getConnectionId
98      */

99     long getConnectionId();
100
101     /**
102      * Return the destination that this consumer is accessing.
103      *
104      * @return the destination that this consumer is accessing
105      */

106     JmsDestination getDestination();
107
108     /**
109      * Returns the message selector.
110      *
111      * @return the message selector, or <code>null</code> if none was specified
112      * by the client
113      */

114     Selector getSelector();
115
116     /**
117      * Returns if locally produced messages are being inhibited.
118      *
119      * @return <code>true</code> if locally published messages are being
120      * inhibited.
121      */

122     boolean getNoLocal();
123
124     /**
125      * Stop/start message delivery.
126      *
127      * @param stop if <code>true</code> to stop message delivery, otherwise
128      * start it
129      */

130     void setStopped(boolean stop);
131
132     /**
133      * Return the next available message to the client.
134      * <p/>
135      * The <code>wait</code> parameter indicates how many milliseconds to wait
136      * for a message before returning. If <code>wait</code> is <code>0</code>
137      * then do not wait. If <code>wait</code> is <code>-1</code> then wait
138      * indefinitely for the next message.
139      *
140      * @param wait number of milliseconds to wait
141      * @return the next message or <code>null</code>
142      * @throws JMSException for any error
143      */

144     MessageHandle receive(long wait) throws JMSException JavaDoc;
145
146     /**
147      * Set the message listener for this consumer. If a message listener is set
148      * then messages will be scheduled to be sent to it when they are available.
149      *
150      * @param listener the message listener to add, or <code>null</code> to
151      * remove an existing listener.
152      */

153     void setMessageListener(ConsumerEndpointListener listener);
154
155     /**
156      * Returns the number of unsent messages in the cache.
157      *
158      * @return the number of unsent messages
159      */

160     int getMessageCount();
161
162     /**
163      * Close and release any resource allocated to this session.
164      */

165     void close();
166
167 }
168
Popular Tags