Arduino DLNA Server
Loading...
Searching...
No Matches
RetryPrint.h
Go to the documentation of this file.
1#pragma once
2#include "Print.h"
3
4namespace tiny_dlna {
5
22class RetryPrint : public Print {
23 public:
24 RetryPrint(Print& out, int maxRetries = 3)
26
27 size_t write(uint8_t ch) override { return write(&ch, 1); }
28
29 size_t write(const uint8_t* buffer, size_t size) override {
30 size_t totalWritten = 0;
31 int retries = 0;
32 while (totalWritten < size && retries < maxRetries) {
33 size_t written = out.write(buffer + totalWritten, size - totalWritten);
34 if (written == 0) {
35 ++retries;
36 delay(10); // Small delay before retry
37 } else {
38 totalWritten += written;
39 retries = 0; // Reset retries on progress
40 }
41 }
42 return totalWritten;
43 }
44
45 protected:
46 Print& out;
48};
49
50} // namespace tiny_dlna
Print wrapper that retries writing unwritten data.
Definition: RetryPrint.h:22
int maxRetries
Definition: RetryPrint.h:47
size_t write(uint8_t ch) override
Definition: RetryPrint.h:27
size_t write(const uint8_t *buffer, size_t size) override
Definition: RetryPrint.h:29
RetryPrint(Print &out, int maxRetries=3)
Definition: RetryPrint.h:24
Print & out
Definition: RetryPrint.h:46
Definition: Allocator.h:13