Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | 41x 41x 41x 41x 41x 41x 41x 69x 69x 69x 69x 69x 41x 41x 67x 67x 67x 67x 41x 41x 12867x 12867x 12867x 12867x 12867x 12867x 12867x 12867x 12867x 12867x 41x 41x 11825x 11825x 11825x 11825x 42x 42x 11783x 11783x 11825x 11825x 11783x 11783x 11783x 11783x 11825x 41x 41x 1084x 1084x 1084x 1084x 1084x 1084x 1084x 1084x 1084x 1084x 41x 41x 41x 41x 41x | // Copyright (c) ZeroC, Inc.
import { TimerUtil } from "./TimerUtil.js";
import { CommunicatorDestroyedException } from "./LocalExceptions.js";
export class Timer {
constructor(logger) {
this._logger = logger;
this._destroyed = false;
this._tokenId = 0;
this._tokens = new Map();
}
destroy() {
this._tokens.forEach((_, key) => this.cancel(key));
this._destroyed = true;
this._tokens.clear();
}
schedule(callback, delay) {
if (this._destroyed) {
throw new CommunicatorDestroyedException();
}
const token = this._tokenId++;
const id = Timer.setTimeout(() => this.handleTimeout(token), delay);
this._tokens.set(token, {
callback: callback,
id: id,
isInterval: false,
});
return token;
}
cancel(id) {
if (this._destroyed) {
return false;
}
const token = this._tokens.get(id);
if (token === undefined) {
return false;
}
this._tokens.delete(id);
if (token.isInterval) {
Timer.clearInterval(token.id);
} else {
Timer.clearTimeout(token.id);
}
return true;
}
handleTimeout(id) {
if (this._destroyed) {
return;
}
const token = this._tokens.get(id);
if (token !== undefined) {
this._tokens.delete(id);
try {
token.callback();
} catch (ex) {
this._logger.warning("uncaught exception while executing timer:\n" + ex);
}
}
}
}
Timer.setTimeout = TimerUtil.setTimeout;
Timer.clearTimeout = TimerUtil.clearTimeout;
Timer.setImmediate = TimerUtil.setImmediate;
|