tdweb: use td_execute for verbosity, rename verbosity

GitOrigin-RevId: e099e4acc918392613dab33832390e51086ba8be
This commit is contained in:
Arseny Smirnov 2019-02-14 17:25:38 +03:00
parent 82589eeb2f
commit 909772df8f
2 changed files with 31 additions and 20 deletions

View File

@ -17,10 +17,9 @@ const sleep = ms => new Promise(res => setTimeout(res, ms));
* Differences from TDLib API<br>
* 1. updateFatalError error:string = Update; <br>
* 3. file <..as in td_api..> idb_key:string = File; <br>
* 2. setJsVerbosity verbosity:int = Ok; // currenly no result will be sent <br>
* 2. setJsLogVerbosityLevel new_verbosity_level:string = Ok;
* 3. inputFileBlob blob:<javascript blob> = InputFile;<br>
* <br>
* 4. setVerbosity verbosity:int = Ok; // Deprecated
*/
class TdClient {
/**
@ -32,20 +31,20 @@ class TdClient {
* Create TdClient
* @param {Object} options - Options
* @param {updateCallback} options.onUpdate - Callback for all updates. Could also be set explicitly right after TdClient construction.
* @param {number} [options.jsVerbosity='info'] - Verbosity level for javascript part of the code (error, warning, info, log, debug)
* @param {number} [options.verbosity=5] - Verbosity level for tdlib
* @param {string} [options.prefix=tdlib] Currently only one instance of TdClient per a prefix is allowed. All but one created instances will be automatically closed. Usually, the newest instace is kept alive.
* @param {boolean} [options.isBackground=false] - When choosing which instace to keep alive, we prefer instance with isBackground=false
* @param {number} [options.jsLogVerbosityLevel='info'] - Verbosity level for javascript part of the code (error, warning, info, log, debug)
* @param {number} [options.logVerbosityLevel=2] - Verbosity level for tdlib
* @param {string} [options.prefix=tdlib] Currently only one instance of TdClient per a prefix is allowed. All but one created instances will be automatically closed. Usually, the newest instance is kept alive.
* @param {boolean} [options.isBackground=false] - When choosing which instance to keep alive, we prefer instance with isBackground=false
* @param {string} [options.mode=wasm] - Type of tdlib build to use. 'asmjs' for asm.js and 'wasm' for WebAssembly.
* @param {boolean} [options.readOnly=false] - Open tdlib in read-only mode. Changes to tdlib database won't be persisted. For debug only.
*/
constructor(options) {
log.setVerbosity(options.jsVerbosity);
log.setVerbosity(options.jsLogVerbosityLevel);
this.worker = new MyWorker();
var self = this;
this.worker.onmessage = function(e) {
let response = e.data;
log.info(
log.debug(
'receive from worker: ',
JSON.parse(
JSON.stringify(response, (key, value) => {
@ -115,11 +114,11 @@ class TdClient {
query_id: this.query_id
};
}
if (query['@type'] === 'setJsVerbosity') {
log.setVerbosity(query.verbosity);
if (query['@type'] === 'setJsLogVerbosityLevel') {
log.setVerbosity(query.new_verbosity_level);
}
log.info('send to worker: ', query);
log.debug('send to worker: ', query);
this.worker.postMessage(query);
return new Promise((resolve, reject) => {
this.query_callbacks.set(this.query_id, [resolve, reject]);

View File

@ -323,7 +323,7 @@ class TdClient {
return;
}
await this.testLocalForage();
log.setVerbosity(options.jsVerbosity);
log.setVerbosity(options.jsLogVerbosityLevel);
this.wasInit = true;
options = options || {};
@ -397,10 +397,10 @@ class TdClient {
log.info('FS inited');
// no async initialization after this point
if (options.verbosity === undefined) {
options.verbosity = 5;
if (options.logVerbosityLevel === undefined) {
options.logVerbosityLevel = 2;
}
this.td_functions.td_set_verbosity(options.verbosity);
this.td_functions.td_set_verbosity(options.logVerbosityLevel);
this.client = this.td_functions.td_create();
this.savingFiles = new Map();
@ -416,7 +416,6 @@ class TdClient {
this.flushPendingQueries();
this.receive();
//setInterval(()=>this.receive(), 100);
}
prepareQueryRecursive(query) {
@ -464,12 +463,16 @@ class TdClient {
this.onStart();
return;
}
if (query['@type'] === 'setJsVerbosity') {
log.setVerbosity(query.verbosity);
if (query['@type'] === 'setJsLogVerbosityLevel') {
log.setVerbosity(query.new_verbosity_level);
return;
}
if (query['@type'] === 'setVerbosity') {
this.td_functions.td_set_verbosity(query.verbosity);
if (query['@type'] === 'setLogVerbosityLevel' ||
query['@type'] === 'getLogVerbosityLevel' ||
query['@type'] === 'setLogTagVerbosityLevel' ||
query['@type'] === 'getLogTagVerbosityLevel' ||
query['@type'] === 'getLogTags') {
this.execute(query);
return;
}
if (this.isPending) {
@ -481,6 +484,15 @@ class TdClient {
this.scheduleReceiveSoon();
}
execute(query) {
try {
let res = this.td_functions.td_execute(0, JSON.stringify(query));
let response = JSON.parse(res);
this.callback(response);
} catch (error) {
this.onFatalError(error);
}
}
receive() {
this.cancelReceive();
if (this.wasFatalError) {