use bulk account loader for most recent slot
This commit is contained in:
24
src/index.ts
24
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<any> = [];
|
||||
const oracles: Array<any> = [];
|
||||
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<any> = [];
|
||||
const oracles: Array<any> = [];
|
||||
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
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user