package com.limegroup.gnutella.rudp.messages;
import java.io.IOException;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import org.limewire.rudp.messages.MessageFormatException;
import org.limewire.rudp.messages.RUDPMessageFactory;
import com.limegroup.gnutella.messages.BadPacketException;
import com.limegroup.gnutella.messages.Message;
import com.limegroup.gnutella.messages.Message.Network;
import com.limegroup.gnutella.messages.MessageFactory.MessageParser;
public class LimeRUDPMessageParser implements MessageParser {
/** The factory creating the messages. */
private RUDPMessageFactory factory;
public LimeRUDPMessageParser(RUDPMessageFactory factory) {
this.factory = factory;
}
public Message parse(byte[] header, byte[] payload,
Network network, byte softMax, SocketAddress addr) throws BadPacketException, IOException {
try {
return (Message)factory.createMessage(ByteBuffer.wrap(header), ByteBuffer.wrap(payload));
} catch(MessageFormatException mfe) {
throw new BadPacketException(mfe);
}
}
}