OpenEV
Extending OpenCV to event-based vision
Loading...
Searching...
No Matches
abstract-reader.hpp
1
6#ifndef OPENEV_READERS_ABSTRACT_READER_HPP
7#define OPENEV_READERS_ABSTRACT_READER_HPP
8
10#include <atomic>
11#include <cstddef>
12#include <mutex>
13#include <thread>
14
15namespace ev {
16
21public:
23 virtual ~AbstractReader_();
24 AbstractReader_(const AbstractReader_ &) = delete;
25 AbstractReader_(AbstractReader_ &&) noexcept = delete;
26 AbstractReader_ &operator=(const AbstractReader_ &) = delete;
27 AbstractReader_ &operator=(AbstractReader_ &&) noexcept = delete;
29
34 AbstractReader_(const std::size_t buffer_size, const bool use_threading);
35
40 inline Queue &data() {
41 if(!eof_ && buffer_.size() < bufferSize_) {
42 if(!updateBuffer_()) {
43 eof_.store(true);
44 }
45 }
46 return buffer_;
47 }
48
49protected:
50 const std::size_t bufferSize_;
51 std::thread thread_;
52 Queue buffer_;
53 std::mutex bufferMutex_;
54 std::atomic<bool> threadRunning_{};
55 std::atomic<bool> eof_{false};
56
57 virtual bool updateBuffer_() = 0;
58
59private:
60 void threadFunction();
61};
62
63} // namespace ev
64
65#endif // OPENEV_READERS_ABSTRACT_READER_HPP
AbstractReader_(const std::size_t buffer_size, const bool use_threading)
Constructor for AbstractReader_.
Definition abstract-reader.cpp:8
Queue & data()
Returns a reference to the internal buffer (Queue) containing the data.
Definition abstract-reader.hpp:40
Persistent queue container for basic event structures.
Queuei Queue
Definition queue.hpp:117