48 lines
1.4 KiB
Java
48 lines
1.4 KiB
Java
package fr.pandacube.lib.net;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import com.google.common.annotations.Beta;
|
|
|
|
@Beta
|
|
public class PPacketAnswer extends PPacket {
|
|
/* package */ final int answer;
|
|
|
|
/**
|
|
* Construct a new PPacketAnswer based on the content of the provided buffer before his position.
|
|
* @param n the name of the packet.
|
|
* @param buff the buffer where the data comes from. Only the content before {@link ByteBuffer#getPosition()} is copied.
|
|
*/
|
|
public PPacketAnswer(PPacket answered, String n, ByteBuffer buff) {
|
|
this(answered, n, Arrays.copyOf(buff.array(), buff.getPosition()));
|
|
}
|
|
|
|
public PPacketAnswer(PPacket answered, String n, byte[] c) {
|
|
super(n, c);
|
|
answer = answered.id;
|
|
}
|
|
|
|
/* package */ PPacketAnswer(String n, int i, int a, byte[] c) {
|
|
super(n, i, c);
|
|
answer = a;
|
|
}
|
|
|
|
|
|
|
|
|
|
public static PPacketAnswer buildSingleStringContentPacketAnswer(PPacket answered, String name, String content) {
|
|
ByteBuffer pwBuff = new ByteBuffer().putString(content);
|
|
return new PPacketAnswer(answered, name, Arrays.copyOf(pwBuff.array(), pwBuff.getPosition()));
|
|
}
|
|
|
|
|
|
|
|
|
|
/* package */ static PPacketAnswer buildLoginOkPacket(PPacket loginPacket) {
|
|
return new PPacketAnswer(loginPacket, "login_ok", new byte[0]);
|
|
}
|
|
/* package */ static PPacketAnswer buildExceptionPacket(PPacket answered, String message) {
|
|
return buildSingleStringContentPacketAnswer(answered, "exception", message);
|
|
}
|
|
}
|