peerjs-server/src/models/messageQueue.ts
Jonas Gloning 68f973afb4
fix: more accurate types
Closes #182
2023-01-09 21:08:12 +01:00

38 lines
789 B
TypeScript

import type {IMessage} from "./message";
export interface IMessageQueue {
getLastReadAt(): number;
addMessage(message: IMessage): void;
readMessage(): IMessage | undefined;
getMessages(): IMessage[];
}
export class MessageQueue implements IMessageQueue {
private lastReadAt: number = new Date().getTime();
private readonly messages: IMessage[] = [];
public getLastReadAt(): number {
return this.lastReadAt;
}
public addMessage(message: IMessage): void {
this.messages.push(message);
}
public readMessage(): IMessage | undefined {
if (this.messages.length > 0) {
this.lastReadAt = new Date().getTime();
return this.messages.shift();
}
return undefined;
}
public getMessages(): IMessage[] {
return this.messages;
}
}