source: src/Patterns/Observer/Relay.hpp@ d85532

Last change on this file since d85532 was d85532, checked in by Frederik Heber <heber@…>, 14 years ago

Added unit test on Relay.

  • added new stubs to ObserverStub implementing Relay.
  • Relay is friend of Notification.
  • Property mode set to 100644
File size: 1.5 KB
Line 
1/*
2 * Relay.hpp
3 *
4 * Created on: Dec 1, 2011
5 * Author: heber
6 */
7
8#ifndef RELAY_HPP_
9#define RELAY_HPP_
10
11// include config.h
12#ifdef HAVE_CONFIG_H
13#include <config.h>
14#endif
15
16#include "Observable.hpp"
17
18/**
19 * A Relay acts as a node in a many-to-one observation.
20 *
21 * All Observable::update() calls will pass through this relay. Hence, if an
22 * instance desires to observe all atoms and be notified of each single change,
23 * he would otherwise be forced to not only Observable:signon() to each and
24 * every one of them but also to keep track of all newly created ones.
25 *
26 * Instead he simply uses Relay::signOn() of the specific Relay he wishes
27 * to use (note Relay should are singleton of nature but are not required to
28 * inherit the Singleton pattern) and will get notified as if he were
29 * signOn()'ed to each atom because Observer::update() will get passed through
30 * the Relay. I.e. the given reference to the Observer points to the atom that
31 * initiated the update() call and not to the Relay.
32 */
33class Relay : public Observable {
34public:
35 Relay(std::string _name);
36 virtual ~Relay();
37
38// Notification_ptr getChannel(size_t no) const;
39
40protected:
41 virtual void update(Observable *publisher);
42 virtual void subjectKilled(Observable *publisher);
43
44 virtual void notifyAll();
45
46private:
47 //!> Current peer that called last update on us, to be passed on to Observers
48 Observable *Updater;
49//protected:
50//
51// Channels *NotificationChannels;
52//
53};
54
55
56#endif /* RELAY_HPP_ */
Note: See TracBrowser for help on using the repository browser.