67 lines
2.2 KiB
TypeScript
67 lines
2.2 KiB
TypeScript
import Packet from "../packet";
|
||
import Stream from "../stream";
|
||
|
||
export enum GroupStatus {
|
||
JOINED = 0,
|
||
INVALID = 1,
|
||
NOT_JOINED = 2,
|
||
BANNED = 3
|
||
}
|
||
|
||
export class PacketGroupJoin extends Packet {
|
||
|
||
private groupId: string = "";
|
||
private groupStatus: GroupStatus = GroupStatus.NOT_JOINED;
|
||
/**
|
||
* Строка группы, которая содержит информацию о группе, такую как ее название, описание и ключ
|
||
* Строка зашифрована обратимым шифрованием, где ключом выступает - реальный приватный ключ
|
||
* входящего в группу клиента. Нужно это для будущей синхронзации, так как клиенту на его другом
|
||
* устройстве нужно получить ключ группы и ее информацию. Сервер расшифровать эту строку не может. Эту
|
||
* строку может расшифровать только клиент, так как она зашифрована его приватным ключом
|
||
*/
|
||
private groupString: string = "";
|
||
|
||
public getPacketId(): number {
|
||
return 0x14;
|
||
}
|
||
|
||
public _receive(stream: Stream): void {
|
||
this.groupId = stream.readString();
|
||
this.groupStatus = stream.readInt8();
|
||
this.groupString = stream.readString();
|
||
}
|
||
|
||
public _send(): Promise<Stream> | Stream {
|
||
const stream = new Stream();
|
||
stream.writeInt16(this.getPacketId());
|
||
stream.writeString(this.groupId);
|
||
stream.writeInt8(this.groupStatus);
|
||
stream.writeString(this.groupString);
|
||
return stream;
|
||
}
|
||
|
||
public setGroupId(groupId: string) {
|
||
this.groupId = groupId;
|
||
}
|
||
|
||
public getGroupId(): string {
|
||
return this.groupId;
|
||
}
|
||
|
||
public setGroupStatus(groupStatus: GroupStatus) {
|
||
this.groupStatus = groupStatus;
|
||
}
|
||
|
||
public getGroupStatus(): GroupStatus {
|
||
return this.groupStatus;
|
||
}
|
||
|
||
public setGroupString(groupString: string) {
|
||
this.groupString = groupString;
|
||
}
|
||
|
||
public getGroupString(): string {
|
||
return this.groupString;
|
||
}
|
||
|
||
} |