61 lines
1.3 KiB
Java
61 lines
1.3 KiB
Java
package fr.pandacube.lib.net;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import com.google.common.annotations.Beta;
|
|
|
|
@Beta
|
|
public class PPacket {
|
|
public final String name;
|
|
/* package */ int id;
|
|
public final byte[] content;
|
|
|
|
/**
|
|
* Construct a new PPacket 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 PPacket(String n, ByteBuffer buff) {
|
|
this(n, Arrays.copyOf(buff.array(), buff.getPosition()));
|
|
}
|
|
|
|
public PPacket(String n, byte[] c) {
|
|
name = n;
|
|
content = c;
|
|
}
|
|
|
|
/* package */ PPacket(String n, int i, byte[] c) {
|
|
this(n, c);
|
|
id = i;
|
|
}
|
|
|
|
public ByteBuffer getContentAsBuffer() {
|
|
return new ByteBuffer(content);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static PPacket buildSingleStringContentPacket(String name, String content) {
|
|
return new PPacket(name, new ByteBuffer().putString(content));
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* package */ static PPacket buildLoginPacket(String password) {
|
|
return buildSingleStringContentPacket("login", password);
|
|
}
|
|
/* package */ static PPacket buildBadFormatPacket(String message) {
|
|
return buildSingleStringContentPacket("bad_format", message);
|
|
}
|
|
/* package */ static PPacket buildLoginBadPacket() {
|
|
return new PPacket("login_bad", new byte[0]);
|
|
}
|
|
}
|