UNPKG

2.24 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.bufferShiftEvent = exports.default = undefined;
7
8var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
9
10var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
11
12var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
13
14var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
15
16var _createClass2 = require('babel-runtime/helpers/createClass');
17
18var _createClass3 = _interopRequireDefault(_createClass2);
19
20var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
21
22var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
23
24var _inherits2 = require('babel-runtime/helpers/inherits');
25
26var _inherits3 = _interopRequireDefault(_inherits2);
27
28var _events = require('events');
29
30function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
32var RingBuffer = function (_EventEmitter) {
33 (0, _inherits3.default)(RingBuffer, _EventEmitter);
34
35 function RingBuffer(limit) {
36 (0, _classCallCheck3.default)(this, RingBuffer);
37
38 var _this = (0, _possibleConstructorReturn3.default)(this, (0, _getPrototypeOf2.default)(RingBuffer).call(this));
39
40 _this.records = [];
41 _this.limit = limit;
42 _this.bufferWasFull = false;
43 return _this;
44 }
45
46 (0, _createClass3.default)(RingBuffer, [{
47 key: 'write',
48 value: function write(log) {
49 this.records.push(log);
50 if (this.records.length > this.limit) {
51 this.records.shift();
52
53 if (!this.bufferWasFull) {
54 this.emit('buffer shift');
55 this.bufferWasFull = true;
56 }
57 return false;
58 }
59 return true;
60 }
61 }, {
62 key: 'read',
63 value: function read() {
64 this.bufferWasFull = false;
65 return this.records.shift();
66 }
67 }, {
68 key: 'isEmpty',
69 value: function isEmpty() {
70 return this.records.length === 0;
71 }
72 }]);
73 return RingBuffer;
74}(_events.EventEmitter);
75
76var bufferShiftEvent = 'buffer shift';
77
78exports.default = RingBuffer;
79exports.bufferShiftEvent = bufferShiftEvent;
80module.exports = exports['default'];
81//# sourceMappingURL=ringbuffer.js.map