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 19 20 package org.codehaus.activemq.message; 21 22 import java.io.DataOutput; 23 import java.io.IOException; 24 import org.codehaus.activemq.util.BitArray; 25 26 /*** 27 * Writes a ConsumerInfo object to a Stream 28 */ 29 30 public class MessageAckWriter extends AbstractPacketWriter { 31 32 33 /*** 34 * Return the type of Packet 35 * 36 * @return integer representation of the type of Packet 37 */ 38 39 public int getPacketType() { 40 return Packet.ACTIVEMQ_MSG_ACK; 41 } 42 43 /*** 44 * Write a Packet instance to data output stream 45 * 46 * @param packet the instance to be seralized 47 * @param dataOut the output stream 48 * @throws IOException thrown if an error occurs 49 */ 50 51 public void writePacket(Packet packet, DataOutput dataOut) throws IOException { 52 super.writePacket(packet, dataOut); 53 MessageAck ack = (MessageAck) packet; 54 super.writeUTF(ack.getConsumerId(), dataOut); 55 super.writeUTF(ack.getMessageID(), dataOut); 56 super.writeUTF(ack.getTransactionId(), dataOut); 57 58 BitArray ba = new BitArray(); 59 ba.set(MessageAck.MESSAGE_READ_INDEX, ack.isMessageRead()); 60 ba.set(MessageAck.XA_TRANSACTED_INDEX, ack.isXaTransacted()); 61 ba.set(MessageAck.PERSISTENT_INDEX,ack.isPersistent()); 62 ba.writeToStream(dataOut); 63 64 ActiveMQDestination.writeToStream((ActiveMQDestination) ack.getDestination(), dataOut); 65 } 66 67 68 }