LimitedWriteStream.h
Go to the documentation of this file.
1 /****
2  * Sming Framework Project - Open Source framework for high efficiency native ESP8266 development.
3  * Created 2015 by Skurydin Alexey
4  * http://github.com/SmingHub/Sming
5  * All files of the Sming Core are provided under the LGPL v3 license.
6  *
7  * LimitedWriteStream.h
8  *
9  * @author: 2021 - Slavey Karadzhov <slav@attachix.com>
10  *
11  ****/
12 
13 #pragma once
14 
16 
23 {
24 public:
25  LimitedWriteStream(ReadWriteStream* source, size_t maxBytes) : StreamWrapper(source), maxBytes(maxBytes)
26  {
27  }
28 
29  bool isValid()
30  {
31  return writePos <= maxBytes;
32  }
33 
43  size_t write(const uint8_t* buffer, size_t size) override
44  {
45  writePos += size;
46  if(writePos > maxBytes) {
47  return size;
48  }
49 
50  return getSource()->write(buffer, size);
51  }
52 
53 private:
54  const size_t maxBytes;
55  size_t writePos{0};
56 };
A stream wrapper class that limits the number of bytes that can be written. Helpful when writing on a...
Definition: LimitedWriteStream.h:22
An abstract class that provides a wrapper around a stream.
Definition: StreamWrapper.h:22
ReadWriteStream * getSource() const
Definition: StreamWrapper.h:49
bool isValid()
Definition: LimitedWriteStream.h:39
StreamWrapper(ReadWriteStream *source)
Definition: StreamWrapper.h:35
size_t write(const uint8_t *buffer, size_t size) override
Writes characters from a buffer to output stream.
Definition: LimitedWriteStream.h:53
LimitedWriteStream(ReadWriteStream *source, size_t maxBytes)
Definition: LimitedWriteStream.h:35
size_t write(uint8_t charToWrite) override
From Stream class: We don't write using this stream.
Definition: ReadWriteStream.h:30
Base class for read/write stream.
Definition: ReadWriteStream.h:19