MAK Data Logger API Documentation for HLA
observeEvent.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
9 #ifndef observeEvent_H_
10 #define observeEvent_H_
11 
12 #include <list>
13 #include <algorithm>
14 #include <vlutil/vlSmartPointers.h>
15 
16 #include <vlutil/vlExceptions.h>
17 #include "observeConnection.h"
18 #include "observe.h"
19 
20 namespace MAKLogger
21 {
22 
26  template<typename SubjectType>
28  {
29 
30  public:
33  typedef std::list<DtObserver<SubjectType>*> ObserverList;
34 
37  myObservers()
38  {
39  }
40 
42  virtual ~DtObserveEvent()
43  {
44  }
45 
54  virtual void connect(DtObserveConnectionSP con)
55  {
56  if(!con)
57  {
58  throw DtInvalidInput("Connection may not be null.");
59  }
61  SubjectObserver* observer = reinterpret_cast<SubjectObserver*>
62  (con->observer());
63  typename ObserverList::iterator it;
64  it = std::find(myObservers.begin(),myObservers.end(),observer);
65  if(it == myObservers.end())
66  {
67  myObservers.push_back(observer);
68  }
69  }
70 
71 
85 
87  {
88  if(!con)
89  {
90  throw DtInvalidInput("Connection may not be null.");
91  }
93  SubjectObserver* observer = reinterpret_cast<SubjectObserver*>
94  (con->observer());
95  myObservers.remove(observer);
96  }
97 
99  virtual void disconnect(SubjectObserver* observer)
100  {
102  reinterpret_cast<DtObserveConnectionComponent*>(observer));
103  if(sharedCon)
104  {
105  sharedCon->disconnect(sharedCon);
106  }
107  }
108 
111  void observeSubject(const SubjectType& value)
112  {
113  typename ObserverList::iterator obs;
114  obs = myObservers.begin();
115  for(;obs != myObservers.end();++obs)
116  {
117  (*obs)->observe(value);
118  }
119  }
120 
121  protected:
122 
125  };
126 
127 }
128 
129 #endif
130 

Document ID: Generated on Thu Apr 10 18:53:01 EDT 2014 from SVN revision 138105
Copyright © 2005-2012 VT MÄK. All Rights Reserved (www.mak.com)