node-opcua-utils 2.57.0 → 2.63.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/get_clock_tick.js +4 -5
- package/dist/get_clock_tick.js.map +1 -1
- package/dist/hrtime.d.ts +2 -0
- package/dist/hrtime.js +36 -0
- package/dist/hrtime.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/watchdog.js +3 -19
- package/dist/watchdog.js.map +1 -1
- package/package.json +5 -6
- package/source/get_clock_tick.ts +5 -5
- package/source/hrtime.ts +37 -0
- package/source/index.ts +1 -0
- package/source/watchdog.ts +3 -19
- package/.mocharc.yml +0 -10
package/dist/get_clock_tick.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.get_clock_tick = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const tickOrigin = process.hrtime()[0];
|
|
4
|
+
if (typeof process === "object" && process.hrtime) {
|
|
5
|
+
const tickOrigin = process.hrtime();
|
|
7
6
|
// clock it as a double in millisecond
|
|
8
7
|
// so we can measure very tiny time intervals
|
|
9
8
|
exports.get_clock_tick = () => {
|
|
10
|
-
const hrt = process.hrtime();
|
|
11
|
-
const r = (hrt[0]
|
|
9
|
+
const hrt = process.hrtime(tickOrigin);
|
|
10
|
+
const r = (hrt[0]) * 1000.0 + Math.ceil((hrt[1] / 1e6) * 1000) / 1000;
|
|
12
11
|
return r;
|
|
13
12
|
};
|
|
14
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get_clock_tick.js","sourceRoot":"","sources":["../source/get_clock_tick.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"get_clock_tick.js","sourceRoot":"","sources":["../source/get_clock_tick.ts"],"names":[],"mappings":";;;AAMA,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IACpC,sCAAsC;IACtC,6CAA6C;IAC7C,sBAAc,GAAG,GAAG,EAAE;QAClB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACtE,OAAO,CAAC,CAAC;IACb,CAAC,CAAC;CACL;KAAM;IACH,sBAAc,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;CACrC"}
|
package/dist/hrtime.d.ts
ADDED
package/dist/hrtime.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hrtime = void 0;
|
|
4
|
+
// polyfil for window.performance.now
|
|
5
|
+
const performance = (typeof global === "object" && global.performance) || {};
|
|
6
|
+
const performanceNow = performance.now ||
|
|
7
|
+
performance.mozNow ||
|
|
8
|
+
performance.msNow ||
|
|
9
|
+
performance.oNow ||
|
|
10
|
+
performance.webkitNow ||
|
|
11
|
+
function () {
|
|
12
|
+
return new Date().getTime();
|
|
13
|
+
};
|
|
14
|
+
// generate timestamp or delta
|
|
15
|
+
// see http://nodejs.org/api/process.html#process_process_hrtime
|
|
16
|
+
function hrtime_for_browser(previousTimestamp) {
|
|
17
|
+
if (typeof process === "object") {
|
|
18
|
+
console.log("SHould not use hrtime_for_browser in a node js app");
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
previousTimestamp = previousTimestamp || [0, 0];
|
|
22
|
+
const clocktime = performanceNow.call(performance) * 1e-3;
|
|
23
|
+
let seconds = Math.floor(clocktime);
|
|
24
|
+
let nanoseconds = Math.floor((clocktime % 1) * 1e9);
|
|
25
|
+
if (previousTimestamp) {
|
|
26
|
+
seconds = seconds - previousTimestamp[0];
|
|
27
|
+
nanoseconds = nanoseconds - previousTimestamp[1];
|
|
28
|
+
if (nanoseconds < 0) {
|
|
29
|
+
seconds--;
|
|
30
|
+
nanoseconds += 1e9;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return [seconds, nanoseconds];
|
|
34
|
+
}
|
|
35
|
+
exports.hrtime = typeof process === "object" ? process.hrtime : hrtime_for_browser;
|
|
36
|
+
//# sourceMappingURL=hrtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hrtime.js","sourceRoot":"","sources":["../source/hrtime.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AACrC,MAAM,WAAW,GAAQ,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAK,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACnF,MAAM,cAAc,GAChB,WAAW,CAAC,GAAG;IACf,WAAW,CAAC,MAAM;IAClB,WAAW,CAAC,KAAK;IACjB,WAAW,CAAC,IAAI;IAChB,WAAW,CAAC,SAAS;IACrB;QACI,OAAO,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC,CAAC;AAEN,8BAA8B;AAC9B,gEAAgE;AAChE,SAAS,kBAAkB,CAAC,iBAAoC;IAE5D,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAG;QAC9B,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAClB;IACD,iBAAiB,GAAG,iBAAiB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IAC1D,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IACpD,IAAI,iBAAiB,EAAE;QACnB,OAAO,GAAG,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACzC,WAAW,GAAG,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,WAAW,GAAG,CAAC,EAAE;YACjB,OAAO,EAAE,CAAC;YACV,WAAW,IAAI,GAAG,CAAC;SACtB;KACJ;IACD,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAClC,CAAC;AAEY,QAAA,MAAM,GAAe,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAE,OAAO,CAAC,MAAqB,CAAC,CAAC,CAAC,kBAAkB,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -10,7 +10,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
10
10
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.replaceBufferWithHexDump = exports.setDeprecated = exports.getFunctionParameterNames = exports.compare_buffers = exports.get_clock_tick = exports.getObjectClassName = exports.lowerFirstLetter = exports.capitalizeFirstLetter = exports.buffer_ellipsis = exports.isNullOrUndefined = exports.check_flag = exports.set_flag = void 0;
|
|
13
|
+
exports.hrtime = exports.replaceBufferWithHexDump = exports.setDeprecated = exports.getFunctionParameterNames = exports.compare_buffers = exports.get_clock_tick = exports.getObjectClassName = exports.lowerFirstLetter = exports.capitalizeFirstLetter = exports.buffer_ellipsis = exports.isNullOrUndefined = exports.check_flag = exports.set_flag = void 0;
|
|
14
14
|
/**
|
|
15
15
|
* @module node-opcua-utils
|
|
16
16
|
*/
|
|
@@ -66,4 +66,6 @@ Object.defineProperty(exports, "replaceBufferWithHexDump", { enumerable: true, g
|
|
|
66
66
|
__exportStar(require("./timestamp"), exports);
|
|
67
67
|
__exportStar(require("./line_file"), exports);
|
|
68
68
|
__exportStar(require("./match_uri"), exports);
|
|
69
|
+
var hrtime_1 = require("./hrtime");
|
|
70
|
+
Object.defineProperty(exports, "hrtime", { enumerable: true, get: function () { return hrtime_1.hrtime; } });
|
|
69
71
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;;GAEG;AACH,4BAA4B;AAC5B,yDAA2C;AAE3C;;;GAGG;AACH,SAAgB,QAAQ,CAAC,KAAa,EAAE,IAAgC;IACpE,IAAK,IAAY,CAAC,KAAK,EAAE;QACrB,IAAI,GAAI,IAAY,CAAC,KAAK,CAAC;KAC9B;IACD,IAAA,0BAAM,EAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,IAAA,0BAAM,EAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAC3B,OAAO,KAAK,GAAI,IAAe,CAAC;AACpC,CAAC;AAPD,4BAOC;AACD;;;GAGG;AACH,SAAgB,UAAU,CAAC,KAAa,EAAE,IAAgC;IACtE,IAAK,IAAY,CAAC,KAAK,EAAE;QACrB,IAAI,GAAI,IAAY,CAAC,KAAK,CAAC;KAC9B;IACD,IAAA,0BAAM,EAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,KAAK,GAAI,IAAe,CAAC,KAAM,IAAe,CAAC;AAC3D,CAAC;AAND,gCAMC;AAED,SAAgB,iBAAiB,CAAC,KAA0B;IACxD,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AACjD,CAAC;AAFD,8CAEC;AAED,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,+CAAyE;AAAhE,qHAAA,qBAAqB,OAAA;AAAE,gHAAA,gBAAgB,OAAA;AAChD,uDAAwD;AAA/C,sHAAA,kBAAkB,OAAA;AAC3B,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,+EAA2E;AAAlE,yIAAA,yBAAyB,OAAA;AAClC,6CAA2B;AAC3B,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,+EAA0E;AAAjE,wIAAA,wBAAwB,OAAA;AACjC,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;;GAEG;AACH,4BAA4B;AAC5B,yDAA2C;AAE3C;;;GAGG;AACH,SAAgB,QAAQ,CAAC,KAAa,EAAE,IAAgC;IACpE,IAAK,IAAY,CAAC,KAAK,EAAE;QACrB,IAAI,GAAI,IAAY,CAAC,KAAK,CAAC;KAC9B;IACD,IAAA,0BAAM,EAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,IAAA,0BAAM,EAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAC3B,OAAO,KAAK,GAAI,IAAe,CAAC;AACpC,CAAC;AAPD,4BAOC;AACD;;;GAGG;AACH,SAAgB,UAAU,CAAC,KAAa,EAAE,IAAgC;IACtE,IAAK,IAAY,CAAC,KAAK,EAAE;QACrB,IAAI,GAAI,IAAY,CAAC,KAAK,CAAC;KAC9B;IACD,IAAA,0BAAM,EAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,KAAK,GAAI,IAAe,CAAC,KAAM,IAAe,CAAC;AAC3D,CAAC;AAND,gCAMC;AAED,SAAgB,iBAAiB,CAAC,KAA0B;IACxD,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AACjD,CAAC;AAFD,8CAEC;AAED,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,+CAAyE;AAAhE,qHAAA,qBAAqB,OAAA;AAAE,gHAAA,gBAAgB,OAAA;AAChD,uDAAwD;AAA/C,sHAAA,kBAAkB,OAAA;AAC3B,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,+EAA2E;AAAlE,yIAAA,yBAAyB,OAAA;AAClC,6CAA2B;AAC3B,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,+EAA0E;AAAjE,wIAAA,wBAAwB,OAAA;AACjC,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,mCAAgC;AAAxB,gGAAA,MAAM,OAAA"}
|
package/dist/watchdog.js
CHANGED
|
@@ -6,23 +6,7 @@ exports.WatchDog = void 0;
|
|
|
6
6
|
*/
|
|
7
7
|
const events_1 = require("events");
|
|
8
8
|
const node_opcua_assert_1 = require("node-opcua-assert");
|
|
9
|
-
|
|
10
|
-
* a arbitrary clock which is system dependant and
|
|
11
|
-
* insensible to clock drifts ....
|
|
12
|
-
*
|
|
13
|
-
*/
|
|
14
|
-
function _getCurrentSystemTick() {
|
|
15
|
-
if (process && process.hrtime) {
|
|
16
|
-
const h = process.hrtime();
|
|
17
|
-
const n = h[1] / 1000000;
|
|
18
|
-
(0, node_opcua_assert_1.assert)(n <= 1000);
|
|
19
|
-
return h[0] * 1000 + n;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
// fallback to Date as process.hrtime doesn't exit
|
|
23
|
-
return Date.now();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
9
|
+
const get_clock_tick_1 = require("./get_clock_tick");
|
|
26
10
|
function hasExpired(watchDogData, currentTime) {
|
|
27
11
|
const elapsedTime = currentTime - watchDogData.lastSeen;
|
|
28
12
|
return elapsedTime > watchDogData.timeout;
|
|
@@ -49,7 +33,7 @@ class WatchDog extends events_1.EventEmitter {
|
|
|
49
33
|
this._timer = null; // as NodeJS.Timer;
|
|
50
34
|
}
|
|
51
35
|
static lastSeenToDuration(lastSeen) {
|
|
52
|
-
return
|
|
36
|
+
return (0, get_clock_tick_1.get_clock_tick)() - lastSeen;
|
|
53
37
|
}
|
|
54
38
|
/**
|
|
55
39
|
* returns the number of subscribers using the WatchDog object.
|
|
@@ -124,7 +108,7 @@ class WatchDog extends events_1.EventEmitter {
|
|
|
124
108
|
(0, node_opcua_assert_1.assert)(this._timer === null && Object.keys(this._watchdogDataMap).length === 0, " leaking subscriber in watchdog");
|
|
125
109
|
}
|
|
126
110
|
getCurrentSystemTick() {
|
|
127
|
-
return
|
|
111
|
+
return (0, get_clock_tick_1.get_clock_tick)();
|
|
128
112
|
}
|
|
129
113
|
_visit_subscriber() {
|
|
130
114
|
this._currentTime = this.getCurrentSystemTick();
|
package/dist/watchdog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watchdog.js","sourceRoot":"","sources":["../source/watchdog.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,mCAAsC;AACtC,yDAA2C;
|
|
1
|
+
{"version":3,"file":"watchdog.js","sourceRoot":"","sources":["../source/watchdog.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-opcua-utils",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.63.0",
|
|
4
4
|
"description": "pure nodejs OPCUA SDK - module -utils",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -12,14 +12,13 @@
|
|
|
12
12
|
"clean": "node -e \"require('rimraf').sync('dist');\""
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"browser-process-hrtime": "^1.0.0",
|
|
16
15
|
"chalk": "4.1.2",
|
|
17
|
-
"node-opcua-assert": "2.
|
|
16
|
+
"node-opcua-assert": "2.63.0"
|
|
18
17
|
},
|
|
19
18
|
"devDependencies": {
|
|
20
|
-
"@types/node": "
|
|
19
|
+
"@types/node": "17.0.10",
|
|
21
20
|
"should": "^13.2.3",
|
|
22
|
-
"sinon": "^
|
|
21
|
+
"sinon": "^12.0.1"
|
|
23
22
|
},
|
|
24
23
|
"author": "Etienne Rossignon",
|
|
25
24
|
"license": "MIT",
|
|
@@ -36,5 +35,5 @@
|
|
|
36
35
|
"internet of things"
|
|
37
36
|
],
|
|
38
37
|
"homepage": "http://node-opcua.github.io/",
|
|
39
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "df4335584455009c6caa21ed6a2fa42caa9104ed"
|
|
40
39
|
}
|
package/source/get_clock_tick.ts
CHANGED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
* @module node-opcua-utils
|
|
3
3
|
*/
|
|
4
4
|
export let get_clock_tick: () => number;
|
|
5
|
-
|
|
5
|
+
import { hrtime } from "./hrtime";
|
|
6
6
|
|
|
7
|
-
if (process && process.hrtime) {
|
|
8
|
-
const tickOrigin = process.hrtime()
|
|
7
|
+
if (typeof process === "object" && process.hrtime) {
|
|
8
|
+
const tickOrigin = process.hrtime();
|
|
9
9
|
// clock it as a double in millisecond
|
|
10
10
|
// so we can measure very tiny time intervals
|
|
11
11
|
get_clock_tick = () => {
|
|
12
|
-
const hrt = process.hrtime();
|
|
13
|
-
const r = (hrt[0]
|
|
12
|
+
const hrt = process.hrtime(tickOrigin);
|
|
13
|
+
const r = (hrt[0]) * 1000.0 + Math.ceil((hrt[1] / 1e6) * 1000) / 1000;
|
|
14
14
|
return r;
|
|
15
15
|
};
|
|
16
16
|
} else {
|
package/source/hrtime.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// polyfil for window.performance.now
|
|
2
|
+
const performance: any = (typeof global === "object" && global.performance) || {};
|
|
3
|
+
const performanceNow =
|
|
4
|
+
performance.now ||
|
|
5
|
+
performance.mozNow ||
|
|
6
|
+
performance.msNow ||
|
|
7
|
+
performance.oNow ||
|
|
8
|
+
performance.webkitNow ||
|
|
9
|
+
function () {
|
|
10
|
+
return new Date().getTime();
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
// generate timestamp or delta
|
|
14
|
+
// see http://nodejs.org/api/process.html#process_process_hrtime
|
|
15
|
+
function hrtime_for_browser(previousTimestamp?: [number, number]): [number, number] {
|
|
16
|
+
|
|
17
|
+
if (typeof process === "object" ) {
|
|
18
|
+
console.log("SHould not use hrtime_for_browser in a node js app");
|
|
19
|
+
process.exit(1)
|
|
20
|
+
}
|
|
21
|
+
previousTimestamp = previousTimestamp || [0, 0];
|
|
22
|
+
|
|
23
|
+
const clocktime = performanceNow.call(performance) * 1e-3;
|
|
24
|
+
let seconds = Math.floor(clocktime);
|
|
25
|
+
let nanoseconds = Math.floor((clocktime % 1) * 1e9);
|
|
26
|
+
if (previousTimestamp) {
|
|
27
|
+
seconds = seconds - previousTimestamp[0];
|
|
28
|
+
nanoseconds = nanoseconds - previousTimestamp[1];
|
|
29
|
+
if (nanoseconds < 0) {
|
|
30
|
+
seconds--;
|
|
31
|
+
nanoseconds += 1e9;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return [seconds, nanoseconds];
|
|
35
|
+
}
|
|
36
|
+
export type HRTimeFunc = (time?: [number, number]) => [number, number];
|
|
37
|
+
export const hrtime: HRTimeFunc = typeof process === "object" ? (process.hrtime as HRTimeFunc) : hrtime_for_browser;
|
package/source/index.ts
CHANGED
package/source/watchdog.ts
CHANGED
|
@@ -3,26 +3,11 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { EventEmitter } from "events";
|
|
5
5
|
import { assert } from "node-opcua-assert";
|
|
6
|
+
import { get_clock_tick } from "./get_clock_tick";
|
|
6
7
|
|
|
7
8
|
type ArbitraryClockTick = number; // in millisecond
|
|
8
9
|
type DurationInMillisecond = number;
|
|
9
10
|
|
|
10
|
-
/**
|
|
11
|
-
* a arbitrary clock which is system dependant and
|
|
12
|
-
* insensible to clock drifts ....
|
|
13
|
-
*
|
|
14
|
-
*/
|
|
15
|
-
function _getCurrentSystemTick(): ArbitraryClockTick {
|
|
16
|
-
if (process && process.hrtime) {
|
|
17
|
-
const h = process.hrtime();
|
|
18
|
-
const n = h[1] / 1000000;
|
|
19
|
-
assert(n <= 1000);
|
|
20
|
-
return h[0] * 1000 + n;
|
|
21
|
-
} else {
|
|
22
|
-
// fallback to Date as process.hrtime doesn't exit
|
|
23
|
-
return Date.now();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
11
|
|
|
27
12
|
export interface IWatchdogData2 {
|
|
28
13
|
key: number;
|
|
@@ -60,9 +45,8 @@ function keepAliveFunc(this: ISubscriber) {
|
|
|
60
45
|
}
|
|
61
46
|
|
|
62
47
|
export class WatchDog extends EventEmitter {
|
|
63
|
-
|
|
64
48
|
static lastSeenToDuration(lastSeen: number): number {
|
|
65
|
-
return
|
|
49
|
+
return get_clock_tick() - lastSeen;
|
|
66
50
|
}
|
|
67
51
|
|
|
68
52
|
static emptyKeepAlive = (): void => {
|
|
@@ -170,7 +154,7 @@ export class WatchDog extends EventEmitter {
|
|
|
170
154
|
}
|
|
171
155
|
|
|
172
156
|
public getCurrentSystemTick(): ArbitraryClockTick {
|
|
173
|
-
return
|
|
157
|
+
return get_clock_tick();
|
|
174
158
|
}
|
|
175
159
|
|
|
176
160
|
private _visit_subscriber() {
|