Add a general, reusable ringbuffer.

This commit is contained in:
Herbert Wolverson
2024-12-03 09:42:32 -06:00
parent 5e260fe9f3
commit 87be4146ee

30
helpers/ringbuffer.js Normal file
View File

@@ -0,0 +1,30 @@
export class RingBuffer {
constructor(size) {
this.size = size;
let data = [];
for (let i=0; i<size; i++) {
data.push([0, 0]);
}
this.head = 0;
this.data = data;
}
push(recent, completed) {
this.data[this.head] = [recent, completed];
this.head += 1;
this.head %= this.size;
}
series() {
let result = [[], []];
for (let i=this.head; i<this.size; i++) {
result[0].push(this.data[i][0]);
result[1].push(this.data[i][1]);
}
for (let i=0; i<this.head; i++) {
result[0].push(this.data[i][0]);
result[1].push(this.data[i][1]);
}
return result;
}
}