00001
#if !defined(__SUBJECTOBSERVER_HPP)
00002
#define __SUBJECTOBSERVER_HPP
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 <corelinux/Common.hpp>
00026
#endif
00027
00028
#if !defined(__SUBJECT_HPP)
00029
#include <corelinux/Subject.hpp>
00030
#endif
00031
00032
#if !defined(__OBSERVER_HPP)
00033
#include <corelinux/Observer.hpp>
00034
#endif
00035
00036
#if !defined(__MAP_HPP)
00037
#include <corelinux/Map.hpp>
00038
#endif
00039
00040 DECLARE_CLASS(
SubjectObserver );
00041
00048 class SubjectObserver :
public CORELINUX( Subject ), CORELINUX( Observer )
00049 {
00050 CORELINUX_MULTIMAP
00051 (
00052 DwordIdentifier,
00053 CORELINUX(ObserverPtr),
00054 less<DwordIdentifier>,
00055 ObserverMap
00056 );
00057
00058
public:
00059
00060
00061
00062
00063
00065
00066
SubjectObserver(
void );
00067
00069
00070
virtual ~SubjectObserver(
void );
00071
00072
00073
00074
00076
00077
bool operator=(
SubjectObserverCref )
const;
00078
00079
00080
00081
00082
00089
virtual void addObserver
00090 (
00091 CORELINUX( ObserverPtr ),
00092 CORELINUX( Event<corelinux::Identifier> ) *
00093 )
00094
throw ( CORELINUX( NullPointerException ) ) ;
00095
00102
virtual void removeObserver( CORELINUX( ObserverPtr ) )
00103
throw ( CORELINUX( NullPointerException ) ) ;
00104
00111
virtual void removeObserver
00112 (
00113 CORELINUX( ObserverPtr ),
00114 CORELINUX( Event<corelinux::Identifier> ) *
00115 )
00116
throw ( CORELINUX( NullPointerException ) ) ;
00117
00118
00119
00120
00126
virtual CORELINUX(Iterator< corelinux::ObserverPtr >)
00127 *
createIterator(
void );
00128
00136
virtual CORELINUX(Iterator< corelinux::ObserverPtr >) *
createIterator
00137 (
00138 CORELINUX( Event<corelinux::Identifier> ) *
00139 )
00140
throw ( CORELINUX( NullPointerException ) ) ;
00141
00148
virtual void destroyIterator
00149 (
00150 CORELINUX(Iterator< corelinux::ObserverPtr >) *
00151 )
00152
throw ( CORELINUX( NullPointerException ) ) ;
00153
00154
protected:
00155
00157
00158
SubjectObserver(
SubjectObserverCref )
00159
throw ( CORELINUX( Assertion ) );
00160
00162
00163
SubjectObserverRef operator=(
SubjectObserverCref )
00164
throw ( CORELINUX( Assertion ) );
00165
00166
private:
00168
00169 ObserverMap theObserverMap;
00170
00171 };
00172
00173
00174
#endif // if !defined(__SUBJECTOBSERVER_HPP)
00175
00176
00177
00178
00179
00180
00181
00182
00183