MAK RTIspy API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
execObserverMgr.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2008 MaK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: execObserverMgr.h,v $ $Revision: 1.3 $ $State: Exp $
7 *******************************************************************************/
8 
11 
12 #ifndef DtRtiexecObserverMgr_H_
13 #define DtRtiexecObserverMgr_H_
14 
15 #include "rtiMsConfig.h"
16 #include "rtiMsg.h"
17 #include "rtiMsgCbMgr.h"
18 #include "exec.h"
19 #include <vlutil/vlSmartPointers.h>
20 #include <vlutil/vlTime.h>
21 #include <map>
22 #include <list>
23 
26 class DtRtiExec;
27 class DtFedExec;
28 class DtFedExCbInfo;
29 class DtRtiexecObserver;
30 class DtFederate;
31 class DtSyncPt;
32 class DtTickCallbackInfo;
34 
35 class DtMsgCbInfo {
36 public:
38  DtRtiexecObserver* observer, bool isMomCallback ) :
39  myMsgKind( msgKind ), myFcn( fcn ), myObserver( observer ),
40  myIsMomCallback( isMomCallback ) {}
42 
43  bool operator<(const DtMsgCbInfo& other) const
44  {
45  return ( myMsgKind < other.myMsgKind ||
46  ( myMsgKind == other.myMsgKind && myFcn < other.myFcn ) ||
47  ( myMsgKind == other.myMsgKind && myFcn == other.myFcn && myObserver < other.myObserver ) );
48  }
49 
54 };
55 
59 {
60 
61 public:
62 
65 
67  virtual ~DtRtiexecObserverMgr();
68 
70  virtual void setExec( DtBoost::shared_ptr<DtRtiExec> exec );
71 
73  virtual void addObserver( DtBoost::shared_ptr<DtRtiexecObserver> observer );
74 
76  virtual void removeObserver( DtBoost::shared_ptr<DtRtiexecObserver> observer );
77 
79  virtual void removeAllObservers();
80 
82  virtual void addRtiMsgCallback( DtRtiMsgKind msgKind,
84  bool isMomCallback );
85 
87  virtual void removeRtiMsgCallback( DtRtiMsgKind msgKind,
89  bool isMomCallback );
90 
93  virtual void addTickCallback( DtTickCbFn fcn, DtRtiexecObserver* observer,
94  DtTime interval );
95 
97  virtual void removeTickCallback( DtTickCbFn fcn, DtRtiexecObserver* observer );
98 
101  virtual void addTickCallback( DtTickWithExecCbFn fcn, DtRtiexecObserver* observer,
102  DtTime interval );
103 
105  virtual void removeTickCallback( DtTickWithExecCbFn fcn, DtRtiexecObserver* observer );
106 
108  static void federationCreatedCallback( DtFedExec* exec, void* usr );
109  void federationCreatedCallback( DtFedExec* exec );
110 
112  static void federationDestroyedCallback( DtFedExec* exec, void* usr );
113  void federationDestroyedCallback( DtFedExec* exec );
114 
116  static void federateJoinedCallback( DtFederate* federate, void* usr );
117  void federateJoinedCallback( DtFedExec* exec, DtFederate* federate );
118 
120  static void federateResignedCallback( DtFederate* federate, void* usr );
121  void federateResignedCallback( DtFedExec* exec, DtFederate* federate );
122 
124  static void syncPtRegisteredCallback( DtSyncPt* pt, void* usr );
125  void syncPtRegisteredCallback( DtFedExec* exec, DtSyncPt* pt );
126 
128  static void federationSynchronizedCallback( DtSyncPt* pt, void* usr );
129  void federationSynchronizedCallback( DtFedExec* exec, DtSyncPt* pt );
130 
132  static void syncPtAchievedCallback( DtFederate* fed, DtSyncPt* pt, void* usr );
133  void syncPtAchievedCallback( DtFedExec* exec, DtFederate* fed, DtSyncPt* pt );
134 
136  static void federateDisconnectedCallback( DtFederate* fed, void* usr );
137  void federateDisconnectedCallback( DtFedExec* exec, DtFederate* fed );
138 
140  static void federateReconnectSucceededCallback( DtFederate* fed, void* usr );
141  void federateReconnectSucceededCallback( DtFedExec* exec, DtFederate* fed);
142 
144  static void federateReconnectFailedCallback( DtFederate* fed, void* usr );
145  void federateReconnectFailedCallback( DtFedExec* exec, DtFederate* fed);
146 
148  static void updateLogFileNameCallback( const DtFilename& logFile, void* usr );
149  void updateLogFileNameCallback( const DtFilename& logFile );
150 
152  virtual unsigned long connectionId() const;
153 
154 protected:
155 
158 
160  DtRtiexecObserverMgr& operator=( const DtRtiexecObserverMgr& orig );
161 
162 protected:
163 
164  typedef std::map<DtFedExec*, DtFedExCbInfo*> DtFedexToCbInfoMap;
165  typedef std::set<DtMsgCbInfo> DtMsgCbSet;
166  typedef std::set<DtTickCallbackInfo> DtTickCbSet;
167  typedef std::set<DtTickWithExecCallbackInfo> DtTickWithExecCbSet;
168  typedef std::list< DtBoost::shared_ptr<DtRtiexecObserver> > DtExecObsList;
169 
171  DtBoost::shared_ptr<DtRtiExec> myExec;
172 
175 
178 
181 
184 
187 };
188 
189 
190 #endif
191 
192 
std::map< DtFedExec *, DtFedExCbInfo * > DtFedexToCbInfoMap
Definition: execObserverMgr.h:164
void(* DtCallbackFcn)(const DtRtiMsg &msg, void *userData)
Definition: messageCallbackManager.h:39
DtRtiMsgKind
Definition: rtiMsgKind.h:9
DtExecObsList myObservers
List of rtiexec observers.
Definition: execObserverMgr.h:174
~DtMsgCbInfo()
Definition: execObserverMgr.h:41
DtFedexToCbInfoMap myFedexInfoMap
Map from fedex to fedex callback info.
Definition: execObserverMgr.h:186
Info for tick callbacks.
Definition: exec.h:87
Definition: syncPt.h:29
Definition: fedex.h:134
DtMsgCbInfo(DtRtiMsgKind msgKind, DtRtiMsgCbMgr::DtCallbackFcn fcn, DtRtiexecObserver *observer, bool isMomCallback)
Definition: execObserverMgr.h:37
DtRtiMsgCbMgr::DtCallbackFcn myFcn
Definition: execObserverMgr.h:51
DtBoost::shared_ptr< DtRtiExec > myExec
The rtiexec which is being observed.
Definition: execObserverMgr.h:171
void(* DtTickWithExecCbFn)(const DtRtiExec &exec, void *usr)
Definition: exec.h:70
Definition: federate.h:39
The DtRtiexecObserver is the base class for all observers of rtiexec events.
Definition: execObserver.h:30
void(* DtTickCbFn)(void *usr)
Tick callback function signatures.
Definition: exec.h:69
std::set< DtMsgCbInfo > DtMsgCbSet
Definition: execObserverMgr.h:165
Definition: execObserverMgr.h:35
bool myIsMomCallback
Definition: execObserverMgr.h:53
Info for tick callbacks with DtRtiExec reference.
Definition: exec.h:106
std::list< DtBoost::shared_ptr< DtRtiexecObserver > > DtExecObsList
Definition: execObserverMgr.h:168
DtRtiMsgKind myMsgKind
Definition: execObserverMgr.h:50
Definition: exec.h:141
std::set< DtTickCallbackInfo > DtTickCbSet
Definition: execObserverMgr.h:166
bool operator<(const DtMsgCbInfo &other) const
Definition: execObserverMgr.h:43
DtTickCbSet myTickCbSet
Set of all registered tick callbacks.
Definition: execObserverMgr.h:180
DtTickWithExecCbSet myTickWithExecCbSet
Set of all registered tick callbacks that take a DtRtiExec reference.
Definition: execObserverMgr.h:183
DtRtiexecObserver * myObserver
Definition: execObserverMgr.h:52
DtMsgCbSet myMsgCbSet
Set of all registered message callbacks.
Definition: execObserverMgr.h:177
The DtRtiexecObserverMgr is the class which manages all rtiexec observers.
Definition: execObserverMgr.h:58
std::set< DtTickWithExecCallbackInfo > DtTickWithExecCbSet
Definition: execObserverMgr.h:167
#define DT_DLL_EXEC
Definition: rtiMsConfig.h:123

Document ID: Generated on Thu May 11 15:55:32 EDT 2023 from SVN revision 254743
Copyright © 2005-2020 MAK Technologies Inc. All Rights Reserved (www.mak.com)