1 #ifndef _RMTLD3_READER_H_ 2 #define _RMTLD3_READER_H_ 31 typename R::buffer_t::error_t
reset();
36 typename R::buffer_t::error_t
set(timespan &);
38 typename R::error_t
pull(
typename R::buffer_t::event_t &);
40 typename R::error_t
read(
typename R::buffer_t::event_t &);
42 typename R::error_t
read_next(
typename R::buffer_t::event_t &);
44 typename R::error_t
read_previous(
typename R::buffer_t::event_t &);
57 return R::buffer_t::OK;
60 template <
typename R,
typename P>
63 typename R::buffer_t::event_t e;
65 while (read_previous(e) == R::AVAILABLE) {
71 cursor = (size_t)(cursor - 1) % (R::buffer.size + 0);
75 return R::buffer_t::OK;
78 template <
typename R,
typename P>
81 typename R::buffer_t::event_t event_next;
85 if (R::buffer.read(e, cursor) != R::buffer.OK)
86 return R::BUFFER_READ;
89 cursor = (size_t)(cursor + 1) % (R::buffer.size + 0);
92 DEBUGV_RMTLD3(
"pull-> %d (%d,%d)\n", length(), cursor, R::top);
94 return (length() > 0) ? R::AVAILABLE : R::UNAVAILABLE;
97 template <
typename R,
typename P>
100 return (R::buffer.read(e, cursor) == R::buffer.OK) ? R::AVAILABLE
104 template <
typename R,
typename P>
108 return ((length() > 1 &&
109 (R::buffer.read(e, (
size_t)(cursor + 1) % (R::buffer.size + 0))) ==
115 template <
typename R,
typename P>
119 DEBUGV_RMTLD3(
"consumed=%d available=%d total=%d\n", consumed(), length(),
121 return ((consumed() > 0 &&
122 (R::buffer.read(e, (
size_t)(cursor - 1) % (R::buffer.size + 0))) ==
129 return (R::top >= cursor) ? R::top - cursor
130 : (R::buffer.size + 1) - (cursor - R::top);
134 return R::length() - length();
139 typename R::buffer_t::event_t e;
140 for (
int i = 0; i < R::buffer.size; i++) {
141 R::buffer.read(e, i);
145 DEBUGV_RMTLD3(
"bottom=%d top=%d timestamp=%d | cursor=%d \n", R::bottom,
146 R::top, R::timestamp, cursor);
149 #endif //_RMTLD3_READER_H_ size_t consumed() const
Definition: reader.h:133
P & lmem
Definition: reader.h:21
R::error_t pull(typename R::buffer_t::event_t &)
Definition: reader.h:79
R::error_t read_previous(typename R::buffer_t::event_t &)
Definition: reader.h:117
R::buffer_t::error_t set(timespan &)
Definition: reader.h:61
size_t cursor
Definition: reader.h:15
R::error_t read_next(typename R::buffer_t::event_t &)
Definition: reader.h:106
R::error_t read(typename R::buffer_t::event_t &)
Definition: reader.h:98
#define DEBUGV_RMTLD3(...)
Definition: rmtld3.h:50
R::buffer_t::error_t reset()
Definition: reader.h:53
size_t length() const
Definition: reader.h:128
RMTLD3_reader(const typename R::buffer_t &_buffer, P &_lmem)
Definition: reader.h:26
void debug() const
Definition: reader.h:137