00001
#if !defined(__MEDIATOR_HPP)
00002
#define __MEDIATOR
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#if !defined(__COMMON_HPP)
00025
#include <Common.hpp>
00026
#endif
00027
00028
#if !defined(__ITERATOR_HPP)
00029
#include <Iterator.hpp>
00030
#endif
00031
00032
#if !defined(__EVENT_HPP)
00033
#include <Event.hpp>
00034
#endif
00035
00036
namespace corelinux
00037 {
00038 DECLARE_CLASS( Colleague );
00039 DECLARE_CLASS( Mediator );
00040
00045 class Mediator
00046 {
00047
public:
00048
00049
00050
00051
00052
00054
00055
Mediator(
void );
00056
00058
00059
Mediator(
MediatorCref );
00060
00062
00063
virtual ~Mediator(
void );
00064
00065
00066
00067
00068
00070
00071
MediatorRef operator=(
MediatorCref );
00072
00074
00075
bool operator==(
MediatorCref )
const;
00076
00077
00078
00079
00080
00081
virtual void action(
Event<Identifier>* )
00082
throw (
NullPointerException );
00083
00084
protected:
00085
00086
00087
00088
00089
00097
virtual void colleagueCreated(
ColleaguePtr ) = 0;
00098
00099
00100
00101
00102
00112
virtual Iterator<ColleaguePtr> *
createIterator(
Event<Identifier>* ) = 0;
00113
00119
virtual void destroyIterator(
Iterator<ColleaguePtr> * ) = 0;
00120
00121
private:
00122
00123 };
00124 }
00125
00126
#endif // if !defined(__MEDIATOR_HPP)
00127
00128
00129
00130
00131
00132
00133
00134
00135