StreamChain.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  * StreamChain.h
8  *
9  * @author: 2018 - Slavey Karadzhov <slav@attachix.com>
10  *
11  ****/
12 
13 #pragma once
14 
15 #include "MultiStream.h"
16 #include "../ObjectQueue.h"
17 
18 #ifndef MAX_STREAM_CHAIN_SIZE
19 #define MAX_STREAM_CHAIN_SIZE 10
20 #endif
21 
23 
24 class StreamChain : public MultiStream
25 {
26 public:
28  {
29  // Free any remaining streams in queue
30  while(queue.count() != 0) {
31  delete queue.dequeue();
32  }
33  }
34 
36  {
37  return queue.enqueue(stream);
38  }
39 
40 protected:
42  {
43  return queue.dequeue();
44  }
45 
46 private:
47  StreamChainQueue queue;
48 };
~StreamChain()
Definition: StreamChain.h:27
bool attachStream(IDataSourceStream *stream)
Definition: StreamChain.h:35
Definition: MultiStream.h:18
Base class for data source stream.
Definition: DataSourceStream.h:39
IDataSourceStream * getNextStream() override
Definition: StreamChain.h:41
unsigned int count() const override
Definition: FIFO.h:38
IDataSourceStream * stream
Definition: MultiStream.h:65
T * dequeue()
Definition: ObjectQueue.h:37
bool enqueue(T element)
Definition: FIFO.h:72
ObjectQueue< IDataSourceStream, MAX_STREAM_CHAIN_SIZE > StreamChainQueue
Definition: StreamChain.h:22
Definition: StreamChain.h:24