LRUSet for seenEvents
This commit is contained in:
parent
38093fdf3b
commit
7ac5bb6d41
@ -1,6 +1,7 @@
|
||||
import Dexie, { Table } from "dexie";
|
||||
import { TaggedNostrEvent, ReqFilter as Filter } from "@snort/system";
|
||||
import * as Comlink from "comlink";
|
||||
import LRUSet from "@/Cache/LRUSet";
|
||||
|
||||
type Tag = {
|
||||
id: string;
|
||||
@ -15,7 +16,7 @@ class IndexedDB extends Dexie {
|
||||
events!: Table<TaggedNostrEvent>;
|
||||
tags!: Table<Tag>;
|
||||
private saveQueue: SaveQueueEntry[] = [];
|
||||
private seenEvents = new Set<string>(); // LRU set maybe?
|
||||
private seenEvents = new LRUSet<string>(1000);
|
||||
private subscribedEventIds = new Set<string>();
|
||||
private subscribedAuthors = new Set<string>();
|
||||
private subscribedTags = new Set<string>();
|
||||
|
23
packages/app/src/Cache/LRUSet.ts
Normal file
23
packages/app/src/Cache/LRUSet.ts
Normal file
@ -0,0 +1,23 @@
|
||||
export default class LRUSet<T> {
|
||||
private set = new Set<T>();
|
||||
private limit: number;
|
||||
|
||||
constructor(limit: number) {
|
||||
this.limit = limit;
|
||||
}
|
||||
|
||||
add(item: T) {
|
||||
if (this.set.size >= this.limit) {
|
||||
this.set.delete(this.set.values().next().value);
|
||||
}
|
||||
this.set.add(item);
|
||||
}
|
||||
|
||||
has(item: T) {
|
||||
return this.set.has(item);
|
||||
}
|
||||
|
||||
values() {
|
||||
return this.set.values();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user