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.io.impl;
020    import java.io.DataInput;
021    import java.io.IOException;
022    
023    import org.activemq.message.Packet;
024    
025    /**
026     * Allows instances implementing Packet to read from a DataOutputStream
027     */
028    
029    public interface PacketReader {
030    
031        /**
032         * Return the type of Packet
033         * 
034         * @return integer representation of the type of Packet
035         */
036    
037        public int getPacketType();
038    
039        /**
040         * @param packetType
041         * @return true if this PacketReader can a Packet of this type
042         */
043        public boolean canRead(int packetType);
044    
045        /**
046         * @return a new Packet instance
047         */
048    
049        public Packet createPacket();
050    
051        /**
052         * build a Packet instance from the data input stream
053         *
054         * @param packet A Packet object
055         * @param dataIn the data input stream to build the packet from
056         * @throws IOException
057         */
058    
059        public void buildPacket(Packet packet, DataInput dataIn) throws IOException;
060    
061        /**
062         * Deserailizes a Packet from a byte array
063         *
064         * @param data
065         * @return the deserialized Packet
066         * @throws IOException
067         */
068    
069        public Packet readPacketFromByteArray(byte[] data) throws IOException;
070        
071        /**
072         * Set the wire format version
073         * @param version
074         */
075        public void setWireFormatVersion(int version);
076        
077        /**
078         * @return the wire format version
079         */
080        public int getWireFormatVersion();
081    
082    }