diff --git a/src/index.ts b/src/index.ts index 820a5bb..f8a2baf 100644 --- a/src/index.ts +++ b/src/index.ts @@ -184,7 +184,6 @@ const main = async () => { }); const dlobCoder = DLOBOrdersCoder.create(); - const slotSubscriber = new SlotSubscriber(connection, {}); const lamportsBalance = await connection.getBalance(wallet.publicKey); logger.info( @@ -199,12 +198,15 @@ const main = async () => { logger.error(e); }); - await slotSubscriber.subscribe(); - slotSubscriber.eventEmitter.on('newSlot', async (slot: number) => { + setInterval(async () => { + if (lastSlotReceivedMutex.isLocked()) { + return; + } + await lastSlotReceivedMutex.runExclusive(async () => { - lastSlotReceived = slot; + lastSlotReceived = bulkAccountLoader.getSlot(); }); - }); + }, ORDERBOOK_UPDATE_INTERVAL); const userMap = new UserMap( driftClient, @@ -225,7 +227,7 @@ const main = async () => { const dlobSubscriber = new DLOBSubscriber({ driftClient, dlobSource: userMap, - slotSource: slotSubscriber, + slotSource: bulkAccountLoader, updateFrequency: ORDERBOOK_UPDATE_INTERVAL, }); await dlobSubscriber.subscribe(); @@ -255,7 +257,7 @@ const main = async () => { // object with userAccount key and orders object serialized const orders: Array = []; const oracles: Array = []; - const slot = slotSubscriber.currentSlot; + const slot = bulkAccountLoader.getSlot(); for (const market of driftClient.getPerpMarketAccounts()) { const oracle = driftClient.getOracleDataForPerpMarket( @@ -299,7 +301,7 @@ const main = async () => { app.get('/orders/json', async (_req, res, next) => { try { // object with userAccount key and orders object serialized - const slot = slotSubscriber.currentSlot; + const slot = bulkAccountLoader.getSlot(); const orders: Array = []; const oracles: Array = []; for (const market of driftClient.getPerpMarketAccounts()) { @@ -462,7 +464,7 @@ const main = async () => { res.end( JSON.stringify({ - slot: slotSubscriber.currentSlot, + slot: bulkAccountLoader.getSlot(), data: dlobCoder.encode(dlobOrders).toString('base64'), }) ); @@ -551,7 +553,7 @@ const main = async () => { .getDLOB() .getRestingLimitBids( normedMarketIndex, - slotSubscriber.getSlot(), + bulkAccountLoader.getSlot(), normedMarketType, oracle ) @@ -562,7 +564,7 @@ const main = async () => { .getDLOB() .getRestingLimitAsks( normedMarketIndex, - slotSubscriber.getSlot(), + bulkAccountLoader.getSlot(), normedMarketType, oracle )