From 05d5ee02795dcde780cc8a07431a38854c87b5cb Mon Sep 17 00:00:00 2001
From: Ringo Watanabe
Date: Wed, 5 Sep 2018 08:23:55 +0100
Subject: [PATCH] Changed superbuffer to rollover and client improvements
---
config.js | 2 +-
graphBuffer.js | 19 ++++++++++++++-----
main.js | 10 +++-------
www/index.html | 2 +-
www/js/renderer.js | 27 +++++++++++++++++++--------
5 files changed, 38 insertions(+), 22 deletions(-)
diff --git a/config.js b/config.js
index 55c2ab8..ce04415 100644
--- a/config.js
+++ b/config.js
@@ -11,7 +11,7 @@ var config = {
BACKEND_SOCKET: "./backend/rtbw.sock",
BUFFER_PURGE_TIME: 1800000, //30 minutes
- SUPERBUFFER_PURGE_TIME: 43200000 //12 hours
+ SUPERBUFFER_SIZE: 24
};
module.exports = config;
diff --git a/graphBuffer.js b/graphBuffer.js
index 9a1829c..7ddcdf8 100644
--- a/graphBuffer.js
+++ b/graphBuffer.js
@@ -2,14 +2,20 @@ const Cycle = require("./cycle").Cycle;
const logger = require("./logger");
class CycleBuffer {
- constructor(purgeTime) {
+ constructor(purgeTime, fixed=false) {
this.time = purgeTime;
this.buffer=[];
var th = this;
this.onclear = function(sp) {};
- this.inter = setInterval(function() {
- th.purge();
- }, this.time);
+
+ if(fixed) {
+ this.fixed=true;
+ }
+ else {
+ this.inter = setInterval(function() {
+ th.purge();
+ }, this.time);
+ }
}
purge()
@@ -20,6 +26,8 @@ class CycleBuffer {
add(cycle) {
this.buffer.push(cycle);
+ if(this.fixed && this.buffer.length>=this.time)
+ this.buffer.shift();
}
all() {
@@ -31,7 +39,8 @@ class CycleBuffer {
return ret;
}
close() {
- clearInterval(this.inter);
+ if(this.inter)
+ clearInterval(this.inter);
this.buffer.length=0;
}
}
diff --git a/main.js b/main.js
index 5f82465..c4e46e8 100644
--- a/main.js
+++ b/main.js
@@ -75,7 +75,7 @@ var allTime = new _cycle.Cycle();
var allTimeAverage = new _cycle.Cycle();
var allTimeAverageN = 0;
var buffer = new CycleBuffer(config.BUFFER_PURGE_TIME);
-var superbuffer = new CycleBuffer(config.SUPERBUFFER_PURGE_TIME);
+var superbuffer = new CycleBuffer(config.SUPERBUFFER_SIZE, true);
var beInfo = null;
var upSince = new Date();
@@ -96,7 +96,7 @@ superbuffer.onclear = function(bu) {
};
logger.log("Buffer set to clear every "+(config.BUFFER_PURGE_TIME/1000/60)+" minutes");
-logger.log("Superbuffer set to clear every "+(config.SUPERBUFFER_PURGE_TIME/1000/60)+" minutes");
+logger.log("Superbuffer set to fill at "+(config.SUPERBUFFER_SIZE)+" entries");
process.execFile(config.PYTHON_EXECUTABLE, [config.RTBWCTL_FILENAME, config.BACKEND_SOCKET, "info"], function(error,stdout,stderr) {
@@ -128,7 +128,7 @@ var server = http.createServer(function(req, res) {
res.end(JSON.stringify({
interval: config.POLL_INTERVAL,
purgeInterval: config.BUFFER_PURGE_TIME,
- superPurgeInterval: config.SUPERBUFFER_PURGE_TIME,
+ superPurgeInterval: config.SUPERBUFFER_SIZE,
backendInterval: beInfo.timeout,
board: beInfo.board,
upSince: upSince
@@ -213,10 +213,6 @@ wss.on('request', function(req) { //why isn't this getting called?
});
wss.on('connection', function (ws) {
-
- /*ws.on('message', function (message) {
- ws.send("Received: " + message);
- });*/
var f = function(cycle) {
ws.send(JSON.stringify({type: "cycle", data: cycle}));
};
diff --git a/www/index.html b/www/index.html
index 492fb17..c6c4092 100644
--- a/www/index.html
+++ b/www/index.html
@@ -19,7 +19,7 @@
Cycle interval:
Archiver interval:
Server buffer purge interval:
- Server aggregate buffer purge interval:
+ Server aggregate buffer max size:
Total uptime stats
diff --git a/www/js/renderer.js b/www/js/renderer.js
index 10910d1..2093cfa 100644
--- a/www/js/renderer.js
+++ b/www/js/renderer.js
@@ -31,6 +31,8 @@ const maxEntries= client.preloadCycles;
var cycleTableRollover = null;
var sessionAverageRollover = null;
+var cyTotal=0;
+
function setStatus(str)
{
$('#status').text(str);
@@ -74,7 +76,7 @@ function createNewCandle(charts, close)
function createNewLinePoint(charts, data)
{
- if(charts.agline.data.datasets[0].data[charts.agline.data.datasets[0].data.length-1]) {
+ if(charts.agline.data.datasets[0].data[charts.agline.data.datasets[0].data.length-1] !==undefined) {
charts.agline.data.datasets[0].data[charts.agline.data.datasets[0].data.length-1] = data.number;
charts.agline.data.datasets[1].data[charts.agline.data.datasets[0].data.length-1] = data.number/data._cycles;
}
@@ -305,12 +307,18 @@ function graphCycle(data, charts,update=true)
//Line
//Total posts
- if(charts.agline.data.datasets[0].data[charts.agline.data.datasets[0].data.length-1]) {
- charts.agline.data.datasets[0].data[charts.agline.data.datasets[0].data.length-1] += data.number;
- if(client.superBuffer.length>0)
- charts.agline.data.datasets[1].data[charts.agline.data.datasets[0].data.length-1] = charts.agline.data.datasets[0].data[charts.agline.data.datasets[0].data.length-1] /client.superBuffer[client.superBuffer.length-1]._cycles;
- if(update)
+ var lgc = charts.agline.data.datasets[0].data[charts.agline.data.datasets[0].data.length-1];
+ //console.log(lgc+" "+data.number);
+ if(lgc || lgc===0) {
+ charts.agline.data.datasets[0].data[charts.agline.data.datasets[0].data.length-1]= lgc+ data.number;
+ if(cyTotal>0)
+ {
+ charts.agline.data.datasets[1].data[charts.agline.data.datasets[1].data.length-1] = (lgc+ data.number)/cyTotal;
+ }
+ if(update) {
charts.agline.update();
+ //console.log("Update to "+charts.agline.data.datasets[0].data[charts.agline.data.datasets[0].data.length-1]);
+ }
}
}
@@ -782,13 +790,15 @@ function begin() {
client.superGrapher = function(data) {
//TODO: new supercycle
- //add_new_candle(g_chartsSuper(), data);
+ //add_new_candle(g_chartsSuper(), data)
+ cyTotal = 0;
createNewCandle(g_chartsSuper(), data._candle.number.c);
createNewLinePoint(g_chartsSuper(), data);
};
client.start(function(data) {
//on message function
+ cyTotal += 1;
updateAllTime(g_charts(),data);
graphCycle(data, g_chartsSession());
@@ -797,7 +807,7 @@ function begin() {
$('#interval').text(client.info.interval+" ms");
$('#binterval').text(client.info.backendInterval+" s");
$('#pinterval').text((client.info.purgeInterval/1000/60).toFixed(2)+" m");
- $('#spinterval').text((client.info.superPurgeInterval/1000/60/60).toFixed(2)+" h");
+ $('#spinterval').text( (((client.info.purgeInterval/1000/60)*client.info.superPurgeInterval)/60).toFixed(2)+" h");
$('#board').text(client.info.board);
$('#uptime').text(fixtime2(new Date(client.info.upSince)));
$('#s_started').text(fixtime2(new Date()));
@@ -902,6 +912,7 @@ function begin() {
chartAGLine.data.labels.shift();
chartAGLine.data.datasets[0].data.shift();
+ chartAGLine.data.datasets[1].data.shift();
chartAGLine.update();
});