Add counting some events

This commit is contained in:
Jonas Lochmann
2020-02-03 01:00:00 +01:00
parent 1f210b32c8
commit cdae013f5a
7 changed files with 192 additions and 31 deletions
+22
View File
@@ -0,0 +1,22 @@
/*
* server component for the TimeLimit App
* Copyright (C) 2019 - 2020 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export interface EventHandler {
countEvent (name: string): void
getCounters (): Promise<{[key: string]: number}>
resetCounters (): Promise<void>
}
+43
View File
@@ -0,0 +1,43 @@
/*
* server component for the TimeLimit App
* Copyright (C) 2019 - 2020 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { EventHandler } from './eventhandler'
export class InMemoryEventHandler implements EventHandler {
private counters = new Map<string, number>()
countEvent (name: string) {
this.counters.set(
name,
(this.counters.get(name) || 0) + 1
)
}
async getCounters () {
const result: {[key: string]: number} = {}
this.counters.forEach((value, key) => {
result[key] = value
})
return result
}
async resetCounters () {
this.counters.clear()
}
}