package net.timewalker.ffmq3.transport.packet.query;
import java.util.ArrayList;
import java.util.List;
import net.timewalker.ffmq3.common.message.AbstractMessage;
import net.timewalker.ffmq3.common.message.MessageSerializer;
import net.timewalker.ffmq3.transport.packet.PacketType;
import net.timewalker.ffmq3.utils.RawDataBuffer;
/**
* MultiplePutQuery
*/
public final class MultiplePutQuery extends AbstractSessionQuery
{
private List messages;
/* (non-Javadoc)
* @see net.timewalker.ffmq3.network.packet.AbstractPacket#getType()
*/
public byte getType()
{
return PacketType.Q_MULTIPLE_PUT;
}
/* (non-Javadoc)
* @see net.timewalker.ffmq3.network.packet.AbstractPacket#serializeTo(net.timewalker.ffmq3.utils.RawDataOutputStream)
*/
protected void serializeTo(RawDataBuffer out)
{
super.serializeTo(out);
if (messages != null)
{
int len = messages.size();
out.writeInt(len);
for (int i = 0; i < len; i++)
MessageSerializer.serializeTo((AbstractMessage)messages.get(i), out);
}
else
out.writeInt(0);
}
/* (non-Javadoc)
* @see net.timewalker.ffmq3.network.packet.AbstractPacket#unserializeFrom(net.timewalker.ffmq3.utils.RawDataInputStream)
*/
protected void unserializeFrom(RawDataBuffer in)
{
super.unserializeFrom(in);
int msgCount = in.readInt();
for (int i = 0; i < msgCount; i++)
{
AbstractMessage message = MessageSerializer.unserializeFrom(in, true);
addMessage(message);
}
}
/**
* @param message The message to set.
*/
public void addMessage(AbstractMessage message)
{
if (messages == null)
messages = new ArrayList();
messages.add(message);
}
public List getMessages()
{
return messages;
}
/**
* @param messages the messages to set
*/
public void setMessages(List messages)
{
this.messages = messages;
}
/*
* (non-Javadoc)
* @see java.lang.Object#toString()
*/
public String toString()
{
StringBuffer sb = new StringBuffer();
sb.append(super.toString());
sb.append(" messages=");
sb.append(messages != null ? messages.size() : 0);
return sb.toString();
}
}