feat: have Store extend EventEmitter so that it can emit set on adding an update and pass the serialized data

This commit is contained in:
Derrick Hammer 2023-09-15 22:06:40 -04:00
parent 7075966227
commit 295aed0845
Signed by: pcfreak30
GPG Key ID: C997C339BE476FF2
1 changed files with 6 additions and 2 deletions

View File

@ -5,6 +5,7 @@ import { concatBytes } from "@noble/hashes/utils";
import { LightClientUpdate } from "#types.js";
import * as capella from "@lodestar/types/capella";
import NodeCache from "node-cache";
import { EventEmitter } from "events";
export interface StoreItem {
update: Uint8Array;
@ -12,22 +13,25 @@ export interface StoreItem {
nextCommitteeHash: Uint8Array;
}
export default class Store implements IStore {
export default class Store extends EventEmitter implements IStore {
private store = new NodeCache({ useClones: false });
constructor(expire: number = 0) {
super();
this.store.options.stdTTL = 0;
}
addUpdate(period: number, update: LightClientUpdate) {
try {
const serialized = capella.ssz.LightClientUpdate.serialize(update);
this.store.set(period, {
update: capella.ssz.LightClientUpdate.serialize(update),
update: serialized,
nextCommittee: CommitteeSSZ.serialize(update.nextSyncCommittee.pubkeys),
nextCommitteeHash: digest(
concatBytes(...update.nextSyncCommittee.pubkeys),
),
});
this.emit("set", period, serialized);
} catch (e) {
console.log(e);
}