aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine/Recorder.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/Recorder.hpp')
-rw-r--r--src/engine/Recorder.hpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/engine/Recorder.hpp b/src/engine/Recorder.hpp
index c7f78f4..714b2a9 100644
--- a/src/engine/Recorder.hpp
+++ b/src/engine/Recorder.hpp
@@ -18,9 +18,10 @@
#ifndef MACHINA_RECORDER_HPP
#define MACHINA_RECORDER_HPP
+#include "raul/log.hpp"
#include "raul/Slave.hpp"
#include "raul/SharedPtr.hpp"
-#include "raul/EventRingBuffer.hpp"
+#include "raul/RingBuffer.hpp"
#include "machina/Machine.hpp"
@@ -33,7 +34,14 @@ public:
Recorder(size_t buffer_size, TimeUnit unit, double q, bool step);
inline void write(Raul::TimeStamp time, size_t size, const unsigned char* buf) {
- _record_buffer.write(time, size, buf);
+ if (_record_buffer.write_space() < (sizeof(TimeStamp) + sizeof(size_t) + size)) {
+ Raul::warn << "Record buffer overflow" << std::endl;
+ return;
+ } else {
+ _record_buffer.write(sizeof(TimeStamp), (uint8_t*)&time);
+ _record_buffer.write(sizeof(size_t), (uint8_t*)&size);
+ _record_buffer.write(size, buf);
+ }
}
SharedPtr<Machine> finish();
@@ -42,7 +50,7 @@ private:
virtual void _whipped();
TimeUnit _unit;
- Raul::EventRingBuffer _record_buffer;
+ Raul::RingBuffer _record_buffer;
SharedPtr<MachineBuilder> _builder;
};