package im.rosetta.packet; import im.rosetta.packet.runtime.NetworkGroupStatus; import io.orprotocol.Stream; import io.orprotocol.packet.Packet; /** * Вызывается клиентом для вступления в группу. * Сервер модифицирует этот пакет, устанавливая статус группы, и отправляет его обратно * клиенту */ public class Packet20GroupJoin extends Packet { private String groupId; private NetworkGroupStatus status; /** * Строка группы, которая содержит информацию о группе, такую как ее название, описание и ключ * Строка зашифрована обратимым шифрованием, где ключом выступает - реальный приватный ключ * входящего в группу клиента. Нужно это для будущей синхронзации, так как клиенту на его другом * устройстве нужно получить ключ группы и ее информацию. Сервер расшифровать эту строку не может. Эту * строку может расшифровать только клиент, так как она зашифрована его приватным ключом */ private String groupString; @Override public void read(Stream stream) { this.groupId = stream.readString(); this.status = NetworkGroupStatus.fromCode(stream.readInt8()); this.groupString = stream.readString(); } @Override public Stream write() { Stream stream = new Stream(); stream.writeInt16(this.packetId); stream.writeString(this.groupId); stream.writeInt8(this.status.getCode()); stream.writeString(this.groupString); return stream; } /** * Получить id группы * @return id группы */ public String getGroupId() { return groupId; } /** * Установить id группы * @param groupId id группы */ public void setGroupId(String groupId) { this.groupId = groupId; } /** * Получить статус группы * @return статус группы */ public NetworkGroupStatus getStatus() { return status; } /** * Установить статус группы * @param status статус группы */ public void setStatus(NetworkGroupStatus status) { this.status = status; } /** * Получить строку группы, которая содержит информацию о группе, такую как ее название, описание и ключ * @return строка группы */ public String getGroupString() { return groupString; } /** * Установить строку группы, которая содержит информацию о группе, такую как ее название, описание и ключ * @param groupString строка группы */ public void setGroupString(String groupString) { this.groupString = groupString; } }