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.message;
020    
021    /**
022     * Denotes an object that can be serialized/deserailized using a PacketReader or PacketWriter
023     */
024    
025    public interface Packet {
026    
027        /**
028         * Return the type of Packet
029         *
030         * @return integer representation of the type of Packet
031         */
032    
033        public int getPacketType();
034    
035        /**
036         * @return the unique id for this Packet
037         */
038    
039        public short getId();
040    
041        /**
042         * Set the unique id for this Packet
043         *
044         * @param newId
045         */
046    
047        public void setId(short newId);
048    
049        /**
050         * @return true if a Recipt is required
051         */
052        public boolean isReceiptRequired();
053    
054        /**
055         * @return true if this is a Receipt
056         */
057        public boolean isReceipt();
058    
059        /**
060         * Set if a Recipt if required on receiving this Packet
061         *
062         * @param value
063         */
064    
065        public void setReceiptRequired(boolean value);
066    
067        /**
068         * Retrieve if a JMS Message type or not
069         *
070         * @return true if it is a JMS Message
071         */
072        public boolean isJMSMessage();
073    
074        /**
075         * Get a hint about how much memory this Packet is consuming
076         *
077         * @return an aproximation of the current memory used by this instance
078         */
079        public int getMemoryUsage();
080    
081        /**
082         * Set a hint about how mujch memory this packet is consuming
083         *
084         * @param newMemoryUsage
085         */
086        public void setMemoryUsage(int newMemoryUsage);
087    
088        /**
089         * Increment reference count for bounded memory collections
090         *
091         * @return the incremented reference value
092         * @see org.activemq.io.util.MemoryBoundedQueue
093         */
094        public int incrementMemoryReferenceCount();
095    
096    
097        /**
098         * Decrement reference count for bounded memory collections
099         *
100         * @return the decremented reference value
101         * @see org.activemq.io.util.MemoryBoundedQueue
102         */
103        public int decrementMemoryReferenceCount();
104    
105        /**
106         * @return the current reference count for bounded memory collections
107         * @see org.activemq.io.util.MemoryBoundedQueue
108         */
109        public int getMemoryUsageReferenceCount();
110    
111        /**
112         * As the packet passes through the broker add the broker to the visited list
113         *
114         * @param brokerName the name of the broker
115         */
116        public void addBrokerVisited(String brokerName);
117        
118        /**
119         * clear list of brokers visited
120         */
121        public void clearBrokersVisited();
122    
123    
124        /**
125         * test to see if the named broker has already seen this packet
126         *
127         * @param brokerName the name of the broker
128         * @return true if the packet has visited the broker
129         */
130        public boolean hasVisited(String brokerName);
131    
132        /**
133         * @return Returns the brokersVisited.
134         */
135        public String getBrokersVisitedAsString();
136    
137        /**
138         * Unspecified Packet type
139         */
140        public static final int NOT_SET = 0;
141    
142        /**
143         * ActiveMQMessage object
144         */
145        public static final int ACTIVEMQ_MESSAGE = 6;
146    
147        /**
148         * ActiveMQTextMessage object
149         */
150    
151        public static final int ACTIVEMQ_TEXT_MESSAGE = 7;
152    
153        /**
154         * ActiveMQObjectMessage object
155         */
156    
157        public static final int ACTIVEMQ_OBJECT_MESSAGE = 8;
158    
159        /**
160         * ActiveMQBytesMessage
161         */
162    
163        public static final int ACTIVEMQ_BYTES_MESSAGE = 9;
164    
165        /**
166         * ActiveMQStreamMessage object
167         */
168    
169        public static final int ACTIVEMQ_STREAM_MESSAGE = 10;
170    
171        /**
172         * ActiveMQMapMessage object
173         */
174    
175        public static final int ACTIVEMQ_MAP_MESSAGE = 11;
176    
177        /**
178         * Message acknowledge
179         */
180        public static final int ACTIVEMQ_MSG_ACK = 15;
181    
182        /**
183         * Recipt message
184         */
185    
186        public static final int RECEIPT_INFO = 16;
187    
188        /**
189         * Consumer Infomation
190         */
191    
192        public static final int CONSUMER_INFO = 17;
193    
194        /**
195         * Producer Info
196         */
197    
198        public static final int PRODUCER_INFO = 18;
199    
200        /**
201         * Transaction info
202         */
203    
204        public static final int TRANSACTION_INFO = 19;
205    
206        /**
207         * XA Transaction info
208         */
209    
210        public static final int XA_TRANSACTION_INFO = 20;
211    
212        /**
213         * Broker infomation message
214         */
215    
216        public static final int ACTIVEMQ_BROKER_INFO = 21;
217    
218        /**
219         * Connection info message
220         */
221    
222        public static final int ACTIVEMQ_CONNECTION_INFO = 22;
223    
224    
225        /**
226         * Session Info message
227         */
228        public static final int SESSION_INFO = 23;
229    
230        /**
231         * Durable Unsubscribe message
232         */
233    
234        public static final int DURABLE_UNSUBSCRIBE = 24;
235    
236    
237        /**
238         * A receipt with an Object reponse.
239         */
240        public static final int RESPONSE_RECEIPT_INFO = 25;
241    
242    
243        /**
244         * A receipt with an Integer reponse.
245         */
246        public static final int INT_RESPONSE_RECEIPT_INFO = 26;
247    
248        /**
249         * Infomation about the Capacity for more Messages for either Connection/Broker
250         */
251        public static final int CAPACITY_INFO = 27;
252    
253        /**
254         * Request infomation  about the current capacity
255         */
256        public static final int CAPACITY_INFO_REQUEST = 28;
257        
258        /**
259         * Infomation about the wire format expected
260         */
261        public static final int WIRE_FORMAT_INFO = 29;
262    
263        /**
264         * Keep-alive message
265         */
266        public static final int KEEP_ALIVE = 30;
267        
268        /**
269         * A command to the Broker Admin
270         */
271        public static final int BROKER_ADMIN_COMMAND = 31;
272        
273        /**
274         * transmit cached values for the wire format
275         */
276        public static final int CACHED_VALUE_COMMAND = 32;
277    
278        /**
279         * transmit cached values for the wire format
280         */
281        public static final int CLEANUP_CONNECTION_INFO = 33;
282    }