MAK Data Logger API Documentation for HLA
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
observeEvent.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 1992-2025 MAK Technologies, Inc
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 <lgrUtil/observe.h>
19 
20 namespace MAKLogger
21 {
22 
26  template<typename SubjectType>
27  class DtObserveEvent : public DtObserveConnectionComponent
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 
virtual void disconnect(DtObserveConnectionSP con)
Disconnects an event from a shared connection.
Definition: observeEvent.h:86
DtObserver< SubjectType > SubjectObserver
Type definition for list of Observers.
Definition: observeEvent.h:32
void observeSubject(const SubjectType &value)
The event call which will cause all observers to observe the provided subject object.
Definition: observeEvent.h:111
std::list< DtObserver< SubjectType > * > ObserverList
Definition: observeEvent.h:33
virtual void connect(DtObserveConnectionSP con)
Connects an event to an existing shared connection.
Definition: observeEvent.h:54
ObserverList myObservers
A list of observers to call when inspecting.
Definition: observeEvent.h:124
Contains MAKLogger::DtObserver and MAKLogger::DtObserverCallback and MAKLogger::DtObserverFunctor cla...
virtual void disconnect(DtObserveConnectionSP con)
DtObserveEvent()
CTOR for the object. No parameters are used.
Definition: observeEvent.h:36
virtual ~DtObserveEvent()
DTOR for the class.
Definition: observeEvent.h:42
virtual void connect(DtObserveConnectionSP con)
DtObserveConnectionSP findEventObserverConnection(DtObserveConnectionComponent *event, DtObserveConnectionComponent *observer)
Contains MAKLogger::DtObserveConnection and MAKLogger::DtObserveConnectionComponent classes...
std::shared_ptr< DtObserveConnection > DtObserveConnectionSP
Definition: observeConnection.h:28
virtual void disconnect(SubjectObserver *observer)
Disconnects the event from a specific observer.
Definition: observeEvent.h:99

Document ID: Generated on Thu Dec 18 15:35:09 EST 2025 from SVN revision 282494
Copyright © 2024 MAK Technologies. All Rights Reserved (www.mak.com)