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 
19 {
20 public:
22  {
23  delete stream;
24  delete nextStream;
25  }
26 
27  StreamType getStreamType() const override
28  {
29  return eSST_Unknown;
30  }
31 
36  int available() override
37  {
38  return -1;
39  }
40 
41  //Use base class documentation
42  uint16_t readMemoryBlock(char* data, int bufSize) override;
43 
44  //Use base class documentation
45  bool seek(int len) override;
46 
47  //Use base class documentation
48  bool isFinished() override;
49 
50 protected:
51  virtual IDataSourceStream* getNextStream() = 0;
52 
53  virtual bool onCompleted()
54  {
55  return false;
56  }
57 
58  virtual void onNextStream()
59  {
61  nextStream = nullptr;
62  }
63 
64 protected:
67 
68  bool finished = false;
69 };
uint16_t readMemoryBlock(char *data, int bufSize) override
Read a block of memory.
virtual IDataSourceStream * getNextStream()=0
Definition: MultiStream.h:18
Base class for data source stream.
Definition: DataSourceStream.h:39
IDataSourceStream * stream
Definition: MultiStream.h:65
~MultiStream()
Definition: MultiStream.h:21
IDataSourceStream * nextStream
Definition: MultiStream.h:66
virtual bool onCompleted()
Definition: MultiStream.h:53
bool isFinished() override
Check if all data has been read.
Unknown data stream type.
Definition: DataSourceStream.h:29
int available() override
Return the total length of the stream.
Definition: MultiStream.h:36
StreamType
Data stream type.
Definition: DataSourceStream.h:22
virtual void onNextStream()
Definition: MultiStream.h:58
bool seek(int len) override
Move read cursor.
bool finished
Definition: MultiStream.h:68
StreamType getStreamType() const override
Get the stream type.
Definition: MultiStream.h:27