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
9
#include "
openev/containers/queue.hpp
"
10
#include <atomic>
11
#include <cstddef>
12
#include <mutex>
13
#include <thread>
14
15
namespace
ev {
16
20
class
AbstractReader_
{
21
public
:
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
49
protected
:
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
59
private
:
60
void
threadFunction();
61
};
62
63
}
// namespace ev
64
65
#endif
// OPENEV_READERS_ABSTRACT_READER_HPP
ev::AbstractReader_::AbstractReader_
AbstractReader_(const std::size_t buffer_size, const bool use_threading)
Constructor for AbstractReader_.
Definition
abstract-reader.cpp:8
ev::AbstractReader_::data
Queue & data()
Returns a reference to the internal buffer (Queue) containing the data.
Definition
abstract-reader.hpp:40
queue.hpp
Persistent queue container for basic event structures.
ev::Queue
Queuei Queue
Definition
queue.hpp:117
modules
readers
include
openev
readers
abstract-reader.hpp
Generated by
1.16.1