package pl.radical.open.gg.packet.in;
import pl.radical.open.gg.packet.AbstractGGIncomingPacket;
import pl.radical.open.gg.packet.GGIncomingPackage;
import pl.radical.open.gg.packet.IncomingPacket;
import pl.radical.open.gg.packet.dicts.GGMessageClass;
import pl.radical.open.gg.packet.handlers.GGRecvMsg80PacketHandler;
import pl.radical.open.gg.utils.GGUtils;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.collections.primitives.ArrayByteList;
import org.apache.commons.collections.primitives.ByteList;
/**
* @author <a href="mailto:klacia.85@gmail.com">Kamil Klatkowski</a>
* @author <a href="mailto:lukasz.rzanek@radical.com.pl>Łukasz Rżanek</a>
* @since 1.7.0
* @since 2010-03-18
*/
@IncomingPacket(
type = 0x002E,
label = "GG_RECV_MSG80",
handler = GGRecvMsg80PacketHandler.class
)
@Data
@EqualsAndHashCode(callSuper = false)
public final class GGRecvMsg80 extends AbstractGGIncomingPacket implements GGIncomingPackage, GGMessageClass {
private int sender = -1;
private int messageSeq = -1;
private long time = -1;
private int msgClass = -1;
private int offsetPlain = -1;
private int offsetAttributes = -1;
/** message in HTML format */
private final String htmlMessage = null;
/** message in plain text */
private String plainMessage = null;
/** messages's attributes */
private byte[] attributes = null;
public GGRecvMsg80(final byte[] data) {
sender = GGUtils.byteToInt(data);
messageSeq = GGUtils.byteToInt(data, 4);
time = GGUtils.secondsToMillis(GGUtils.byteToInt(data, 8));
msgClass = GGUtils.byteToInt(data, 12);
offsetPlain = GGUtils.byteToInt(data, 16);
offsetAttributes = GGUtils.byteToInt(data, 20);
if (getOffsetAttributes() == data.length) {
offsetAttributes = 0;
} else {
final ByteList byteList = new ArrayByteList(data.length - offsetAttributes);
for (int i = offsetAttributes; i < data.length; i++) {
byteList.add(data[i]);
}
attributes = byteList.toArray();
}
if (data.length > offsetPlain) {
plainMessage = GGUtils.byteToString(data, offsetPlain);
}
// FIXME no htmlMessage
}
}