package com.limegroup.gnutella.rudp.messages;
import java.nio.ByteBuffer;
import org.limewire.rudp.messages.AckMessage;
import org.limewire.rudp.messages.DataMessage;
import org.limewire.rudp.messages.FinMessage;
import org.limewire.rudp.messages.KeepAliveMessage;
import org.limewire.rudp.messages.MessageFormatException;
import org.limewire.rudp.messages.RUDPMessage;
import org.limewire.rudp.messages.RUDPMessageFactory;
import org.limewire.rudp.messages.SynMessage;
import org.limewire.rudp.messages.RUDPMessage.OpCode;
import org.limewire.rudp.messages.SynMessage.Role;
public class StubRUDPMessageFactory implements RUDPMessageFactory {
private OpCode createNextMessage;
void setNextMessageToCreate(OpCode createNextMessage) {
this.createNextMessage = createNextMessage;
}
public AckMessage createAckMessage(byte connectionID, long sequenceNumber,
long windowStart, int windowSpace) {
return new StubAckMessage();
}
public DataMessage createDataMessage(byte connectionID,
long sequenceNumber, ByteBuffer chunk) {
return new StubDataMessage();
}
public FinMessage createFinMessage(byte connectionID, long sequenceNumber,
byte reasonCode) {
return new StubFinMessage();
}
public KeepAliveMessage createKeepAliveMessage(byte connectionID,
long windowStart, int windowSpace) {
return new StubKeepAliveMessage();
}
public RUDPMessage createMessage(ByteBuffer... data)
throws MessageFormatException {
if(createNextMessage == null)
return new StubRUDPMessage();
switch(createNextMessage) {
case OP_ACK: return new StubAckMessage();
case OP_DATA: return new StubDataMessage();
case OP_FIN: return new StubFinMessage();
case OP_KEEPALIVE: return new StubKeepAliveMessage();
case OP_SYN: return new StubSynMessage();
}
// never hit.
return null;
}
@Override
public SynMessage createSynMessage(byte connectionID, Role role) {
return new StubSynMessage();
}
@Override
public SynMessage createSynMessage(byte connectionID, byte theirConnectionID, Role role) {
return new StubSynMessage();
}
}