Discman
Loading...
Searching...
No Matches
producer.h
Go to the documentation of this file.
1
6#ifndef PRODUCER_H
7#define PRODUCER_H
8
9template <typename T>
10class Consumer;
11
15template <typename T>
16class Producer {
17 public:
22 T next(const Consumer<T>* const consumer);
23
27 void register_consumer(const Consumer<T>* const consumer) {};
28
34 virtual T next() = 0;
35
36 private:
39
40 protected:
43};
44
45template <typename T>
46T Producer<T>::next(const Consumer<T>* const consumer) {
47 _current_consumer = consumer;
48 return next();
49}
50
51template <typename T>
55
56#endif // PRODUCER_H
The Consumer interface.
Definition consumer.h:15
The Producer interface.
Definition producer.h:16
T next(const Consumer< T > *const consumer)
When a Producer has multiple Consumers, each Consumer must call this overloaded version of next().
Definition producer.h:46
Consumer< T > * _current_consumer
The Consumer that will receive the datum returned by next().
Definition producer.h:38
void register_consumer(const Consumer< T > *const consumer)
Use this method to maintain state associated with a particular Consumer. The state can be used to ret...
Definition producer.h:27
Consumer< T > * current_consumer() const
Getter for _current_consumer.
Definition producer.h:52
virtual T next()=0
When a producer has a single Consumer, that Consumer may simply call this version of next() to retrie...