Discman
Loading...
Searching...
No Matches
consumer.h
Go to the documentation of this file.
1
6#ifndef CONSUMER_H
7#define CONSUMER_H
8
9#include "producer.h"
10
14template <typename T>
15class Consumer {
16 public:
19
21 virtual ~Consumer() {};
22
25 virtual void producer(Producer<T>* const producer);
26
27 protected:
30 T consume() const;
31
32 private:
35};
36
37template <typename T>
39 : _producer(nullptr) { }
40
41template <typename T>
44 _producer->register_consumer(this);
45}
46
47template <typename T>
49 if (_producer == nullptr)
50 throw "no producer set";
51
52 return _producer->next();
53}
54
55#endif // CONSUMER_H
virtual void producer(Producer< T > *const producer)
Sets the producer from which to retrieve data.
Definition consumer.h:42
virtual ~Consumer()
Consumer destructor.
Definition consumer.h:21
Consumer()
Consumer constructor.
Definition consumer.h:38
T consume() const
Returns one datum from the producer.
Definition consumer.h:48
Producer< T > * _producer
The Producer from which to retrieve data.
Definition consumer.h:34
The Producer interface.
Definition producer.h:16