implement message view render queue

This commit is contained in:
riqo 2021-02-16 17:00:24 -06:00
commit 86a1460ad2
11 changed files with 160 additions and 83 deletions

View file

@ -20,13 +20,6 @@ export const useIpc = (endpoint: string) => {
error.value = e;
throw e;
}
// return window.ipcRenderer.invoke(endpoint, payload).then(res => {
// data.value = res;
// }).catch(e => {
// error.value = e;
// throw e;
// })
}
const post = (payload: any) => {

78
src/modules/queue.ts Normal file
View file

@ -0,0 +1,78 @@
export interface DataNode<T> {
data: T;
next: DataNode<T> | null;
}
export interface QueueI<T> {
enqueue(data: T): void;
dequeue(): T | null;
peek(): T | null;
size(): number;
}
export class Queue<T> implements QueueI<T> {
private _size: number;
private head: DataNode<T> | null;
private tail: DataNode<T> | null;
constructor() {
this._size = 0;
this.head = this.tail = null;
}
enqueue(data: T) {
const node: DataNode<T> = {
data,
next: null
}
if (this.head === null) {
this.head = this.tail = node;
} else {
if (this.tail) {
this.tail.next = node;
this.tail = this.tail.next;
}
}
++this._size;
}
dequeue(): T | null {
let item: T | null = null;
if (this._size === 0) {
return null;
}
if (this.head) {
item = this.head.data;
this.head = this.head.next;
--this._size;
if (!this._size) {
this.tail = null;
}
}
return item;
}
peek(): T | null {
let item: T | null = null;
if (this._size === 0) {
return null;
}
if (this.head) {
item = this.head.data;
}
return item;
}
size(): number {
return this._size;
}
}