whatap 0.4.79 → 0.4.80
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/.vscode/keep-context.json +3 -3
- package/README.md +51 -51
- package/bindings/darwin/x64/whatap.node +0 -0
- package/bindings/linux/ia32/whatap.node +0 -0
- package/bindings/linux/x64/whatap.node +0 -0
- package/help.txt +10 -10
- package/index.js +8 -8
- package/lib/conf/conf-sys-mon.js +100 -100
- package/lib/conf/config-default.js +238 -238
- package/lib/conf/configure.js +423 -423
- package/lib/conf/license.js +41 -41
- package/lib/control/cmd-config.js +23 -23
- package/lib/control/control-handler.js +344 -344
- package/lib/control/packagectr-helper.js +149 -149
- package/lib/core/agent.js +329 -328
- package/lib/core/interceptor.js +142 -142
- package/lib/core/request-agent.js +26 -26
- package/lib/counter/counter-manager.js +127 -127
- package/lib/counter/meter/meter-activex.js +66 -66
- package/lib/counter/meter/meter-httpc.js +57 -57
- package/lib/counter/meter/meter-resource.js +9 -9
- package/lib/counter/meter/meter-service.js +167 -167
- package/lib/counter/meter/meter-socket.io.js +50 -50
- package/lib/counter/meter/meter-sql.js +70 -70
- package/lib/counter/meter/meter-users.js +57 -57
- package/lib/counter/meter.js +183 -183
- package/lib/counter/task/activetransaction.js +93 -93
- package/lib/counter/task/agentinfo.js +105 -105
- package/lib/counter/task/counter-task.js +9 -9
- package/lib/counter/task/gcstat.js +34 -34
- package/lib/counter/task/heapmem.js +24 -24
- package/lib/counter/task/httpc.js +75 -75
- package/lib/counter/task/proc-cpu.js +28 -28
- package/lib/counter/task/realtimeuser.js +30 -30
- package/lib/counter/task/res/systemECSTask.js +54 -54
- package/lib/counter/task/res/systemKubeTask.js +52 -52
- package/lib/counter/task/res/util/awsEcsClientThread.js +166 -166
- package/lib/counter/task/res/util/linuxProcStatUtil.js +13 -13
- package/lib/counter/task/res-sys-cpu.js +61 -61
- package/lib/counter/task/service.js +201 -201
- package/lib/counter/task/socketio.js +29 -29
- package/lib/counter/task/sql.js +104 -104
- package/lib/counter/task/systemperf.js +42 -42
- package/lib/data/datapack-sender.js +256 -256
- package/lib/data/dataprofile-agent.js +136 -136
- package/lib/data/datatext-agent.js +135 -135
- package/lib/data/event-level.js +15 -15
- package/lib/data/test.js +48 -48
- package/lib/env/constants.js +20 -20
- package/lib/kube/kube-client.js +143 -143
- package/lib/lang/text-types.js +58 -58
- package/lib/logger.js +319 -319
- package/lib/net/netflag.js +54 -54
- package/lib/net/paramdef.js +40 -40
- package/lib/net/receiver.js +65 -65
- package/lib/net/security-master.js +182 -173
- package/lib/net/sender.js +140 -140
- package/lib/net/tcp-return.js +17 -17
- package/lib/net/tcp-session.js +285 -285
- package/lib/net/tcpreq-client-proxy.js +69 -69
- package/lib/net/tcprequest-mgr.js +57 -57
- package/lib/observers/cluster-observer.js +21 -21
- package/lib/observers/express-observer.js +214 -214
- package/lib/observers/file-observer.js +184 -184
- package/lib/observers/global-observer.js +30 -30
- package/lib/observers/http-observer.js +704 -704
- package/lib/observers/maria-observer.js +382 -382
- package/lib/observers/memcached-observer.js +55 -55
- package/lib/observers/mongo-observer.js +262 -265
- package/lib/observers/mongodb-observer.js +197 -197
- package/lib/observers/mongoose-observer.js +83 -83
- package/lib/observers/mssql-observer.js +205 -205
- package/lib/observers/mysql-observer.js +436 -394
- package/lib/observers/net-observer.js +72 -72
- package/lib/observers/pgsql-observer.js +295 -295
- package/lib/observers/process-observer.js +25 -25
- package/lib/observers/promise-observer.js +31 -31
- package/lib/observers/redis-observer.js +156 -109
- package/lib/observers/schedule-observer.js +66 -66
- package/lib/observers/socket.io-observer.js +54 -54
- package/lib/observers/stream-observer.js +19 -19
- package/lib/observers/thrift-observer.js +196 -196
- package/lib/pack/activestack-pack.js +54 -54
- package/lib/pack/counter-pack.js +649 -649
- package/lib/pack/errorsnap-pack.js +68 -68
- package/lib/pack/event-pack.js +53 -53
- package/lib/pack/hitmap-pack.js +62 -62
- package/lib/pack/hitmap-pack1.js +146 -146
- package/lib/pack/netstat.js +14 -14
- package/lib/pack/pack.js +49 -49
- package/lib/pack/packenum.js +60 -60
- package/lib/pack/param-pack.js +213 -213
- package/lib/pack/profile-pack.js +48 -48
- package/lib/pack/realtimeuser-pack.js +40 -40
- package/lib/pack/stat-general-pack.js +95 -95
- package/lib/pack/staterror-pack.js +119 -119
- package/lib/pack/stathttpc-pack.js +66 -66
- package/lib/pack/stathttpc-rec.js +78 -78
- package/lib/pack/statremote-pack.js +45 -45
- package/lib/pack/statservice-pack.js +62 -62
- package/lib/pack/statservice-pack1.js +87 -87
- package/lib/pack/statservice-rec.js +292 -292
- package/lib/pack/statservice-rec_dep.js +151 -151
- package/lib/pack/statsql-pack.js +69 -69
- package/lib/pack/statsql-rec.js +100 -100
- package/lib/pack/statuseragent-pack.js +43 -43
- package/lib/pack/tagcount-pack.js +398 -398
- package/lib/pack/tagctr.js +14 -14
- package/lib/pack/text-pack.js +49 -49
- package/lib/pack/time-count.js +25 -25
- package/lib/pack/websocket.js +14 -14
- package/lib/plugin/plugin-loadermanager.js +56 -56
- package/lib/plugin/plugin.js +75 -75
- package/lib/requestlog.js +326 -326
- package/lib/service/tx-record.js +288 -288
- package/lib/stat/stat-error.js +116 -116
- package/lib/stat/stat-httpc.js +97 -97
- package/lib/stat/stat-remoteip.js +46 -46
- package/lib/stat/stat-sql.js +112 -112
- package/lib/stat/stat-tranx.js +57 -57
- package/lib/stat/stat-tx-caller.js +159 -159
- package/lib/stat/stat-tx-domain.js +110 -110
- package/lib/stat/stat-tx-referer.js +111 -111
- package/lib/stat/stat-useragent.js +48 -48
- package/lib/stat/timingsender.js +72 -72
- package/lib/step/activestack-step.js +37 -37
- package/lib/step/dbc-step.js +35 -35
- package/lib/step/http-stepx.js +66 -66
- package/lib/step/message-step.js +39 -39
- package/lib/step/method-stepx.js +46 -46
- package/lib/step/resultset-step.js +39 -39
- package/lib/step/securemsg-step.js +43 -43
- package/lib/step/socket-step.js +46 -46
- package/lib/step/sql-stepx.js +67 -67
- package/lib/step/sqlxtype.js +15 -15
- package/lib/step/step.js +65 -65
- package/lib/step/stepenum.js +53 -53
- package/lib/trace/local-context.js +13 -13
- package/lib/trace/parsed-sql.js +13 -13
- package/lib/trace/profile-collector.js +70 -70
- package/lib/trace/serviceurl-pattern-detector.js +117 -117
- package/lib/trace/trace-context-manager.js +195 -195
- package/lib/trace/trace-context.js +134 -134
- package/lib/util/anylist.js +102 -102
- package/lib/util/array-util.js +100 -100
- package/lib/util/bitutil.js +27 -27
- package/lib/util/cardinality/hyperloglog.js +105 -105
- package/lib/util/cardinality/murmurhash.js +31 -31
- package/lib/util/cardinality/registerset.js +74 -74
- package/lib/util/config-util.js +17 -17
- package/lib/util/cypher.js +89 -89
- package/lib/util/datetimehelper.js +237 -229
- package/lib/util/dateutil.js +110 -106
- package/lib/util/errordata.js +20 -20
- package/lib/util/escape-literal-sql.js +342 -342
- package/lib/util/hashutil2.js +126 -126
- package/lib/util/hexa32.js +57 -57
- package/lib/util/index.js +78 -78
- package/lib/util/intint-map.js +47 -47
- package/lib/util/intkey-linkedmap.js +26 -26
- package/lib/util/intkey-map.js +25 -25
- package/lib/util/intset.js +82 -82
- package/lib/util/iputil.js +119 -119
- package/lib/util/iputil_x.js +526 -526
- package/lib/util/keygen.js +17 -17
- package/lib/util/kube-util.js +72 -72
- package/lib/util/longint-linkedmap.js +35 -35
- package/lib/util/longkey-linkedmap.js +25 -25
- package/lib/util/longlong-linkedmap.js +37 -37
- package/lib/util/nodeutil.js +67 -67
- package/lib/util/oidutil.js +96 -93
- package/lib/util/paramsecurity.js +78 -78
- package/lib/util/pathtree.js +172 -172
- package/lib/util/pre-process.js +13 -13
- package/lib/util/process-seq.js +165 -165
- package/lib/util/property-util.js +35 -35
- package/lib/util/request-queue.js +42 -42
- package/lib/util/requestdouble-queue.js +72 -72
- package/lib/util/resourceprofile.js +156 -156
- package/lib/util/seedrandom.js +242 -242
- package/lib/util/stop-watch.js +29 -29
- package/lib/util/string-util.js +9 -9
- package/lib/util/stringkey-linkedmap.js +28 -28
- package/lib/util/stringnum-linkedmap.js +31 -31
- package/lib/util/stringset.js +65 -65
- package/lib/util/system-util.js +9 -9
- package/lib/util/userid-util.js +57 -57
- package/lib/util/utils.js +67 -67
- package/lib/value/blob-value.js +61 -61
- package/lib/value/boolean-value.js +51 -51
- package/lib/value/decimal-value.js +71 -71
- package/lib/value/double-summary.js +105 -105
- package/lib/value/double-value.js +50 -50
- package/lib/value/float-array.js +59 -59
- package/lib/value/float-value.js +64 -64
- package/lib/value/int-array.js +59 -59
- package/lib/value/int-map-value.js +151 -151
- package/lib/value/int-value.js +64 -64
- package/lib/value/ip4-value.js +83 -83
- package/lib/value/list-value.js +136 -136
- package/lib/value/long-array.js +59 -59
- package/lib/value/long-summary.js +105 -105
- package/lib/value/map-value.js +175 -175
- package/lib/value/metric-value.js +157 -157
- package/lib/value/null-value.js +42 -42
- package/lib/value/number-value.js +34 -34
- package/lib/value/summary-value.js +29 -29
- package/lib/value/text-array.js +117 -117
- package/lib/value/text-value.js +59 -59
- package/lib/value/texthash-value.js +49 -49
- package/lib/value/value.js +14 -14
- package/lib/value/valueenum.js +99 -99
- package/logs/whatap-20230906.log +54 -0
- package/package.json +28 -28
- package/whatap.conf +1 -1
- package/logs/whatap-20230616.log +0 -13
package/lib/pack/tagctr.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2016 the WHATAP project authors. All rights reserved.
|
|
3
|
-
* Use of this source code is governed by a license that
|
|
4
|
-
* can be found in the LICENSE file.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
function TagCtr() {
|
|
8
|
-
this.cache_last_only = "_cache_last_only_"
|
|
9
|
-
this.no_cache = "_no_cache_"
|
|
10
|
-
this.no_5m_hour = "_no_5m_hour_"
|
|
11
|
-
this.agency = "agency"
|
|
12
|
-
this.taglog = "taglog"
|
|
13
|
-
};
|
|
14
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2016 the WHATAP project authors. All rights reserved.
|
|
3
|
+
* Use of this source code is governed by a license that
|
|
4
|
+
* can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
function TagCtr() {
|
|
8
|
+
this.cache_last_only = "_cache_last_only_"
|
|
9
|
+
this.no_cache = "_no_cache_"
|
|
10
|
+
this.no_5m_hour = "_no_5m_hour_"
|
|
11
|
+
this.agency = "agency"
|
|
12
|
+
this.taglog = "taglog"
|
|
13
|
+
};
|
|
14
|
+
|
|
15
15
|
module.exports = TagCtr;
|
package/lib/pack/text-pack.js
CHANGED
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2016 the WHATAP project authors. All rights reserved.
|
|
3
|
-
* Use of this source code is governed by a license that
|
|
4
|
-
* can be found in the LICENSE file.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
var Pack = require('./pack'),
|
|
8
|
-
PackEnum = require('./packenum');
|
|
9
|
-
|
|
10
|
-
function TextRec(type, hash, text){
|
|
11
|
-
this.type = type || 0;
|
|
12
|
-
this.hash = hash || 0;
|
|
13
|
-
this.text = text || '';
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function TextPack(){
|
|
17
|
-
Pack.call(this);
|
|
18
|
-
this.records = []; /*List<TextRec>*/
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
TextPack.prototype = new Pack();
|
|
22
|
-
TextPack.prototype.constructor = TextPack;
|
|
23
|
-
TextPack.prototype.getPackType = function () {
|
|
24
|
-
return PackEnum.TEXT;
|
|
25
|
-
};
|
|
26
|
-
TextPack.prototype.write = function(dout){
|
|
27
|
-
Pack.prototype.write.call(this, dout);
|
|
28
|
-
dout.writeDecimal(this.records.length);
|
|
29
|
-
this.records.forEach(function(r) {
|
|
30
|
-
dout.writeByte(r.type);
|
|
31
|
-
dout.writeInt(r.hash);
|
|
32
|
-
dout.writeText(r.text);
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
TextPack.prototype.read = function(din) {
|
|
36
|
-
Pack.prototype.read.call(this, din);
|
|
37
|
-
|
|
38
|
-
var size = din.readDecNumber();
|
|
39
|
-
for (var i = 0; i < size; i++) {
|
|
40
|
-
var r = new TextRec();
|
|
41
|
-
r.type = din.readByte();
|
|
42
|
-
r.hash = din.readInt();
|
|
43
|
-
r.text = din.readText();
|
|
44
|
-
this.records.push(r);
|
|
45
|
-
}
|
|
46
|
-
return this;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
exports.TextRec = TextRec;
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2016 the WHATAP project authors. All rights reserved.
|
|
3
|
+
* Use of this source code is governed by a license that
|
|
4
|
+
* can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
var Pack = require('./pack'),
|
|
8
|
+
PackEnum = require('./packenum');
|
|
9
|
+
|
|
10
|
+
function TextRec(type, hash, text){
|
|
11
|
+
this.type = type || 0;
|
|
12
|
+
this.hash = hash || 0;
|
|
13
|
+
this.text = text || '';
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function TextPack(){
|
|
17
|
+
Pack.call(this);
|
|
18
|
+
this.records = []; /*List<TextRec>*/
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
TextPack.prototype = new Pack();
|
|
22
|
+
TextPack.prototype.constructor = TextPack;
|
|
23
|
+
TextPack.prototype.getPackType = function () {
|
|
24
|
+
return PackEnum.TEXT;
|
|
25
|
+
};
|
|
26
|
+
TextPack.prototype.write = function(dout){
|
|
27
|
+
Pack.prototype.write.call(this, dout);
|
|
28
|
+
dout.writeDecimal(this.records.length);
|
|
29
|
+
this.records.forEach(function(r) {
|
|
30
|
+
dout.writeByte(r.type);
|
|
31
|
+
dout.writeInt(r.hash);
|
|
32
|
+
dout.writeText(r.text);
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
TextPack.prototype.read = function(din) {
|
|
36
|
+
Pack.prototype.read.call(this, din);
|
|
37
|
+
|
|
38
|
+
var size = din.readDecNumber();
|
|
39
|
+
for (var i = 0; i < size; i++) {
|
|
40
|
+
var r = new TextRec();
|
|
41
|
+
r.type = din.readByte();
|
|
42
|
+
r.hash = din.readInt();
|
|
43
|
+
r.text = din.readText();
|
|
44
|
+
this.records.push(r);
|
|
45
|
+
}
|
|
46
|
+
return this;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
exports.TextRec = TextRec;
|
|
50
50
|
exports.TextPack = TextPack;
|
package/lib/pack/time-count.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
function TimeCount(count, error, time){
|
|
2
|
-
this.count = count || 0;
|
|
3
|
-
this.error = error || 0;
|
|
4
|
-
this.time = time || 0;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
TimeCount.prototype.add = function(time, error){
|
|
8
|
-
this.count++;
|
|
9
|
-
this.time += time;
|
|
10
|
-
if(error){
|
|
11
|
-
this.error++;
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
TimeCount.prototype.merge = function(o){
|
|
16
|
-
this.count += o.count;
|
|
17
|
-
this.time +=o.time;
|
|
18
|
-
this.error += o.error;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
TimeCount.prototype.copy = function(){
|
|
22
|
-
return new TimeCount(this.count, this.error, this.time);
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
module.exports = TimeCount;
|
|
1
|
+
function TimeCount(count, error, time){
|
|
2
|
+
this.count = count || 0;
|
|
3
|
+
this.error = error || 0;
|
|
4
|
+
this.time = time || 0;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
TimeCount.prototype.add = function(time, error){
|
|
8
|
+
this.count++;
|
|
9
|
+
this.time += time;
|
|
10
|
+
if(error){
|
|
11
|
+
this.error++;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
TimeCount.prototype.merge = function(o){
|
|
16
|
+
this.count += o.count;
|
|
17
|
+
this.time +=o.time;
|
|
18
|
+
this.error += o.error;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
TimeCount.prototype.copy = function(){
|
|
22
|
+
return new TimeCount(this.count, this.error, this.time);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
module.exports = TimeCount;
|
package/lib/pack/websocket.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2016 the WHATAP project authors. All rights reserved.
|
|
3
|
-
* Use of this source code is governed by a license that
|
|
4
|
-
* can be found in the LICENSE file.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
var Long = require('long');
|
|
8
|
-
|
|
9
|
-
function WEBSOCKET() {
|
|
10
|
-
this.count = 0;
|
|
11
|
-
this.in = 0;
|
|
12
|
-
this.out = 0;
|
|
13
|
-
}
|
|
14
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2016 the WHATAP project authors. All rights reserved.
|
|
3
|
+
* Use of this source code is governed by a license that
|
|
4
|
+
* can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
var Long = require('long');
|
|
8
|
+
|
|
9
|
+
function WEBSOCKET() {
|
|
10
|
+
this.count = 0;
|
|
11
|
+
this.in = 0;
|
|
12
|
+
this.out = 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
15
|
module.exports = WEBSOCKET;
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2016 the WHATAP project authors. All rights reserved.
|
|
3
|
-
* Use of this source code is governed by a license that
|
|
4
|
-
* can be found in the LICENSE file.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
var fs = require('fs'),
|
|
8
|
-
path = require('path'),
|
|
9
|
-
PlugIn = require('./plugin'),
|
|
10
|
-
Logger = require('../logger');
|
|
11
|
-
|
|
12
|
-
var fileName = ['appservicestart', 'appserviceend', 'httpservicestart', 'httpserviceend', 'httpcall'];
|
|
13
|
-
|
|
14
|
-
function PluginLoaderManager() {
|
|
15
|
-
this.loaded = false;
|
|
16
|
-
this.interval = null;
|
|
17
|
-
this.module_holder;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
PluginLoaderManager.prototype.start = function () {
|
|
21
|
-
var self = this;
|
|
22
|
-
|
|
23
|
-
this.module_holder = {};
|
|
24
|
-
fileName.forEach(function (name) {
|
|
25
|
-
var script = name + '.js';
|
|
26
|
-
self.module_holder[name] = new PlugIn(script);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
self.run(function () {
|
|
30
|
-
self.interval = setInterval(function () {
|
|
31
|
-
self.run();
|
|
32
|
-
}, 5000);
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
PluginLoaderManager.prototype.do = function (moduleName) {
|
|
36
|
-
try {
|
|
37
|
-
if(this.module_holder && this.module_holder[moduleName]) {
|
|
38
|
-
this.module_holder[moduleName]._process(arguments[1], arguments[2], arguments[3]);
|
|
39
|
-
}
|
|
40
|
-
} catch(e) {
|
|
41
|
-
Logger.printError('WHATAP-700', 'Plugin Error', e, false);
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
PluginLoaderManager.prototype.run = function (cb) {
|
|
45
|
-
var self = this;
|
|
46
|
-
|
|
47
|
-
fileName.forEach(function (name) {
|
|
48
|
-
self.module_holder[name].create();
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
if(cb) { cb(); }
|
|
52
|
-
};
|
|
53
|
-
PluginLoaderManager.prototype.stop = function () {
|
|
54
|
-
clearInterval(this.interval);
|
|
55
|
-
};
|
|
56
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2016 the WHATAP project authors. All rights reserved.
|
|
3
|
+
* Use of this source code is governed by a license that
|
|
4
|
+
* can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
var fs = require('fs'),
|
|
8
|
+
path = require('path'),
|
|
9
|
+
PlugIn = require('./plugin'),
|
|
10
|
+
Logger = require('../logger');
|
|
11
|
+
|
|
12
|
+
var fileName = ['appservicestart', 'appserviceend', 'httpservicestart', 'httpserviceend', 'httpcall'];
|
|
13
|
+
|
|
14
|
+
function PluginLoaderManager() {
|
|
15
|
+
this.loaded = false;
|
|
16
|
+
this.interval = null;
|
|
17
|
+
this.module_holder;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
PluginLoaderManager.prototype.start = function () {
|
|
21
|
+
var self = this;
|
|
22
|
+
|
|
23
|
+
this.module_holder = {};
|
|
24
|
+
fileName.forEach(function (name) {
|
|
25
|
+
var script = name + '.js';
|
|
26
|
+
self.module_holder[name] = new PlugIn(script);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
self.run(function () {
|
|
30
|
+
self.interval = setInterval(function () {
|
|
31
|
+
self.run();
|
|
32
|
+
}, 5000);
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
PluginLoaderManager.prototype.do = function (moduleName) {
|
|
36
|
+
try {
|
|
37
|
+
if(this.module_holder && this.module_holder[moduleName]) {
|
|
38
|
+
this.module_holder[moduleName]._process(arguments[1], arguments[2], arguments[3]);
|
|
39
|
+
}
|
|
40
|
+
} catch(e) {
|
|
41
|
+
Logger.printError('WHATAP-700', 'Plugin Error', e, false);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
PluginLoaderManager.prototype.run = function (cb) {
|
|
45
|
+
var self = this;
|
|
46
|
+
|
|
47
|
+
fileName.forEach(function (name) {
|
|
48
|
+
self.module_holder[name].create();
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
if(cb) { cb(); }
|
|
52
|
+
};
|
|
53
|
+
PluginLoaderManager.prototype.stop = function () {
|
|
54
|
+
clearInterval(this.interval);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
57
|
module.exports = new PluginLoaderManager();
|
package/lib/plugin/plugin.js
CHANGED
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2016 the WHATAP project authors. All rights reserved.
|
|
3
|
-
* Use of this source code is governed by a license that
|
|
4
|
-
* can be found in the LICENSE file.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
var fs = require('fs'),
|
|
8
|
-
path = require('path'),
|
|
9
|
-
MessageStep = require('../step/message-step'),
|
|
10
|
-
HashUtil = require('../util/hashutil'),
|
|
11
|
-
DataTextAgent = require('../data/datatext-agent');
|
|
12
|
-
|
|
13
|
-
const emptyFunc = function () {};
|
|
14
|
-
|
|
15
|
-
function PlugIn(script) {
|
|
16
|
-
this.script = script;
|
|
17
|
-
this.lastModified = 0;
|
|
18
|
-
this.process = emptyFunc;
|
|
19
|
-
this.ctx = null;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
PlugIn.prototype.create = function () {
|
|
23
|
-
var self = this;
|
|
24
|
-
var full_path = path.join(self.rootPath(), 'plugin', self.script);
|
|
25
|
-
fs.stat(full_path, function (err, stats) {
|
|
26
|
-
if(err) {
|
|
27
|
-
self.process = emptyFunc();
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
var lastModifiedDate = stats.mtime;
|
|
31
|
-
var inMillis = lastModifiedDate.getTime();
|
|
32
|
-
|
|
33
|
-
if(self.lastModified < inMillis) {
|
|
34
|
-
delete require.cache[require.resolve(full_path)];
|
|
35
|
-
self.lastModified = inMillis;
|
|
36
|
-
try{
|
|
37
|
-
var func = require(full_path);
|
|
38
|
-
if(typeof func === 'function') {
|
|
39
|
-
self.process = func;
|
|
40
|
-
} else {
|
|
41
|
-
self.process = emptyFunc;
|
|
42
|
-
}
|
|
43
|
-
} catch(e) {
|
|
44
|
-
self.process = emptyFunc;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
PlugIn.prototype._process = function () {
|
|
50
|
-
var self = this;
|
|
51
|
-
self.ctx = arguments[0];
|
|
52
|
-
if(typeof self.process === 'function') {
|
|
53
|
-
self.process.apply(this, arguments);
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
PlugIn.prototype.rootPath = function () {
|
|
57
|
-
return process.cwd();
|
|
58
|
-
};
|
|
59
|
-
PlugIn.prototype.print = function (str) {
|
|
60
|
-
console.log(str)
|
|
61
|
-
};
|
|
62
|
-
PlugIn.prototype.profile = function (msg) {
|
|
63
|
-
if(this.ctx == null) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
var hash = HashUtil.hashFromString(msg);
|
|
67
|
-
DataTextAgent.MESSAGE.add(hash, msg);
|
|
68
|
-
|
|
69
|
-
var step = new MessageStep();
|
|
70
|
-
step.hash = hash;
|
|
71
|
-
step.start_time = this.ctx.getElapsedTime();
|
|
72
|
-
this.ctx.profile.add(step);
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
module.exports = PlugIn;
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2016 the WHATAP project authors. All rights reserved.
|
|
3
|
+
* Use of this source code is governed by a license that
|
|
4
|
+
* can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
var fs = require('fs'),
|
|
8
|
+
path = require('path'),
|
|
9
|
+
MessageStep = require('../step/message-step'),
|
|
10
|
+
HashUtil = require('../util/hashutil'),
|
|
11
|
+
DataTextAgent = require('../data/datatext-agent');
|
|
12
|
+
|
|
13
|
+
const emptyFunc = function () {};
|
|
14
|
+
|
|
15
|
+
function PlugIn(script) {
|
|
16
|
+
this.script = script;
|
|
17
|
+
this.lastModified = 0;
|
|
18
|
+
this.process = emptyFunc;
|
|
19
|
+
this.ctx = null;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
PlugIn.prototype.create = function () {
|
|
23
|
+
var self = this;
|
|
24
|
+
var full_path = path.join(self.rootPath(), 'plugin', self.script);
|
|
25
|
+
fs.stat(full_path, function (err, stats) {
|
|
26
|
+
if(err) {
|
|
27
|
+
self.process = emptyFunc();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
var lastModifiedDate = stats.mtime;
|
|
31
|
+
var inMillis = lastModifiedDate.getTime();
|
|
32
|
+
|
|
33
|
+
if(self.lastModified < inMillis) {
|
|
34
|
+
delete require.cache[require.resolve(full_path)];
|
|
35
|
+
self.lastModified = inMillis;
|
|
36
|
+
try{
|
|
37
|
+
var func = require(full_path);
|
|
38
|
+
if(typeof func === 'function') {
|
|
39
|
+
self.process = func;
|
|
40
|
+
} else {
|
|
41
|
+
self.process = emptyFunc;
|
|
42
|
+
}
|
|
43
|
+
} catch(e) {
|
|
44
|
+
self.process = emptyFunc;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
PlugIn.prototype._process = function () {
|
|
50
|
+
var self = this;
|
|
51
|
+
self.ctx = arguments[0];
|
|
52
|
+
if(typeof self.process === 'function') {
|
|
53
|
+
self.process.apply(this, arguments);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
PlugIn.prototype.rootPath = function () {
|
|
57
|
+
return process.cwd();
|
|
58
|
+
};
|
|
59
|
+
PlugIn.prototype.print = function (str) {
|
|
60
|
+
console.log(str)
|
|
61
|
+
};
|
|
62
|
+
PlugIn.prototype.profile = function (msg) {
|
|
63
|
+
if(this.ctx == null) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
var hash = HashUtil.hashFromString(msg);
|
|
67
|
+
DataTextAgent.MESSAGE.add(hash, msg);
|
|
68
|
+
|
|
69
|
+
var step = new MessageStep();
|
|
70
|
+
step.hash = hash;
|
|
71
|
+
step.start_time = this.ctx.getElapsedTime();
|
|
72
|
+
this.ctx.profile.add(step);
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
module.exports = PlugIn;
|