MultiStream.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  * MultiStream.h
8  *
9  * Created on: Nov 7, 2018
10  * Author: slavey
11  *
12  ****/
13 
14 #pragma once
15 
16 #include "DataSourceStream.h"
17 
23 {
24 public:
26  {
27  delete stream;
28  }
29 
30  StreamType getStreamType() const override
31  {
32  return eSST_Unknown;
33  }
34 
35  int available() override
36  {
37  return -1;
38  }
39 
40  uint16_t readMemoryBlock(char* data, int bufSize) override;
41 
42  bool seek(int len) override;
43 
44  bool isFinished() override
45  {
46  return finished;
47  }
48 
49 protected:
55  virtual IDataSourceStream* getNextStream() = 0;
56 
57 private:
58  IDataSourceStream* stream = nullptr;
59  bool finished = false;
60 };
uint16_t readMemoryBlock(char *data, int bufSize) override
Read a block of memory.
virtual IDataSourceStream * getNextStream()=0
Inherited class must implement this.
Base class for read-only stream which generates output from multiple source streams.
Definition: MultiStream.h:22
Base class for read-only stream.
Definition: DataSourceStream.h:40
~MultiStream()
Definition: MultiStream.h:25
bool isFinished() override
Check if all data has been read.
Definition: MultiStream.h:44
Unknown data stream type.
Definition: DataSourceStream.h:33
int available() override
Return the total length of the stream.
Definition: MultiStream.h:35
StreamType
Data stream type.
Definition: DataSourceStream.h:26
bool seek(int len) override
Move read cursor.
StreamType getStreamType() const override
Get the stream type.
Definition: MultiStream.h:30