diff --git a/src/dlob-subscriber/DLOBSubscriberIO.ts b/src/dlob-subscriber/DLOBSubscriberIO.ts index adfbde1..2b9dd03 100644 --- a/src/dlob-subscriber/DLOBSubscriberIO.ts +++ b/src/dlob-subscriber/DLOBSubscriberIO.ts @@ -18,49 +18,49 @@ type wsMarketL2Args = { marketName: string; depth: number; includeVamm: boolean; - numVammOrders?: number; + numVammOrders?: number; grouping?: number; fallbackL2Generators?: L2OrderBookGenerator[]; - updateOnChange?: boolean; + updateOnChange?: boolean; }; export class DLOBSubscriberIO extends DLOBSubscriber { public marketL2Args: wsMarketL2Args[] = []; - public lastSeenL2Formatted: Map>; + public lastSeenL2Formatted: Map>; io: Server; constructor(config: DLOBSubscriptionConfig) { super(config); - // Set up appropriate maps - this.lastSeenL2Formatted = new Map(); - this.lastSeenL2Formatted.set(MarketType.SPOT, new Map()); - this.lastSeenL2Formatted.set(MarketType.PERP, new Map()); + // Set up appropriate maps + this.lastSeenL2Formatted = new Map(); + this.lastSeenL2Formatted.set(MarketType.SPOT, new Map()); + this.lastSeenL2Formatted.set(MarketType.PERP, new Map()); - // Add all active markets to the market L2Args - for (const market of MainnetPerpMarkets) { - this.marketL2Args.push({ - marketIndex: market.marketIndex, - marketType: MarketType.PERP, - marketName: market.symbol, - depth: 2, - includeVamm: true, - numVammOrders: 100, - updateOnChange: true, - fallbackL2Generators: [] - }); - } - for (const market of MainnetSpotMarkets) { - this.marketL2Args.push({ - marketIndex: market.marketIndex, - marketType: MarketType.SPOT, - marketName: market.symbol, - depth: 2, - includeVamm: false, - updateOnChange: true, - fallbackL2Generators: [] - }); - } + // Add all active markets to the market L2Args + for (const market of MainnetPerpMarkets) { + this.marketL2Args.push({ + marketIndex: market.marketIndex, + marketType: MarketType.PERP, + marketName: market.symbol, + depth: 2, + includeVamm: true, + numVammOrders: 100, + updateOnChange: true, + fallbackL2Generators: [], + }); + } + for (const market of MainnetSpotMarkets) { + this.marketL2Args.push({ + marketIndex: market.marketIndex, + marketType: MarketType.SPOT, + marketName: market.symbol, + depth: 2, + includeVamm: false, + updateOnChange: true, + fallbackL2Generators: [], + }); + } } override async updateDLOB(): Promise { @@ -73,7 +73,7 @@ export class DLOBSubscriberIO extends DLOBSubscriber { getL2AndSendMsg(l2Args: wsMarketL2Args): void { const grouping = l2Args.grouping; - const l2 = this.getL2(l2Args); + const l2 = this.getL2(l2Args); let l2Formatted: any; if (grouping) { const groupingBN = new BN(grouping); @@ -82,10 +82,17 @@ export class DLOBSubscriberIO extends DLOBSubscriber { l2Formatted = l2WithBNToStrings(l2); } - if (l2Args.updateOnChange && this.lastSeenL2Formatted.get(l2Args.marketType)?.get(l2Args.marketIndex) === JSON.stringify(l2Formatted)) { - return; - } - this.lastSeenL2Formatted.get(l2Args.marketType)?.set(l2Args.marketIndex, JSON.stringify(l2Formatted)); + if ( + l2Args.updateOnChange && + this.lastSeenL2Formatted + .get(l2Args.marketType) + ?.get(l2Args.marketIndex) === JSON.stringify(l2Formatted) + ) { + return; + } + this.lastSeenL2Formatted + .get(l2Args.marketType) + ?.set(l2Args.marketIndex, JSON.stringify(l2Formatted)); l2Formatted['marketName'] = l2Args.marketName; l2Formatted['marketType'] = l2Args.marketType; l2Formatted['marketIndex'] = l2Args.marketIndex;