aozhiwei 5cc21836d0 1
2023-07-04 17:40:30 +08:00

79 lines
2.2 KiB
JavaScript

const app = require('j7/app');
const utils = require('j7/utils');
const bcutils = require('j7/bcutils');
const log = require('j7/log');
const BaseTask = require('./basetask');
const factory = require('./factory');
const serviceFactory = require('../services/factory');
const metaFactory = require('../metadata/factory');
class BcSpider extends BaseTask {
async init() {
const netList = metaFactory.getNetList();
netList.forEach
(
(net) => {
this.initNet(net);
});
}
async initNet(net) {
const events = [];
net['Events'].forEach
(
(eventConf) => {
const event = {
'eventConf': eventConf,
'progressInfo': {
'pullCount': 0,
'eventCount': 0,
'fromBlock': 0,
'toBlock': 0,
'currBlock': 0
}
};
events.push(event);
this.createPullBcEventService(net, event);
});
this.outputProgressInfo(net, events);
}
createPullBcEventService(net, event) {
const bc = serviceFactory.create('BlockChain');
bc.init(net['net_id']);
const pullBcEventService = serviceFactory.create('PullBcEvent');
event['pullBcEventService'] = pullBcEventService;
pullBcEventService.init(bc, net, event);
return pullBcEventService;
}
async outputProgressInfo(net, events) {
let count = 0;
while (true) {
log.info('----------------------------------------------------------');
events.forEach
(
(event) => {
const eventConf = event['eventConf'];
const progInfo = event['progressInfo'];
const logObj = 'net_id: ' + net['net_id'] + ' ' +
eventConf['contract_name'] + '.' +
eventConf['event_name'] + ' ' +
' pullCount:' + progInfo['pullCount'] +
' eventCount:' + progInfo['eventCount'] +
' fromBlock:' + progInfo['fromBlock'] +
' toBlock:' + progInfo['toBlock'] +
' currBlock:' + progInfo['currBlock']
;
log.info(logObj);
}
);
await utils.sleep(1000 * 10);
}
}
}
module.exports = BcSpider;