From 771ed30da09e12464169f6f59c447417262d66e0 Mon Sep 17 00:00:00 2001 From: Aya Morisawa Date: Tue, 14 Aug 2018 08:21:25 +0900 Subject: [PATCH] Use deque instead of linked list --- package.json | 2 ++ src/daemons/notes-stats.ts | 4 ++-- src/daemons/server-stats.ts | 4 ++-- src/misc/queue.ts | 33 --------------------------------- 4 files changed, 6 insertions(+), 37 deletions(-) delete mode 100644 src/misc/queue.ts diff --git a/package.json b/package.json index 9f49a572b..80c0bc53c 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "@types/dateformat": "1.0.1", "@types/debug": "0.0.30", "@types/deep-equal": "1.0.1", + "@types/double-ended-queue": "2.1.0", "@types/elasticsearch": "5.0.25", "@types/file-type": "5.2.1", "@types/gulp": "3.8.36", @@ -97,6 +98,7 @@ "deepcopy": "0.6.3", "diskusage": "0.2.4", "dompurify": "1.0.5", + "double-ended-queue": "2.1.0-0", "elasticsearch": "15.1.1", "element-ui": "2.4.6", "emojilib": "2.3.0", diff --git a/src/daemons/notes-stats.ts b/src/daemons/notes-stats.ts index 3bc0269dd..1de7a9852 100644 --- a/src/daemons/notes-stats.ts +++ b/src/daemons/notes-stats.ts @@ -1,11 +1,11 @@ import * as childProcess from 'child_process'; +import * as Deque from 'double-ended-queue'; import Xev from 'xev'; -import Queue from '../misc/queue'; const ev = new Xev(); export default function() { - const log = new Queue(); + const log = new Deque(); const p = childProcess.fork(__dirname + '/notes-stats-child.js'); diff --git a/src/daemons/server-stats.ts b/src/daemons/server-stats.ts index b435c12e5..31560935b 100644 --- a/src/daemons/server-stats.ts +++ b/src/daemons/server-stats.ts @@ -1,8 +1,8 @@ import * as os from 'os'; import * as sysUtils from 'systeminformation'; import * as diskusage from 'diskusage'; +import * as Deque from 'double-ended-queue'; import Xev from 'xev'; -import Queue from '../misc/queue'; const osUtils = require('os-utils'); const ev = new Xev(); @@ -13,7 +13,7 @@ const interval = 1000; * Report server stats regularly */ export default function() { - const log = new Queue(); + const log = new Deque(); ev.on('requestServerStatsLog', id => { ev.emit('serverStatsLog:' + id, log.toArray()); diff --git a/src/misc/queue.ts b/src/misc/queue.ts deleted file mode 100644 index 410878ba8..000000000 --- a/src/misc/queue.ts +++ /dev/null @@ -1,33 +0,0 @@ -type Node = { value: T, next: Node }; - -export default class Queue { - private top: Node = null; - private rear: Node = null; - public length: number = 0; - - public push(value: T): void { - const node: Node = { value, next: null }; - if (this.top === null) { - this.top = node; - this.rear = node; - } else { - this.rear.next = node; - this.rear = node; - } - this.length++; - } - - public pop(): void { - this.top = this.top.next; - if (this.top == null) this.rear = null; - this.length--; - } - - public toArray(): T[] { - const arr: T[] = Array(this.length); - for (let node = this.top, i = 0; node !== null; node = node.next, i++) { - arr[i] = node.value; - } - return arr; - } -}