This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
454 lines
12 KiB
454 lines
12 KiB
6 years ago
|
<!doctype html>
|
||
|
<html lang="en">
|
||
|
<head>
|
||
|
<title>Code coverage report for lib/readable_streambuffer.js</title>
|
||
|
<meta charset="utf-8">
|
||
|
<link rel="stylesheet" href="../prettify.css">
|
||
|
<link rel="stylesheet" href="../base.css">
|
||
|
<style type='text/css'>
|
||
|
div.coverage-summary .sorter {
|
||
|
background-image: url(../sort-arrow-sprite.png);
|
||
|
}
|
||
|
</style>
|
||
|
</head>
|
||
|
<body>
|
||
|
<div class="header high">
|
||
|
<h1>Code coverage report for <span class="entity">lib/readable_streambuffer.js</span></h1>
|
||
|
<h2>
|
||
|
Statements: <span class="metric">98.82% <small>(84 / 85)</small></span>
|
||
|
Branches: <span class="metric">94.34% <small>(50 / 53)</small></span>
|
||
|
Functions: <span class="metric">100% <small>(11 / 11)</small></span>
|
||
|
Lines: <span class="metric">100% <small>(83 / 83)</small></span>
|
||
|
Ignored: <span class="metric"><span class="ignore-none">none</span></span>
|
||
|
</h2>
|
||
|
<div class="path"><a href="../index.html">All files</a> » <a href="index.html">lib/</a> » readable_streambuffer.js</div>
|
||
|
</div>
|
||
|
<div class="body">
|
||
|
<pre><table class="coverage">
|
||
|
<tr><td class="line-count">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
|
||
|
75
|
||
|
76
|
||
|
77
|
||
|
78
|
||
|
79
|
||
|
80
|
||
|
81
|
||
|
82
|
||
|
83
|
||
|
84
|
||
|
85
|
||
|
86
|
||
|
87
|
||
|
88
|
||
|
89
|
||
|
90
|
||
|
91
|
||
|
92
|
||
|
93
|
||
|
94
|
||
|
95
|
||
|
96
|
||
|
97
|
||
|
98
|
||
|
99
|
||
|
100
|
||
|
101
|
||
|
102
|
||
|
103
|
||
|
104
|
||
|
105
|
||
|
106
|
||
|
107
|
||
|
108
|
||
|
109
|
||
|
110
|
||
|
111
|
||
|
112
|
||
|
113
|
||
|
114
|
||
|
115
|
||
|
116
|
||
|
117
|
||
|
118
|
||
|
119
|
||
|
120
|
||
|
121
|
||
|
122
|
||
|
123
|
||
|
124
|
||
|
125
|
||
|
126
|
||
|
127
|
||
|
128
|
||
|
129
|
||
|
130
|
||
|
131
|
||
|
132
|
||
|
133
|
||
|
134
|
||
|
135
|
||
|
136
|
||
|
137</td><td class="line-coverage"><span class="cline-any cline-yes">1</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">1</span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">268</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">268</span>
|
||
|
<span class="cline-any cline-yes">44</span>
|
||
|
<span class="cline-any cline-yes">44</span>
|
||
|
<span class="cline-any cline-yes">9</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">35</span>
|
||
|
<span class="cline-any cline-yes">35</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">44</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">44</span>
|
||
|
<span class="cline-any cline-yes">44</span>
|
||
|
<span class="cline-any cline-yes">44</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">268</span>
|
||
|
<span class="cline-any cline-yes">7</span>
|
||
|
<span class="cline-any cline-yes">7</span>
|
||
|
<span class="cline-any cline-yes">7</span>
|
||
|
<span class="cline-any cline-yes">6</span>
|
||
|
<span class="cline-any cline-yes">6</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">3</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">5</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">13</span>
|
||
|
<span class="cline-any cline-yes">2</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">2</span>
|
||
|
<span class="cline-any cline-yes">2</span>
|
||
|
<span class="cline-any cline-yes">2</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">13</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">13</span>
|
||
|
<span class="cline-any cline-yes">13</span>
|
||
|
<span class="cline-any cline-yes">4</span>
|
||
|
<span class="cline-any cline-yes">4</span>
|
||
|
<span class="cline-any cline-yes">4</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">9</span>
|
||
|
<span class="cline-any cline-yes">9</span>
|
||
|
<span class="cline-any cline-yes">9</span>
|
||
|
<span class="cline-any cline-yes">9</span>
|
||
|
<span class="cline-any cline-yes">9</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">13</span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">13</span>
|
||
|
<span class="cline-any cline-yes">2</span>
|
||
|
<span class="cline-any cline-yes">3</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">4</span>
|
||
|
<span class="cline-any cline-yes">4</span>
|
||
|
<span class="cline-any cline-yes">4</span>
|
||
|
<span class="cline-any cline-yes">4</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">15</span>
|
||
|
<span class="cline-any cline-yes">15</span>
|
||
|
<span class="cline-any cline-yes">14</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">6</span>
|
||
|
<span class="cline-any cline-yes">6</span>
|
||
|
<span class="cline-any cline-yes">6</span>
|
||
|
<span class="cline-any cline-yes">6</span>
|
||
|
<span class="cline-any cline-yes">6</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">7</span>
|
||
|
<span class="cline-any cline-yes">7</span>
|
||
|
<span class="cline-any cline-yes">1</span>
|
||
|
<span class="cline-any cline-yes">1</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-yes">5</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">12</span>
|
||
|
<span class="cline-any cline-neutral"> </span>
|
||
|
<span class="cline-any cline-yes">1</span>
|
||
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">var stream = require("stream"),
|
||
|
constants = require("./constants"),
|
||
|
util = require("util");
|
||
|
|
||
|
var ReadableStreamBuffer = module.exports = function(opts) {
|
||
|
var that = this;
|
||
|
|
||
|
stream.Stream.call(this);
|
||
|
|
||
|
opts = opts || {};
|
||
|
var frequency = opts.hasOwnProperty("frequency") ? opts.frequency : constants.DEFAULT_FREQUENCY;
|
||
|
var chunkSize = opts.chunkSize || constants.DEFAULT_CHUNK_SIZE;
|
||
|
var initialSize = opts.initialSize || constants.DEFAULT_INITIAL_SIZE;
|
||
|
var incrementAmount = opts.incrementAmount || constants.DEFAULT_INCREMENT_AMOUNT;
|
||
|
|
||
|
var size = 0;
|
||
|
var buffer = new Buffer(initialSize);
|
||
|
var encoding = null;
|
||
|
|
||
|
this.readable = true;
|
||
|
this.writable = false;
|
||
|
|
||
|
var sendData = function() {
|
||
|
var amount = Math.min(chunkSize, size);
|
||
|
|
||
|
if (amount > 0) {
|
||
|
var chunk = null;
|
||
|
if(encoding) {
|
||
|
chunk = buffer.toString(encoding, 0, amount);
|
||
|
}
|
||
|
else {
|
||
|
chunk = new Buffer(amount);
|
||
|
buffer.copy(chunk, 0, 0, amount);
|
||
|
}
|
||
|
|
||
|
that.emit("data", chunk);
|
||
|
|
||
|
<span class="missing-if-branch" title="else path not taken" >E</span>if(amount < buffer.length)
|
||
|
buffer.copy(buffer, 0, amount, size);
|
||
|
size -= amount;
|
||
|
}
|
||
|
|
||
|
if(size === 0 && !that.readable) {
|
||
|
that.emit("end");
|
||
|
that.emit("close");
|
||
|
if (sendData && sendData.interval) {
|
||
|
clearInterval(sendData.interval);
|
||
|
sendData.interval = null;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.size = function() {
|
||
|
return size;
|
||
|
};
|
||
|
|
||
|
this.maxSize = function() {
|
||
|
return buffer.length;
|
||
|
};
|
||
|
|
||
|
var increaseBufferIfNecessary = function(incomingDataSize) {
|
||
|
if((buffer.length - size) < incomingDataSize) {
|
||
|
var factor = Math.ceil((incomingDataSize - (buffer.length - size)) / incrementAmount);
|
||
|
|
||
|
var newBuffer = new Buffer(buffer.length + (incrementAmount * factor));
|
||
|
buffer.copy(newBuffer, 0, 0, size);
|
||
|
buffer = newBuffer;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.put = function(data, encoding) {
|
||
|
<span class="missing-if-branch" title="if path not taken" >I</span>if(!that.readable) <span class="cstat-no" title="statement not covered" >return;</span>
|
||
|
|
||
|
var wasEmpty = size === 0;
|
||
|
if(Buffer.isBuffer(data)) {
|
||
|
increaseBufferIfNecessary(data.length);
|
||
|
data.copy(buffer, size, 0);
|
||
|
size += data.length;
|
||
|
}
|
||
|
else {
|
||
|
data = data + "";
|
||
|
var dataSizeInBytes = Buffer.byteLength(data);
|
||
|
increaseBufferIfNecessary(dataSizeInBytes);
|
||
|
buffer.write(data, size, encoding || "utf8");
|
||
|
size += dataSizeInBytes;
|
||
|
}
|
||
|
|
||
|
if (wasEmpty && size > 0) {
|
||
|
this.emit('readable')
|
||
|
}
|
||
|
|
||
|
if (!this.isPaused && !frequency) {
|
||
|
while (size > 0) {
|
||
|
sendData();
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.pause = function() {
|
||
|
this.isPaused = true;
|
||
|
<span class="missing-if-branch" title="else path not taken" >E</span>if(sendData && sendData.interval) {
|
||
|
clearInterval(sendData.interval);
|
||
|
delete sendData.interval;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.resume = function() {
|
||
|
this.isPaused = false;
|
||
|
if(sendData && !sendData.interval && frequency > 0) {
|
||
|
sendData.interval = setInterval(sendData, frequency);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.destroy = function() {
|
||
|
that.emit("end");
|
||
|
if(sendData.interval) clearInterval(sendData.interval);
|
||
|
sendData = null;
|
||
|
that.readable = false;
|
||
|
that.emit("close");
|
||
|
};
|
||
|
|
||
|
this.destroySoon = function() {
|
||
|
that.readable = false;
|
||
|
if (!sendData.interval) {
|
||
|
that.emit("end");
|
||
|
that.emit("close");
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.setEncoding = function(_encoding) {
|
||
|
encoding = _encoding;
|
||
|
};
|
||
|
|
||
|
this.resume();
|
||
|
};
|
||
|
util.inherits(ReadableStreamBuffer, stream.Stream);
|
||
|
</pre></td></tr>
|
||
|
</table></pre>
|
||
|
|
||
|
</div>
|
||
|
<div class="footer">
|
||
|
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Wed Jul 01 2015 04:16:19 GMT+0000 (UTC)</div>
|
||
|
</div>
|
||
|
<script src="../prettify.js"></script>
|
||
|
<script>
|
||
|
window.onload = function () {
|
||
|
if (typeof prettyPrint === 'function') {
|
||
|
prettyPrint();
|
||
|
}
|
||
|
};
|
||
|
</script>
|
||
|
<script src="../sorter.js"></script>
|
||
|
</body>
|
||
|
</html>
|