Skip to content

Commit

Permalink
Add event emitter for get_vp
Browse files Browse the repository at this point in the history
  • Loading branch information
bonustrack committed Nov 11, 2022
1 parent edad433 commit 0cffb1a
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
19 changes: 19 additions & 0 deletions src/ee.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import events from 'events';
import { sha256 } from './utils';

const eventEmitter = new events.EventEmitter();
eventEmitter.setMaxListeners(1000); // https://stackoverflow.com/a/26176922

export default async function serve(id, action, args) {
const key = sha256(id);
return new Promise(async (resolve, reject) => {
eventEmitter.once(key, (data) => (data.error ? reject(data.e) : resolve(data)));
if (eventEmitter.listenerCount(key) === 1) {
try {
eventEmitter.emit(key, await action(...args));
} catch (e) {
eventEmitter.emit(key, { error: true, e });
}
}
});
}
3 changes: 2 additions & 1 deletion src/rpc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { clone, formatStrategies, rpcSuccess, rpcError, blockNumByNetwork } from
import { version } from '../package.json';
import { getVp, validate } from './methods';
import disabled from './disabled.json';
import serve from './ee';

const router = express.Router();

Expand All @@ -15,7 +16,7 @@ router.post('/', async (req, res) => {

if (method === 'get_vp') {
try {
return await getVp(res, params, id);
return await serve(JSON.stringify(params), getVp, [res, params, id]);
} catch (e) {
console.log('[rpc] get_vp failed', params.space, e);
return rpcError(res, 500, e, id);
Expand Down

0 comments on commit 0cffb1a

Please sign in to comment.