1 /***
2 *
3 * Copyright 2004 Protique Ltd
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 **/
18 package org.codehaus.activemq.message;
19
20 /***
21 * Describes a Message consumer
22 *
23 * @version $Revision: 1.9 $
24 */
25 public class ConsumerInfo extends AbstractPacket {
26 private ActiveMQDestination destination;
27 private String consumerId;
28 private String clientId;
29 private String sessionId;
30 private String consumerName;
31 private String selector;
32 private long startTime;
33 private boolean started;
34 private int consumerNo;
35 private boolean noLocal;
36 private boolean browser;
37 private int prefetchNumber = 100;
38 private transient String consumerKey;
39
40 /***
41 * @return Returns the consumerId.
42 */
43 public String getConsumerId() {
44 return consumerId;
45 }
46
47 /***
48 * @param consumerId The consumerId to set.
49 */
50 public void setConsumerId(String consumerId) {
51 this.consumerId = consumerId;
52 }
53
54 /***
55 * @return Returns the sessionId.
56 */
57 public String getSessionId() {
58 return sessionId;
59 }
60
61 /***
62 * @param sessionId The sessionId to set.
63 */
64 public void setSessionId(String sessionId) {
65 this.sessionId = sessionId;
66 }
67
68 /***
69 * Return the type of Packet
70 *
71 * @return integer representation of the type of Packet
72 */
73 public int getPacketType() {
74 return CONSUMER_INFO;
75 }
76
77 /***
78 * Test for equality
79 *
80 * @param obj object to test
81 * @return true if equivalent
82 */
83 public boolean equals(Object obj) {
84 boolean result = false;
85 if (obj != null && obj instanceof ConsumerInfo) {
86 ConsumerInfo that = (ConsumerInfo) obj;
87 result = this.consumerId.equals(that.consumerId);
88 }
89 return result;
90 }
91
92 /***
93 * @return hash code for instance
94 */
95 public int hashCode() {
96 return this.consumerId.hashCode();
97 }
98
99 /***
100 * @return a pretty print
101 */
102
103 public String toString() {
104 return super.toString() + " consumerId: " + consumerId + " clientId: " + clientId + " consumerName: " + consumerName + " destination: " + destination;
105 }
106
107 /***
108 * @return Returns the clientId.
109 */
110 public String getClientId() {
111 return this.clientId;
112 }
113
114 /***
115 * @param newClientId The clientId to set.
116 */
117 public void setClientId(String newClientId) {
118 this.clientId = newClientId;
119 }
120
121 /***
122 * @return Returns the destination.
123 */
124 public ActiveMQDestination getDestination() {
125 return this.destination;
126 }
127
128 /***
129 * @param newDestination The destination to set.
130 */
131 public void setDestination(ActiveMQDestination newDestination) {
132 this.destination = newDestination;
133 }
134
135 /***
136 * @return Returns the selector.
137 */
138 public String getSelector() {
139 return this.selector;
140 }
141
142 /***
143 * @param newSelector The selector to set.
144 */
145 public void setSelector(String newSelector) {
146 this.selector = newSelector;
147 }
148
149 /***
150 * @return Returns the started.
151 */
152 public boolean isStarted() {
153 return this.started;
154 }
155
156 /***
157 * @param flag to indicate if started
158 */
159 public void setStarted(boolean flag) {
160 this.started = flag;
161 }
162
163 /***
164 * @return Returns the startTime.
165 */
166 public long getStartTime() {
167 return this.startTime;
168 }
169
170 /***
171 * @param newStartTime The startTime to set.
172 */
173 public void setStartTime(long newStartTime) {
174 this.startTime = newStartTime;
175 }
176
177 /***
178 * @return Returns the consumerNo.
179 */
180 public int getConsumerNo() {
181 return this.consumerNo;
182 }
183
184 /***
185 * @param newConsumerNo The consumerNo to set.
186 */
187 public void setConsumerNo(int newConsumerNo) {
188 this.consumerNo = newConsumerNo;
189 }
190
191 /***
192 * @return Returns the consumer name.
193 */
194 public String getConsumerName() {
195 return this.consumerName;
196 }
197
198 /***
199 * @param newconsumerName The consumerName to set.
200 */
201 public void setConsumerName(String newconsumerName) {
202 this.consumerName = newconsumerName;
203 }
204
205 /***
206 * @return Returns true if the Consumer is a durable Topic subscriber
207 */
208 public boolean isDurableTopic() {
209 return this.destination.isTopic() && !this.destination.isTemporary() && this.consumerName != null
210 && this.consumerName.length() > 0;
211 }
212
213 /***
214 * @return Returns the noLocal.
215 */
216 public boolean isNoLocal() {
217 return noLocal;
218 }
219
220 /***
221 * @param noLocal The noLocal to set.
222 */
223 public void setNoLocal(boolean noLocal) {
224 this.noLocal = noLocal;
225 }
226
227 /***
228 * @return Returns the browser.
229 */
230 public boolean isBrowser() {
231 return browser;
232 }
233
234 /***
235 * @param browser The browser to set.
236 */
237 public void setBrowser(boolean browser) {
238 this.browser = browser;
239 }
240
241 /***
242 * @return Returns the prefetchNumber.
243 */
244 public int getPrefetchNumber() {
245 return prefetchNumber;
246 }
247
248 /***
249 * @param prefetchNumber The prefetchNumber to set.
250 */
251 public void setPrefetchNumber(int prefetchNumber) {
252 this.prefetchNumber = prefetchNumber;
253 }
254
255
256 /***
257 * Creates a primary key for the consumer info which uniquely
258 * describes the consumer using a combination of clientID and
259 * consumerName
260 *
261 * @return the consumerKey
262 */
263 public String getConsumerKey() {
264 if (consumerKey == null){
265 consumerKey = generateConsumerKey(clientId,consumerName);
266 }
267 return consumerKey;
268 }
269
270 /***
271 * Generate a primary key for a consumer from the clientId and consumerName
272 * @param clientId
273 * @param consumerName
274 * @return
275 */
276 public static String generateConsumerKey(String clientId, String consumerName){
277 return "[" + clientId + ":" + consumerName + "]";
278 }
279 }