25template <
typename T,
template<
typename>
class BufferType>
36 size_t max_components = 0) {
42 for (
size_t i = 0; i < initial_components; i++) {
44 LOGE(
"Failed to allocate initial buffer component %d", (
int)i);
70 bool read(T &result)
override {
96 bool peek(T &result)
override {
149 if (
isEmpty() || data ==
nullptr) {
156 while (remaining > 0) {
166 for (
size_t i = 0; i < local_pos; i++) {
172 int actually_read =
buffer_components[buffer_idx]->readArray(data + total_read, can_read);
175 total_read += actually_read;
177 remaining -= actually_read;
180 if (actually_read < can_read) {
199 if (data ==
nullptr) {
203 int total_written = 0;
206 while (remaining > 0) {
223 for (
size_t i = 0; i < local_pos; i++) {
228 int actually_written =
buffer_components[buffer_idx]->writeArray(data + total_written, can_write);
231 total_written += actually_written;
233 remaining -= actually_written;
236 if (actually_written < can_write) {
241 return total_written;
282 return existing_space + 1000000;
285 return existing_space;
439 if (new_buffer ==
nullptr) {
440 LOGE(
"Failed to allocate new buffer component");
#define LOGW(...)
Definition AudioLoggerIDF.h:29
#define TRACED()
Definition AudioLoggerIDF.h:31
#define LOGI(...)
Definition AudioLoggerIDF.h:28
#define LOGE(...)
Definition AudioLoggerIDF.h:30