From c7e20c26cb10783765fc76d792ad3bf6400011e0 Mon Sep 17 00:00:00 2001 From: Thomas Nordquist Date: Sun, 7 Apr 2019 19:32:13 +0200 Subject: [PATCH] Extract ChangeBuffer to own file --- backend/src/Model/ChangeBuffer.ts | 38 ++++++++++++++++++++++++++ backend/src/Model/Tree.ts | 45 +++++-------------------------- 2 files changed, 45 insertions(+), 38 deletions(-) create mode 100644 backend/src/Model/ChangeBuffer.ts diff --git a/backend/src/Model/ChangeBuffer.ts b/backend/src/Model/ChangeBuffer.ts new file mode 100644 index 0000000..fa5076a --- /dev/null +++ b/backend/src/Model/ChangeBuffer.ts @@ -0,0 +1,38 @@ +import { MqttMessage } from '../../../events' + +export class ChangeBuffer { + private buffer: MqttMessage[] = [] + private size = 0 + private maxSize = 100_000_000 // ~100MB + public length = 0 + public estimatedMessageOverhead = 24 + + public push(val: MqttMessage) { + if (!this.isFull()) { + this.buffer.push(val) + this.size += this.estimatedMessageOverhead + (val.payload ? val.payload.length : 0) + this.length += 1 + } + } + + public getSize() { + return this.size + } + + public isFull() { + return this.size >= this.maxSize + } + + public fillState() { + return this.size / this.maxSize + } + + public popAll(): MqttMessage[] { + const tmpBuffer = this.buffer + this.buffer = [] + this.size = 0 + this.length = 0 + + return tmpBuffer + } +} diff --git a/backend/src/Model/Tree.ts b/backend/src/Model/Tree.ts index fe340d4..fbc0b4f 100644 --- a/backend/src/Model/Tree.ts +++ b/backend/src/Model/Tree.ts @@ -1,44 +1,13 @@ +import { ChangeBuffer } from './ChangeBuffer' +import { + EventBusInterface, + EventDispatcher, + makeConnectionMessageEvent, + MqttMessage +} from '../../../events' import { TreeNode } from './' -import { EventBusInterface, makeConnectionMessageEvent, MqttMessage, EventDispatcher } from '../../../events' import { TreeNodeFactory } from './TreeNodeFactory' -class ChangeBuffer { - private buffer: MqttMessage[] = [] - private size = 0 - private maxSize = 100_000_000 // ~100MB - public length = 0 - public estimatedMessageOverhead = 24 - - public push(val: MqttMessage) { - if (!this.isFull()) { - this.buffer.push(val) - this.size += this.estimatedMessageOverhead + (val.payload ? val.payload.length : 0) - this.length += 1 - } - } - - public getSize() { - return this.size - } - - public isFull() { - return this.size >= this.maxSize - } - - public fillState() { - return this.size / this.maxSize - } - - public popAll(): MqttMessage[] { - const tmpBuffer = this.buffer - this.buffer = [] - this.size = 0 - this.length = 0 - - return tmpBuffer - } -} - export class Tree extends TreeNode { public connectionId?: string public updateSource?: EventBusInterface