MAK Data Logger API Documentation for HLA
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
observe.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #ifndef observe_H_
11 #define observe_H_
12 
13 #include "observeConnection.h"
14 #include <lgrUtil/observeEvent.h>
15 
16 namespace MAKLogger
17 {
18 
21  template <typename SubjectType>
22  class DtObserver : public DtObserveConnectionComponent
23  {
24  public:
25 
27  virtual ~DtObserver()
28  {
29  disconnectAll();
30  }
31 
34  {
35  DtObserveConnectionSP sharedCon = findEventObserverConnection(event,this);
36  if(sharedCon)
37  {
38  sharedCon->disconnect(sharedCon);
39  }
40  }
41 
43  virtual void observe(const SubjectType&) = 0;
44  };
45 
46 
50  template <typename SubjectType>
51  class DtObserverCallback : public DtObserver<SubjectType>
52  {
53  public:
54 
55  typedef void (*ObserverFunction)(const SubjectType&,void*);
56 
57  DtObserverCallback(ObserverFunction function,void* userData) :
58  myFunction(function),
59  myData(userData)
60  {
61  }
62 
63  virtual ~DtObserverCallback(){}
64 
65  void observe(const SubjectType& subject)
66  {
67  (*myFunction)(subject,myData);
68  }
69 
70  protected:
71 
76 
77 
79  void* myData;
80  };
81 
91  template <typename ClassType,typename SubjectType>
92  class DtObserverFunctor : public DtObserver<SubjectType>
93  {
94  public:
95 
96  typedef void (ClassType::*ObserverMemberFunction)(const SubjectType&);
97 
98  DtObserverFunctor(ClassType& object,ObserverMemberFunction function) :
99  myObject(object),
100  myFunction(function)
101  {
102  }
103 
104  virtual ~DtObserverFunctor(){}
105 
106  void observe(const SubjectType& subject)
107  {
108  (myObject.*myFunction)(subject);
109  }
110 
111  protected:
112 
117 
118  ClassType& myObject;
120  };
121 }
122 
123 #endif
DtBoost::shared_ptr< DtObserveConnection > DtObserveConnectionSP
Definition: observeConnection.h:28
DtObserverCallback(ObserverFunction function, void *userData)
Definition: observe.h:57
void observe(const SubjectType &subject)
Abstract observe function called when a connected event fires.
Definition: observe.h:106
virtual void disconnect(DtObserveEvent< SubjectType > *event)
Disconnect the observer from a specific event.
Definition: observe.h:33
ObserverFunction myFunction
Definition: observe.h:78
Necessary Predefinitions.
Definition: observeConnection.h:23
virtual ~DtObserverFunctor()
Definition: observe.h:104
void observe(const SubjectType &subject)
Abstract observe function called when a connected event fires.
Definition: observe.h:65
void disconnectAll()
Must be non virtual since called by destructor.
DtObserverFunctor & operator=(const DtObserverFunctor &)
Assignment operator not implemented.
ClassType & myObject
Definition: observe.h:118
virtual ~DtObserver()
DTOR which disconnects the observer from all events.
Definition: observe.h:27
ObserverFunctor is an observer implemented via Functor object which will call an object&#39;s member func...
Definition: observe.h:92
ObserverMemberFunction myFunction
Definition: observe.h:119
void * myData
Definition: observe.h:79
virtual void observe(const SubjectType &)=0
Abstract observe function called when a connected event fires.
void(ClassType::* ObserverMemberFunction)(const SubjectType &)
Definition: observe.h:96
Contains MAKLogger::DtObserveEvent class.
void(* ObserverFunction)(const SubjectType &, void *)
Definition: observe.h:55
virtual ~DtObserverCallback()
Definition: observe.h:63
DtObserveConnectionSP findEventObserverConnection(DtObserveConnectionComponent *event, DtObserveConnectionComponent *observer)
DtObserver is the abstract interface for the observer object.
Definition: lgrDataViewFilter.h:19
DtObserverFunctor(ClassType &object, ObserverMemberFunction function)
Definition: observe.h:98
ObserverCallback is an observer implemented via a C function callback.
Definition: observe.h:51
Contains MAKLogger::DtObserveConnection and MAKLogger::DtObserveConnectionComponent classes...
DtObserverCallback & operator=(const DtObserverCallback &)
Assignment operator not implemented.

Document ID: Generated on Mon Mar 22 15:30:17 EDT 2021 from SVN revision 226440
Copyright © 2021 MAK Technologies. All Rights Reserved (www.mak.com)