LimitedMemoryStream.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  * LimitedMemoryStream.h
8  *
9  ****/
10 
11 #pragma once
12 
13 #include "ReadWriteStream.h"
14 
24 {
25 public:
26  LimitedMemoryStream(size_t length) : buffer(new uint8_t[length]), length(length)
27  {
28  }
29 
31  {
32  delete[] buffer;
33  }
34 
35  //Use base class documentation
36  StreamType getStreamType() const override
37  {
38  return eSST_Memory;
39  }
40 
45  int available() override
46  {
47  return writePos - readPos;
48  }
49 
50  uint16_t readMemoryBlock(char* data, int bufSize) override;
51 
52  //Use base class documentation
53  bool seek(int len) override;
54 
60  size_t write(const uint8_t* buffer, size_t size) override;
61 
62  bool isFinished() override
63  {
64  return (readPos >= length);
65  }
66 
67 private:
68  uint8_t* buffer = nullptr;
69  size_t writePos = 0;
70  size_t readPos = 0;
71  size_t length = 0;
72 };
73 
LimitedMemoryStream(size_t length)
Definition: LimitedMemoryStream.h:26
StreamType getStreamType() const override
Get the stream type.
Definition: LimitedMemoryStream.h:36
Memory data stream.
Definition: DataSourceStream.h:24
int length()
Return the total length of the stream.
Definition: DataSourceStream.h:131
uint16_t readMemoryBlock(char *data, int bufSize) override
Read a block of memory.
int available() override
Return the total length of the stream.
Definition: LimitedMemoryStream.h:45
bool seek(int len) override
Move read cursor.
size_t write(const uint8_t *buffer, size_t size) override
Write chars to stream.
StreamType
Data stream type.
Definition: DataSourceStream.h:22
~LimitedMemoryStream()
Definition: LimitedMemoryStream.h:30
bool isFinished() override
Check if all data has been read.
Definition: LimitedMemoryStream.h:62
Memory stream that stores limited number of bytes Once the limit is reached the stream will discard i...
Definition: LimitedMemoryStream.h:23
Base class for read/write stream.
Definition: ReadWriteStream.h:22