annotate api functions with types

This commit is contained in:
Ivan Tivonenko
2015-08-06 02:23:05 +03:00
parent 5ac1bcc414
commit 5cb63a258c
8 changed files with 272 additions and 32 deletions

View File

@@ -4,11 +4,41 @@
const _ = require('lodash');
const common = require('../common');
import type {Remote} from '../../core/remote';
// If a ledger is not received in this time, consider the connection offline
const CONNECTION_TIMEOUT = 1000 * 30;
function isUpToDate(remote): boolean {
type GetServerInfoResponse = {
buildVersion: string,
completeLedgers: string,
hostid: string,
ioLatencyMs: number,
load?: {
jobTypes: Array<Object>,
threads: number
},
lastClose: {
convergeTimeS: number,
proposers: number
},
loadFactor: number,
peers: number,
pubkeyNode: string,
pubkeyValidator?: string,
serverState: string,
validatedLedger: {
age: number,
baseFeeXrp: number,
hash: string,
reserveBaseXrp: number,
reserveIncXrp: number,
seq: number
},
validationQuorum: number
}
function isUpToDate(remote: Remote): boolean {
const server = remote.getServer();
return Boolean(server) && (remote._stand_alone
|| (Date.now() - server._lastLedgerClose) <= CONNECTION_TIMEOUT);
@@ -18,13 +48,17 @@ function isConnected(): boolean {
return Boolean(this.remote._ledger_current_index) && isUpToDate(this.remote);
}
function getServerInfoAsync(callback: (err: any, data: any) => void): void {
function getServerInfoAsync(
callback: (err: any, data?: GetServerInfoResponse) => void
): void {
this.remote.requestServerInfo((error, response) => {
if (error) {
const message = _.get(error, ['remote', 'error_message'], error.message);
const message =
_.get(error, ['remote', 'error_message'], error.message);
callback(new common.errors.RippledNetworkError(message));
} else {
callback(null, common.convertKeysFromSnakeCaseToCamelCase(response.info));
callback(null,
common.convertKeysFromSnakeCaseToCamelCase(response.info));
}
});
}
@@ -37,19 +71,19 @@ function getLedgerVersion(): number {
return this.remote.getLedgerSequence();
}
function connect() {
function connect(): Promise<void> {
return common.promisify(callback => {
this.remote.connect(() => callback(null));
})();
}
function disconnect() {
function disconnect(): Promise<void> {
return common.promisify(callback => {
this.remote.disconnect(() => callback(null));
})();
}
function getServerInfo() {
function getServerInfo(): Promise<GetServerInfoResponse> {
return common.promisify(getServerInfoAsync.bind(this))();
}