PartitionStream.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  * PartitionStream.h
8  *
9  ****/
10 
11 #pragma once
12 
14 #include "Partition.h"
15 
16 namespace Storage
17 {
26 {
27 public:
28  PartitionStream(Partition partition, uint32_t offset, size_t size)
29  : partition(partition), startOffset(offset), size(size)
30  {
31  }
32 
33  PartitionStream(Partition partition) : partition(partition), startOffset(0), size(partition.size())
34  {
35  }
36 
37  int available() override
38  {
39  return size - readPos;
40  }
41 
42  uint16_t readMemoryBlock(char* data, int bufSize) override;
43 
44  int seekFrom(int offset, SeekOrigin origin) override;
45 
46  size_t write(const uint8_t* buffer, size_t size) override;
47 
48  bool isFinished() override
49  {
50  return available() <= 0;
51  }
52 
53 private:
54  Partition partition;
55  uint32_t startOffset;
56  size_t size;
57  uint32_t writePos{0};
58  uint32_t readPos{0};
59 };
60 
61 } // namespace Storage
uint16_t readMemoryBlock(char *data, int bufSize) override
Read a block of memory.
int seekFrom(int offset, SeekOrigin origin) override
Change position in stream.
size_t write(const uint8_t *buffer, size_t size) override
Write chars to stream.
SeekOrigin
Stream/file seek origins.
Definition: SeekOrigin.h:18
int available() override
Return the total length of the stream.
Definition: PartitionStream.h:37
bool isFinished() override
Check if all data has been read.
Definition: PartitionStream.h:48
Represents a flash partition.
Definition: Partition.h:78
PartitionStream(Partition partition)
Definition: PartitionStream.h:33
Stream operating directory on a Storage partition.
Definition: PartitionStream.h:25
Base class for read/write stream.
Definition: ReadWriteStream.h:19
Definition: FileDevice.h:23
PartitionStream(Partition partition, uint32_t offset, size_t size)
Definition: PartitionStream.h:28