What is this?
The ObjectBuffer
library provides an easy and flexible way to buffer properties on an Javascript object.
What?
Here an example: say you receive the temperature of a CPU via a WebSocket:
'temperature': 33
And now you want to buffer the temperature to display a chart, with minimal changes in existing code.
Instead of manually buffering / handling the property you can use ObjectBuffer
to get the job done:
1.) Create an ObjectBuffer instance
let ObjectBufferInstance = ;
2.) Adjust the server response
'^temperature[5]': 33
3.) Put it through the ObjectBuffer
packet = ObjectBufferInstance
packet
will now be:
'temperature': 33 0 0 0 0 // <- yay, buffered data!
done!
Installation
$ npm install object-buffer --save
Property naming
ObjectBuffer
only considers properties prefixed with a ^
.
The structure is as follows:
^{propName}[{size}]@{dataIDPropName}<handler>
^{propName}[{size}]#{dataIDValue}<handler>
- propName – the property name to be created.
- size - size of the buffer.
- optional: dataIDPropName - property name of the data id.
- optional: dataIDValue - value of the data id.
- optional: handler - custom handler function.
Data ID value
The data ID value is needed when you want to flush the contents of a buffer.
The ObjectBuffer
library will clear the buffer as soon as the dataID
value has changed.
Example
'^temp[3]#1': 1 // {'temp': [1, 0, 0]} ; dataID value is 1'^temp[3]#1': 2 // {'temp': [2, 1, 0]} ; dataID value is 1'^temp[3]#1': 3 // {'temp': [3, 2, 1]} ; dataID value is 1'^temp[3]#2': 9 // {'temp': [9, 0, 0]} ; dataID value is 2 -> buffer cleared
It is also possible to use the value of another property:
'^temp[3]@id': 1 'id': 1 // {'temp': [1, 0, 0]} ; dataID value is 1'^temp[3]@id': 2 'id': 1 // {'temp': [2, 1, 0]} ; dataID value is 1'^temp[3]@id': 3 'id': 1 // {'temp': [3, 2, 1]} ; dataID value is 1'^temp[3]@id': 9 'id': 2 // {'temp': [9, 0, 0]} ; dataID value is 2 -> buffer cleared
Handler function
It is also possible to define a custom handler which will be invoked every time the buffered property is updated:
Example
'^temp[3]#id<handleTemp>': 1
let ObjectBufferInstance = { let instance = requestedSize suggestedInitialValue this { return instance } }