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
|
@@ -1,111 +1,111 @@
|
|
|
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 LinkedMap = require('../util/linkedmap'),
|
|
8
|
-
AnyList = require('../util/anylist'),
|
|
9
|
-
StatGeneralPack = require('../pack/stat-general-pack'),
|
|
10
|
-
DataPackSender = require('../data/datapack-sender'),
|
|
11
|
-
Logger = require('../logger'),
|
|
12
|
-
TimeCount = require('../pack/time-count');
|
|
13
|
-
|
|
14
|
-
const TABLE_MAX_SIZE = 5000;
|
|
15
|
-
|
|
16
|
-
function PK(domain, url) {
|
|
17
|
-
this.domain = domain || 0;
|
|
18
|
-
this.url = url || 0;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
PK.prototype.hashCode = function () {
|
|
22
|
-
var prime = 31;
|
|
23
|
-
var result = 1;
|
|
24
|
-
result = prime * result + this.domain;
|
|
25
|
-
result = prime * result + this.url;
|
|
26
|
-
return result;
|
|
27
|
-
};
|
|
28
|
-
PK.prototype.equals = function (other) {
|
|
29
|
-
if(this === other) {
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
if(other == null) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
return this.domain === other.domain && this.url === other.url;
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
function StatTranxDomain() {
|
|
40
|
-
if(typeof StatTranxDomain.instance === 'object') {
|
|
41
|
-
return StatTranxDomain.instance;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
this.table = new LinkedMap(TABLE_MAX_SIZE + 1 , 1).setMax(TABLE_MAX_SIZE);
|
|
45
|
-
this.table.create = function (key) {
|
|
46
|
-
if(this.size() >= TABLE_MAX_SIZE) {
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
return new TimeCount();
|
|
50
|
-
};
|
|
51
|
-
StatTranxDomain.instance = this;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
StatTranxDomain.prototype.getService = function (domain, url) {
|
|
55
|
-
return this.table.intern(new PK(domain,url));
|
|
56
|
-
};
|
|
57
|
-
StatTranxDomain.prototype.add = function (domain, url, time, isErr) {
|
|
58
|
-
try {
|
|
59
|
-
var rec = this.getService(domain, url);
|
|
60
|
-
if(rec) {
|
|
61
|
-
rec.count++;
|
|
62
|
-
if(isErr){
|
|
63
|
-
rec.error++;
|
|
64
|
-
}
|
|
65
|
-
rec.toime +=time;
|
|
66
|
-
}
|
|
67
|
-
} catch(e) {
|
|
68
|
-
Logger.printError("WHATAP-610", "StatTranxDomain add error", e, false);
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
StatTranxDomain.prototype.send = function (now) {
|
|
72
|
-
if(this.table.size() === 0) {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
var rsize=this.table.size();
|
|
76
|
-
var domain =new AnyList(AnyList.INT, rsize);
|
|
77
|
-
var url =new AnyList(AnyList.INT, rsize);
|
|
78
|
-
var count = new AnyList(AnyList.INT, rsize);
|
|
79
|
-
var error = new AnyList(AnyList.INT, rsize);
|
|
80
|
-
var time = new AnyList(AnyList.LONG, rsize);
|
|
81
|
-
|
|
82
|
-
var en = this.table.entries();
|
|
83
|
-
for (var i = 0; i<rsize && en.hasMoreElements(); i++) {
|
|
84
|
-
var ent = en.nextElement();
|
|
85
|
-
var k = ent.getKey();
|
|
86
|
-
var v = ent.getValue();
|
|
87
|
-
|
|
88
|
-
domain.put(i, k.domain);
|
|
89
|
-
url.put(i, k.url);
|
|
90
|
-
count.put(i, v.count);
|
|
91
|
-
error.put(i, v.error);
|
|
92
|
-
time.put(i, v.time);
|
|
93
|
-
}
|
|
94
|
-
this.table.clear();
|
|
95
|
-
|
|
96
|
-
var out = new StatGeneralPack();
|
|
97
|
-
out.put("domain", domain);
|
|
98
|
-
out.put("url", url);
|
|
99
|
-
out.put("count", count);
|
|
100
|
-
out.put("error", error);
|
|
101
|
-
out.put("time", time);
|
|
102
|
-
|
|
103
|
-
out.id = "dom";
|
|
104
|
-
out.time = now;
|
|
105
|
-
DataPackSender.sendPack(out);
|
|
106
|
-
};
|
|
107
|
-
StatTranxDomain.prototype.clear = function () {
|
|
108
|
-
this.table.clear();
|
|
109
|
-
};
|
|
110
|
-
|
|
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 LinkedMap = require('../util/linkedmap'),
|
|
8
|
+
AnyList = require('../util/anylist'),
|
|
9
|
+
StatGeneralPack = require('../pack/stat-general-pack'),
|
|
10
|
+
DataPackSender = require('../data/datapack-sender'),
|
|
11
|
+
Logger = require('../logger'),
|
|
12
|
+
TimeCount = require('../pack/time-count');
|
|
13
|
+
|
|
14
|
+
const TABLE_MAX_SIZE = 5000;
|
|
15
|
+
|
|
16
|
+
function PK(domain, url) {
|
|
17
|
+
this.domain = domain || 0;
|
|
18
|
+
this.url = url || 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
PK.prototype.hashCode = function () {
|
|
22
|
+
var prime = 31;
|
|
23
|
+
var result = 1;
|
|
24
|
+
result = prime * result + this.domain;
|
|
25
|
+
result = prime * result + this.url;
|
|
26
|
+
return result;
|
|
27
|
+
};
|
|
28
|
+
PK.prototype.equals = function (other) {
|
|
29
|
+
if(this === other) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
if(other == null) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
return this.domain === other.domain && this.url === other.url;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
function StatTranxDomain() {
|
|
40
|
+
if(typeof StatTranxDomain.instance === 'object') {
|
|
41
|
+
return StatTranxDomain.instance;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
this.table = new LinkedMap(TABLE_MAX_SIZE + 1 , 1).setMax(TABLE_MAX_SIZE);
|
|
45
|
+
this.table.create = function (key) {
|
|
46
|
+
if(this.size() >= TABLE_MAX_SIZE) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return new TimeCount();
|
|
50
|
+
};
|
|
51
|
+
StatTranxDomain.instance = this;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
StatTranxDomain.prototype.getService = function (domain, url) {
|
|
55
|
+
return this.table.intern(new PK(domain,url));
|
|
56
|
+
};
|
|
57
|
+
StatTranxDomain.prototype.add = function (domain, url, time, isErr) {
|
|
58
|
+
try {
|
|
59
|
+
var rec = this.getService(domain, url);
|
|
60
|
+
if(rec) {
|
|
61
|
+
rec.count++;
|
|
62
|
+
if(isErr){
|
|
63
|
+
rec.error++;
|
|
64
|
+
}
|
|
65
|
+
rec.toime +=time;
|
|
66
|
+
}
|
|
67
|
+
} catch(e) {
|
|
68
|
+
Logger.printError("WHATAP-610", "StatTranxDomain add error", e, false);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
StatTranxDomain.prototype.send = function (now) {
|
|
72
|
+
if(this.table.size() === 0) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
var rsize=this.table.size();
|
|
76
|
+
var domain =new AnyList(AnyList.INT, rsize);
|
|
77
|
+
var url =new AnyList(AnyList.INT, rsize);
|
|
78
|
+
var count = new AnyList(AnyList.INT, rsize);
|
|
79
|
+
var error = new AnyList(AnyList.INT, rsize);
|
|
80
|
+
var time = new AnyList(AnyList.LONG, rsize);
|
|
81
|
+
|
|
82
|
+
var en = this.table.entries();
|
|
83
|
+
for (var i = 0; i<rsize && en.hasMoreElements(); i++) {
|
|
84
|
+
var ent = en.nextElement();
|
|
85
|
+
var k = ent.getKey();
|
|
86
|
+
var v = ent.getValue();
|
|
87
|
+
|
|
88
|
+
domain.put(i, k.domain);
|
|
89
|
+
url.put(i, k.url);
|
|
90
|
+
count.put(i, v.count);
|
|
91
|
+
error.put(i, v.error);
|
|
92
|
+
time.put(i, v.time);
|
|
93
|
+
}
|
|
94
|
+
this.table.clear();
|
|
95
|
+
|
|
96
|
+
var out = new StatGeneralPack();
|
|
97
|
+
out.put("domain", domain);
|
|
98
|
+
out.put("url", url);
|
|
99
|
+
out.put("count", count);
|
|
100
|
+
out.put("error", error);
|
|
101
|
+
out.put("time", time);
|
|
102
|
+
|
|
103
|
+
out.id = "dom";
|
|
104
|
+
out.time = now;
|
|
105
|
+
DataPackSender.sendPack(out);
|
|
106
|
+
};
|
|
107
|
+
StatTranxDomain.prototype.clear = function () {
|
|
108
|
+
this.table.clear();
|
|
109
|
+
};
|
|
110
|
+
|
|
111
111
|
module.exports = new StatTranxDomain();
|
|
@@ -1,112 +1,112 @@
|
|
|
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 LinkedMap = require('../util/linkedmap'),
|
|
8
|
-
AnyList = require('../util/anylist'),
|
|
9
|
-
StatGeneralPack = require('../pack/stat-general-pack'),
|
|
10
|
-
DataPackSender = require('../data/datapack-sender'),
|
|
11
|
-
Logger = require('../logger'),
|
|
12
|
-
TimeCount = require('../pack/time-count');
|
|
13
|
-
|
|
14
|
-
const TABLE_MAX_SIZE = 5000;
|
|
15
|
-
|
|
16
|
-
function PK(referer, url) {
|
|
17
|
-
this.referer = referer || 0;
|
|
18
|
-
this.url = url || 0;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
PK.prototype.hashCode = function () {
|
|
22
|
-
var prime = 31;
|
|
23
|
-
var result = 1;
|
|
24
|
-
result = prime * result + this.referer;
|
|
25
|
-
result = prime * result + this.url;
|
|
26
|
-
return result;
|
|
27
|
-
};
|
|
28
|
-
PK.prototype.equals = function (other) {
|
|
29
|
-
if(this === other) {
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
if(other == null) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
return this.referer === other.referer && this.url === other.url;
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
function StatTranxReferer() {
|
|
40
|
-
if(typeof StatTranxReferer.instance === 'object') {
|
|
41
|
-
return StatTranxReferer.instance;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
this.table = new LinkedMap(TABLE_MAX_SIZE + 1 , 1).setMax(TABLE_MAX_SIZE);
|
|
45
|
-
this.table.create = function (key) {
|
|
46
|
-
if(this.size() >= TABLE_MAX_SIZE) {
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
return new TimeCount();
|
|
50
|
-
};
|
|
51
|
-
StatTranxReferer.instance = this;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
StatTranxReferer.prototype.getService = function (referer, url) {
|
|
55
|
-
return this.table.intern(new PK(referer,url));
|
|
56
|
-
};
|
|
57
|
-
StatTranxReferer.prototype.add = function (referer, url, time, isErr) {
|
|
58
|
-
try {
|
|
59
|
-
var rec = this.getService(referer, url);
|
|
60
|
-
if(rec) {
|
|
61
|
-
rec.count++;
|
|
62
|
-
if(isErr){
|
|
63
|
-
rec.error++;
|
|
64
|
-
}
|
|
65
|
-
rec.time +=time;
|
|
66
|
-
}
|
|
67
|
-
} catch(e) {
|
|
68
|
-
Logger.printError("WHATAP-610", "StatTranxReferer add error", e, false);
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
StatTranxReferer.prototype.send = function (now) {
|
|
72
|
-
if(this.table.size() === 0) {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
var rsize=this.table.size();
|
|
76
|
-
var referer =new AnyList(AnyList.INT, rsize);
|
|
77
|
-
var url =new AnyList(AnyList.INT, rsize);
|
|
78
|
-
var count = new AnyList(AnyList.INT, rsize);
|
|
79
|
-
var error = new AnyList(AnyList.INT, rsize);
|
|
80
|
-
var time = new AnyList(AnyList.LONG, rsize);
|
|
81
|
-
|
|
82
|
-
var en = this.table.entries();
|
|
83
|
-
for (var i = 0; i<rsize && en.hasMoreElements(); i++) {
|
|
84
|
-
var ent = en.nextElement();
|
|
85
|
-
var k = ent.getKey();
|
|
86
|
-
var v = ent.getValue();
|
|
87
|
-
|
|
88
|
-
referer.put(i, k.referer);
|
|
89
|
-
url.put(i, k.url);
|
|
90
|
-
count.put(i, v.count);
|
|
91
|
-
error.put(i, v.error);
|
|
92
|
-
time.put(i, v.time);
|
|
93
|
-
}
|
|
94
|
-
this.table.clear();
|
|
95
|
-
|
|
96
|
-
var out = new StatGeneralPack();
|
|
97
|
-
|
|
98
|
-
out.put("referer", referer);
|
|
99
|
-
out.put("url", url);
|
|
100
|
-
out.put("count", count);
|
|
101
|
-
out.put("error", error);
|
|
102
|
-
out.put("time", time);
|
|
103
|
-
|
|
104
|
-
out.id = "referer";
|
|
105
|
-
out.time = now;
|
|
106
|
-
DataPackSender.sendPack(out);
|
|
107
|
-
};
|
|
108
|
-
StatTranxReferer.prototype.clear = function () {
|
|
109
|
-
this.table.clear();
|
|
110
|
-
};
|
|
111
|
-
|
|
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 LinkedMap = require('../util/linkedmap'),
|
|
8
|
+
AnyList = require('../util/anylist'),
|
|
9
|
+
StatGeneralPack = require('../pack/stat-general-pack'),
|
|
10
|
+
DataPackSender = require('../data/datapack-sender'),
|
|
11
|
+
Logger = require('../logger'),
|
|
12
|
+
TimeCount = require('../pack/time-count');
|
|
13
|
+
|
|
14
|
+
const TABLE_MAX_SIZE = 5000;
|
|
15
|
+
|
|
16
|
+
function PK(referer, url) {
|
|
17
|
+
this.referer = referer || 0;
|
|
18
|
+
this.url = url || 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
PK.prototype.hashCode = function () {
|
|
22
|
+
var prime = 31;
|
|
23
|
+
var result = 1;
|
|
24
|
+
result = prime * result + this.referer;
|
|
25
|
+
result = prime * result + this.url;
|
|
26
|
+
return result;
|
|
27
|
+
};
|
|
28
|
+
PK.prototype.equals = function (other) {
|
|
29
|
+
if(this === other) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
if(other == null) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
return this.referer === other.referer && this.url === other.url;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
function StatTranxReferer() {
|
|
40
|
+
if(typeof StatTranxReferer.instance === 'object') {
|
|
41
|
+
return StatTranxReferer.instance;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
this.table = new LinkedMap(TABLE_MAX_SIZE + 1 , 1).setMax(TABLE_MAX_SIZE);
|
|
45
|
+
this.table.create = function (key) {
|
|
46
|
+
if(this.size() >= TABLE_MAX_SIZE) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return new TimeCount();
|
|
50
|
+
};
|
|
51
|
+
StatTranxReferer.instance = this;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
StatTranxReferer.prototype.getService = function (referer, url) {
|
|
55
|
+
return this.table.intern(new PK(referer,url));
|
|
56
|
+
};
|
|
57
|
+
StatTranxReferer.prototype.add = function (referer, url, time, isErr) {
|
|
58
|
+
try {
|
|
59
|
+
var rec = this.getService(referer, url);
|
|
60
|
+
if(rec) {
|
|
61
|
+
rec.count++;
|
|
62
|
+
if(isErr){
|
|
63
|
+
rec.error++;
|
|
64
|
+
}
|
|
65
|
+
rec.time +=time;
|
|
66
|
+
}
|
|
67
|
+
} catch(e) {
|
|
68
|
+
Logger.printError("WHATAP-610", "StatTranxReferer add error", e, false);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
StatTranxReferer.prototype.send = function (now) {
|
|
72
|
+
if(this.table.size() === 0) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
var rsize=this.table.size();
|
|
76
|
+
var referer =new AnyList(AnyList.INT, rsize);
|
|
77
|
+
var url =new AnyList(AnyList.INT, rsize);
|
|
78
|
+
var count = new AnyList(AnyList.INT, rsize);
|
|
79
|
+
var error = new AnyList(AnyList.INT, rsize);
|
|
80
|
+
var time = new AnyList(AnyList.LONG, rsize);
|
|
81
|
+
|
|
82
|
+
var en = this.table.entries();
|
|
83
|
+
for (var i = 0; i<rsize && en.hasMoreElements(); i++) {
|
|
84
|
+
var ent = en.nextElement();
|
|
85
|
+
var k = ent.getKey();
|
|
86
|
+
var v = ent.getValue();
|
|
87
|
+
|
|
88
|
+
referer.put(i, k.referer);
|
|
89
|
+
url.put(i, k.url);
|
|
90
|
+
count.put(i, v.count);
|
|
91
|
+
error.put(i, v.error);
|
|
92
|
+
time.put(i, v.time);
|
|
93
|
+
}
|
|
94
|
+
this.table.clear();
|
|
95
|
+
|
|
96
|
+
var out = new StatGeneralPack();
|
|
97
|
+
|
|
98
|
+
out.put("referer", referer);
|
|
99
|
+
out.put("url", url);
|
|
100
|
+
out.put("count", count);
|
|
101
|
+
out.put("error", error);
|
|
102
|
+
out.put("time", time);
|
|
103
|
+
|
|
104
|
+
out.id = "referer";
|
|
105
|
+
out.time = now;
|
|
106
|
+
DataPackSender.sendPack(out);
|
|
107
|
+
};
|
|
108
|
+
StatTranxReferer.prototype.clear = function () {
|
|
109
|
+
this.table.clear();
|
|
110
|
+
};
|
|
111
|
+
|
|
112
112
|
module.exports = new StatTranxReferer();
|
|
@@ -1,48 +1,48 @@
|
|
|
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 IntIntMap = require('../util/intint-map'),
|
|
8
|
-
StatUserAgentPack = require('../pack/statuseragent-pack'),
|
|
9
|
-
DataPackSender = require('../data/datapack-sender'),
|
|
10
|
-
Long = require('long');
|
|
11
|
-
|
|
12
|
-
const TABLE_MAX_SIZE = 1000;
|
|
13
|
-
|
|
14
|
-
function StatUserAgent() {
|
|
15
|
-
if(typeof StatUserAgent.instance === 'object') {
|
|
16
|
-
return StatUserAgent.instance;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
this.table = new StatUserAgentPack();
|
|
20
|
-
this.table.userAgents.setMax(TABLE_MAX_SIZE);
|
|
21
|
-
|
|
22
|
-
StatUserAgent.instance = this;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
StatUserAgent.prototype.incUserAgent = function (userAgent) {
|
|
26
|
-
if(userAgent === 0) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
this.table.userAgents.addNoOver(userAgent, 1);
|
|
30
|
-
};
|
|
31
|
-
StatUserAgent.prototype.send = function (now) {
|
|
32
|
-
if(this.table.userAgents.size() === 0) {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
var p = this.table;
|
|
37
|
-
p.time = now;
|
|
38
|
-
DataPackSender.sendStatUserAgentPack(p);
|
|
39
|
-
|
|
40
|
-
this.table = new StatUserAgentPack();
|
|
41
|
-
this.table.userAgents.setMax(TABLE_MAX_SIZE);
|
|
42
|
-
|
|
43
|
-
};
|
|
44
|
-
StatUserAgent.prototype.clear = function () {
|
|
45
|
-
this.table.userAgents.clear();
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
module.exports = new StatUserAgent();
|
|
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 IntIntMap = require('../util/intint-map'),
|
|
8
|
+
StatUserAgentPack = require('../pack/statuseragent-pack'),
|
|
9
|
+
DataPackSender = require('../data/datapack-sender'),
|
|
10
|
+
Long = require('long');
|
|
11
|
+
|
|
12
|
+
const TABLE_MAX_SIZE = 1000;
|
|
13
|
+
|
|
14
|
+
function StatUserAgent() {
|
|
15
|
+
if(typeof StatUserAgent.instance === 'object') {
|
|
16
|
+
return StatUserAgent.instance;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
this.table = new StatUserAgentPack();
|
|
20
|
+
this.table.userAgents.setMax(TABLE_MAX_SIZE);
|
|
21
|
+
|
|
22
|
+
StatUserAgent.instance = this;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
StatUserAgent.prototype.incUserAgent = function (userAgent) {
|
|
26
|
+
if(userAgent === 0) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this.table.userAgents.addNoOver(userAgent, 1);
|
|
30
|
+
};
|
|
31
|
+
StatUserAgent.prototype.send = function (now) {
|
|
32
|
+
if(this.table.userAgents.size() === 0) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
var p = this.table;
|
|
37
|
+
p.time = now;
|
|
38
|
+
DataPackSender.sendStatUserAgentPack(p);
|
|
39
|
+
|
|
40
|
+
this.table = new StatUserAgentPack();
|
|
41
|
+
this.table.userAgents.setMax(TABLE_MAX_SIZE);
|
|
42
|
+
|
|
43
|
+
};
|
|
44
|
+
StatUserAgent.prototype.clear = function () {
|
|
45
|
+
this.table.userAgents.clear();
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
module.exports = new StatUserAgent();
|