package org.limewire.rudp.messages.impl;
import java.nio.ByteBuffer;
import org.limewire.rudp.messages.FinMessage;
import org.limewire.rudp.messages.MessageFormatException;
/** The fin message is used to signal the end of the connection.
*/
class FinMessageImpl extends RUDPMessageImpl implements FinMessage {
private byte _reasonCode;
/**
* Construct a new FinMessage with the specified settings.
*/
FinMessageImpl(byte connectionID, long sequenceNumber, byte reasonCode) {
super(connectionID, OpCode.OP_FIN, sequenceNumber, reasonCode);
_reasonCode = reasonCode;
}
/**
* Construct a new FinMessage from the network.
*/
FinMessageImpl(byte connectionId, long sequenceNumber, ByteBuffer data1, ByteBuffer data2)
throws MessageFormatException {
super(OpCode.OP_FIN, connectionId, sequenceNumber, data1, data2);
if (data1.remaining() < 1) {
throw new MessageFormatException("Message not long enough, message length " + data1.remaining() + " < 1");
}
_reasonCode = data1.get();
data1.rewind();
}
@Override
public String toString() {
return "FinMessage DestID:"+getConnectionID()+" reasonCode:"+_reasonCode;
}
}