package org.limewire.rudp.messages;
import java.nio.ByteBuffer;
import org.limewire.rudp.messages.SynMessage.Role;
/**
* Creates every kind of <code>RUDPMessage</code>.
*/
public interface RUDPMessageFactory {
/** Deserializes a message as read from the network. */
public RUDPMessage createMessage(ByteBuffer... data) throws MessageFormatException;
/** Constructs a new AckMessage. */
public AckMessage createAckMessage(byte connectionID, long sequenceNumber, long windowStart, int windowSpace);
/** Creates a new DataMessage. */
public DataMessage createDataMessage(byte connectionID, long sequenceNumber, ByteBuffer chunk);
/** Creates a new FinMessage */
public FinMessage createFinMessage(byte connectionID, long sequenceNumber, byte reasonCode);
/** Creates a new KeepAliveMessage. */
public KeepAliveMessage createKeepAliveMessage(byte connectionID, long windowStart, int windowSpace);
/** Creates a new SynMessage with just their connection id. */
public SynMessage createSynMessage(byte connectionID, Role role);
/** Creates a new SynMessage with their & our connection id. */
public SynMessage createSynMessage(byte connectionID, byte theirConnectionID, Role role);
}