From fa21f71ab5eaf43b1dfface1cf020c6b33383fc7 Mon Sep 17 00:00:00 2001 From: Egge <80262989+Egge7@users.noreply.github.com> Date: Fri, 12 May 2023 23:20:03 +0200 Subject: [PATCH] added queue classes --- utils.ts | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/utils.ts b/utils.ts index c50c7e1..5763281 100644 --- a/utils.ts +++ b/utils.ts @@ -109,3 +109,79 @@ export function insertEventIntoAscendingList( return sortedArray } + +export class MessageNode { + private _value: string; + private _next: MessageNode|null; + + public get value(): string { + return this._value; + } + public set value(message: string) { + this._value = message; + } + public get next(): MessageNode|null { + return this._next; + } + public set next(node: MessageNode|null) { + this._next = node; + } + + constructor(message: string) { + this._value = message; + this._next = null; + } +} + +export class MessageQueue { + private _first: MessageNode|null; + private _last: MessageNode|null; + + public get first(): MessageNode|null { + return this._first; + } + public set first(messageNode: MessageNode|null) { + this._first = messageNode; + } + public get last(): MessageNode|null { + return this._last; + } + public set last(messageNode: MessageNode|null) { + this._last = messageNode; + } + private _size: number; + public get size(): number { + return this._size; + } + public set size(v: number) { + this._size = v; + } + + constructor() { + this._first = null; + this._last = null; + this._size = 0; + } + enqueue(message: string): boolean { + const newNode = new MessageNode(message); + if (this._size == 0 || !this._last) { + this._first = newNode; + this._last = newNode; + } else { + this._last.next = newNode; + this._last = newNode; + } + this._size++; + return true; + } + dequeue(): string|null { + if (this._size == 0 || !this._first) return null; + + let prev = this._first; + this._first = prev.next; + prev.next = null; + + this._size--; + return prev.value; + } +} \ No newline at end of file