Files
desktop/app/providers/ProtocolProvider/protocol/packets/packet.onlinestate.ts
rosetta 83f38dc63f 'init'
2026-01-30 05:01:05 +02:00

58 lines
1.5 KiB
TypeScript

import Packet from "../packet";
import Stream from "../stream";
export enum OnlineState {
ONLINE,
OFFLINE
}
export interface PublicKeyOnlineState {
publicKey: string;
state: OnlineState;
}
export class PacketOnlineState extends Packet {
private publicKeysState: PublicKeyOnlineState[] = [];
public getPacketId(): number {
return 0x05;
}
public _receive(stream: Stream): void {
const publicKeyCount = stream.readInt8();
for (let i = 0; i < publicKeyCount; i++) {
const publicKey = stream.readString();
const state = stream.readBoolean() ? OnlineState.ONLINE : OnlineState.OFFLINE;
this.publicKeysState.push({ publicKey, state });
}
}
public _send(): Stream {
const stream = new Stream();
stream.writeInt16(this.getPacketId());
stream.writeInt8(this.publicKeysState.length);
for (const publicKeyState of this.publicKeysState) {
stream.writeString(publicKeyState.publicKey);
stream.writeBoolean(publicKeyState.state === OnlineState.ONLINE);
}
return stream;
}
public addPublicKeyState(publicKey: string, state: OnlineState): void {
this.publicKeysState.push({ publicKey, state });
}
public getPublicKeysState(): PublicKeyOnlineState[] {
return this.publicKeysState;
}
public setPublicKeysState(publicKeysState: PublicKeyOnlineState[]): void {
this.publicKeysState = publicKeysState;
}
}