opendb_test_rpc
Version:
general purpose library for OpenDB blockchain
69 lines • 4.83 kB
JavaScript
import debugFactory from 'debug';
import { RpcWebSocketClient } from './rpc';
export default class RPCClient {
constructor(endpoint) {
this.isConnected = false;
this.endpoint = endpoint;
this.debug = debugFactory('openDB:ws');
this.rpc = new RpcWebSocketClient();
this.rpc.onClose(this.reconnect);
}
async connect() {
this.debug('About to connect to remote API node ws endpoint');
if (this.isConnected) {
return;
}
try {
await this.rpc.connect(this.endpoint);
}
catch (error) {
console.error('OpenDB API ws connectoin error', error);
throw error;
}
this.isConnected = true;
this.debug('Already init connection to remote endpoint');
}
// TSES-lint: In call method params to change (any - unknown) for lint error
async call(method, params) {
if (!this.isConnected && !this.endpoint) {
this.debug('Empty endpoint and no established connection, abort sending');
return false;
}
this.debug('Sending message: ', JSON.stringify({ method, params }, null, 2));
try {
// TSES-lint: 'result' is never reassigned. Use 'const' instead
const result = await this.rpc.call(method, params);
return result;
}
catch (error) {
console.error('OpenDB API ws call error', error);
throw error;
}
}
// -------TODO: Unused Function Notify
// public async notify(method: string, params?: any) {
// if (!this.isConnected && !this.endpoint) {
// this.debug('Empty endpoint and no established connection, abort sending')
// return false
// }
// this.debug(
// 'Sending notification: ',
// JSON.stringify({ method, params }, null, 2)
// )
// try {
// let result = await this.rpc.notify(method, params)
// return result
// } catch (error) {
// console.error('OpenDB API ws call error', error)
// throw error
// }
// }
reconnect() {
if (this.endpoint === undefined) {
this.debug('No endpoint for reconnection');
return false;
}
return this.connect();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sWUFBMkIsTUFBTSxPQUFPLENBQUE7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sT0FBTyxDQUFBO0FBYzFDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sU0FBUztJQVE1QixZQUFZLFFBQVE7UUFOYixnQkFBVyxHQUFZLEtBQUssQ0FBQTtRQU9qQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUV0QyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQTtRQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQTtRQUU3RCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixPQUFNO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3ZDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUN0RCxNQUFNLEtBQUssQ0FBQTtRQUNiLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQTtRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUE7SUFDMUQsQ0FBQztJQUNELDRFQUE0RTtJQUNyRSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQWMsRUFBRSxNQUFnQjtRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLDZEQUE2RCxDQUFDLENBQUE7WUFDekUsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzVFLElBQUksQ0FBQztZQUNILCtEQUErRDtZQUMvRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUNsRCxPQUFPLE1BQU0sQ0FBQTtRQUNmLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUNoRCxNQUFNLEtBQUssQ0FBQTtRQUNiLENBQUM7SUFDSCxDQUFDO0lBQ0Qsc0NBQXNDO0lBQ3RDLHNEQUFzRDtJQUN0RCwrQ0FBK0M7SUFDL0MsZ0ZBQWdGO0lBQ2hGLG1CQUFtQjtJQUNuQixNQUFNO0lBRU4sZ0JBQWdCO0lBQ2hCLGdDQUFnQztJQUNoQyxrREFBa0Q7SUFDbEQsTUFBTTtJQUNOLFVBQVU7SUFDVix5REFBeUQ7SUFDekQsb0JBQW9CO0lBQ3BCLHNCQUFzQjtJQUN0Qix1REFBdUQ7SUFDdkQsa0JBQWtCO0lBQ2xCLE1BQU07SUFDTixJQUFJO0lBRUksU0FBUztRQUNmLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUE7WUFDMUMsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDdkIsQ0FBQztDQUNGIn0=