mirror of
https://github.com/nbd-wtf/nostr-tools.git
synced 2025-12-08 16:28:49 +00:00
added queue classes
This commit is contained in:
76
utils.ts
76
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user