MAK RTIspy API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
netStatsMonitor.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MaK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #ifndef netStatsMonitor_h__
6 #define netStatsMonitor_h__
7 
8 
9 #include "netStats.h"
10 #include "objClassInfo.h"
11 #include "intClassInfo.h"
12 
13 #include <vlutil/vlFilename.h>
14 #include <vlutil/vlFedTarget.h>
15 
16 // Forward References
17 class DtRtiMsg;
18 class DtRtiAmbassadorImplementor;
19 class DtNetStatsFedAmbWrapper;
20 class DtConnectionMgr;
21 class QtGui;
24 class DtFomClassMgr;
25 class DtObjectClassInfo;
27 
28 //
29 // The DtNetStatsMonitor class records statistics on RTI network
30 // utilization through callbacks from it's connection manager.
31 // It is intended to compliment the LRC console GUI.
32 //
34 {
35 public:
36 
37  // Constructor
38  DtNetStatsMonitor( DtRtiAmbassadorImplementor* rtiAmb, DtNetStatsFedAmbWrapper* fedAmb, DtRtiAssistantLrcClient* assistantClient );
39 
40  // Destructor
41  virtual ~DtNetStatsMonitor();
42 
43  // Sets local Federate ID after successful join
44  virtual void postJoinInit( const DtFederateHandle& fedId );
45 
46  // Set/Get if we are joined to a federation
47  virtual bool isJoined() const;
48  virtual void setIsJoined(bool val);
49 
50  // Get a copy of the current statistics
51  virtual const DtTrafficStats& getNetworkStats() const;
52 
53  // Reset the network statistics
54  virtual void reset();
55 
56  // Print the current state of the statistics
57  // - prints in tab-separated values form
58  virtual void printStats( bool withHeader = false ) const;
59 
60  // Record stats for sent / received message called directly when
61  // not using callback method
62  // NOTE: - if callbacks are enabled, and this method is used,
63  // it will result in msg duplication!
64  virtual void recordSentMsgStats( const DtRtiMsg& msg, double sendTime );
65  virtual void recordSentMsgStats(unsigned int fedId, DtRtiMsgKind msgKind, unsigned int msgSize, double time);
66  virtual void recordSentMsgStats(unsigned int fedId, DtRtiMsgKind msgKind, unsigned int msgSize, double time,
67  DtObjectClassHandle* classHandle, DtObjectInstanceHandle* instanceHandle);
68  virtual void recordSentMsgStats(unsigned int fedId, DtRtiMsgKind msgKind, unsigned int msgSize, double time,
69  DtInteractionClassHandle* classHandle);
70 
71  virtual void recordRecvdMsgStats( const DtRtiMsg& msg, double sendTime, bool joined );
72 
73  // Record stats for RTI Ambassador and Federate Ambassador API calls and
74  // callbacks
75  virtual void recordApiStats( const DtRtiAmbAPIType callName, double callTime );
76  virtual void recordFedAmbStats( const DtFedAmbAPIType callName, double callTime );
77 
78  // Add newly Registered or Discovered objects to the list
79  virtual void addRegisteredObject( DtObjectInstanceHandle objHandle,
80  DtObjectClassHandle theClass, const char* theObject);
81  virtual void addDiscoveredObject( DtObjectInstanceHandle objHandle,
82  DtObjectClassHandle theClass, const char* theObject);
83 
84  // Add subscribed or published sent and received interactions to the list
85  virtual void addSentInteraction( DtInteractionClassHandle theInteraction );
86  virtual void addRecvdInteraction( DtInteractionClassHandle theInteraction );
87 
88  // Record stats for individual objects and interactions
89  virtual void recordObjectStats( bool isSent, unsigned int msgKind,
90  unsigned int msgSize, double time, const DtRtiMsg& msg );
91  virtual void recordObjectStats(DtObjectInstanceHandle* objectInstanceHandle, DtObjectClassHandle* objectClassHandle,
92  bool isSent, unsigned int msgSize, double time);
93 
94  virtual void recordInteractionStats( bool isSent, unsigned int msgKind,
95  unsigned int msgSize, double time, const DtRtiMsg& msg );
96  virtual void recordInteractionStats(DtInteractionClassHandle* handle, bool isSent, unsigned int msgSize, double time);
97 
98  // Adds object class handles to set if publish, subscribe, transport, or order changes.
99  virtual void changedPubSubTransOrder(DtObjectClassHandle classHandle);
100 
101  // Adds interaction class handles to set if publish, subscribe, transport, or order changes.
102  virtual void changedInterPubSubTransOrder(DtInteractionClassHandle classHandle);
103 
104  // Callback function for generic DtRtiMsgs: records traffic statistics
105  static void processMsg( const DtRtiMsg& msg, void* thisMonitor );
106 
107  // Calback for posttick in FedMgr
108  static void netStatsPostTick(void* instance);
109 
110  // Have the stats changed since the last test? (resets flag)
111  virtual bool isChanged();
112 
113 protected:
114 
115  // Instance local version of the processMsg callback
116  virtual void processMsg( const DtRtiMsg& msg );
117 
118  // Instance local version of the netStatsPostTick callback
119  virtual void netStatsPostTick();
120 
121  static void processNetStatsObserveReqMsg( const DtAssistantNetStatsObserveReqMsg& msg, void* usr );
123 
124  virtual void gatherClassDataAndSend(DtFomClassMgr * fomMgr, DtRtiAssistantLrcClient* rtiAstntLrcClient);
125 
126  virtual void gatherInstanceDataAndSend(DtRtiAssistantLrcClient* rtiAstntLrcClient);
127 
128  virtual void createSerializedTreesAndSend();
129 
130  virtual void recursivelyAddObjects(DtObjectClassInfo::DtObjectClassByHandleMap& objectClasses, MAKRti::DtU32 parentHandle,
131  std::vector<MAKRti::DtU32>& objectClassHandles, std::vector<MAKRti::DtU32>& parentObjectClassHandles,
132  std::vector<MAKRti::DtString>& objectClassNames);
133  void recursivelyAddInteractions(DtInteractionClassInfo::DtInteractionClassByHandleMap& interactionClasses, MAKRti::DtU32 parentHandle,
134  std::vector<MAKRti::DtU32>& interactionClassHandles, std::vector<MAKRti::DtU32>& parentInteractionClassHandles,
135  std::vector<MAKRti::DtString>& interactionClassNames);
136 
138  void sendAttributeNames();
140  std::vector<MAKRti::DtU32>& objectClassHandles, std::vector<MAKRti::DtU32>& attributeHandles,
141  std::vector<MAKRti::DtString>& attributeNames, std::vector<bool>& attributePub,
142  std::vector<bool>& attributeSub, std::vector<DtTransportType>& attributeTransport,
143  std::vector<DtOrderType>& attributeOrder);
145  std::vector<MAKRti::DtU32>& objectClassHandles, std::vector<MAKRti::DtU32>& attributeHandles,
146  std::vector<MAKRti::DtString>& attributeNames, std::vector<MAKRti::DtU32>& parentClassHandles,
147  std::set<MAKRti::DtString> parentAttributeNames, MAKRti::DtU32 parentClassHandle,
148  std::vector<MAKRti::DtU32>& totalObjectHandles);
149  void sendParameterNames();
151  std::vector<MAKRti::DtU32>& interactionClassHandles, std::vector<MAKRti::DtU32>& parameterHandles,
152  std::vector<MAKRti::DtString>& parameterNames, std::vector<MAKRti::DtU32>& parentInterHandles,
153  std::set<MAKRti::DtString> parentParametersNames, MAKRti::DtU32 parentInterHandle,
154  std::vector<MAKRti::DtU32>& totalInterHandles);
155  void sendInitAttrState();
157  std::vector<MAKRti::DtU32>& objectClassHandles, std::vector<MAKRti::DtU32>& attributeHandles,
158  std::vector<bool>& attributePub, std::vector<bool>& attributeSub,
159  std::vector<DtTransportType>& attributeTransport, std::vector<DtOrderType>& attributeOrder,
160  std::vector<bool>& objectPub, std::vector<bool>& objectSub, std::vector<MAKRti::DtU32>& objPubSubHandles);
161 
163  std::vector<MAKRti::DtU32>& objectClassHandles,
164  std::vector<MAKRti::DtU32>& attributeHandles, std::vector<bool>& attributePub,
165  std::vector<bool>& attributeSub, std::vector<DtTransportType>& attributeTransport,
166  std::vector<DtOrderType>& attributeOrder, std::vector<bool>& objectPub,
167  std::vector<bool>& objectSub, std::vector<MAKRti::DtU32>& objPubSubHandles);
168  void sendInitParamState();
170  void sendAttributeState();
171  void sendParameterState();
172 private:
173 
174  // Default ctor, Copy ctor, and Assignment Operator are undefined
176  DtNetStatsMonitor( const DtNetStatsMonitor& orig );
178  MAKRti::DtString getNameFromObject(DtObjectClassInfo * object);
179  MAKRti::DtString getNameFromInteraction(DtInteractionClassInfo * interaction);
180 protected:
181 
182  // LRC's Federate Handle
184 
185  // LRC's RTI Ambassador Implementor
186  DtRtiAmbassadorImplementor* myRtiAmb;
187 
188  // LRC's Fed Amb wrapper which handles stats gathering
189  DtNetStatsFedAmbWrapper* myFedAmbWrap;
190 
191  // LRC's connection manager
193 
194  // Structure to hold all gathered statistics
196 
197  // Has there been an update since the last test?
198  bool myChanged;
199 
200  // Whether or not this is observed
203 
207 
208  // Minimum interval between sending updates (if observed)
209  MAKRti::DtTime myInterval;
210  MAKRti::DtTime myFomInterval;
211 
212  MAKRti::DtClock myIntervalTimer;
213  MAKRti::DtClock myFomIntervalTimer;
214 
215  // LRC's assistant client
217 
220 
222 };
223 
224 
226 {
227  return myNetStats;
228 }
229 #endif // netStatsMonitor_h__
230 
virtual bool isJoined() const
virtual void recordFedAmbStats(const DtFedAmbAPIType callName, double callTime)
DtRtiMsgKind
Definition: rtiMsgKind.h:9
virtual void gatherClassDataAndSend(DtFomClassMgr *fomMgr, DtRtiAssistantLrcClient *rtiAstntLrcClient)
DtConnectionMgr * myConnMgr
Definition: netStatsMonitor.h:192
MAKRti::DtString getNameFromInteraction(DtInteractionClassInfo *interaction)
std::map< DtObjectClassHandle, DtObjectClassInfo * > DtObjectClassByHandleMap
Definition: objClassInfo.h:39
virtual void addRegisteredObject(DtObjectInstanceHandle objHandle, DtObjectClassHandle theClass, const char *theObject)
DtFederateHandle myFedId
Definition: netStatsMonitor.h:183
void sendInitAttrState()
DtNetStatsFedAmbWrapper * myFedAmbWrap
Definition: netStatsMonitor.h:189
static void processNetStatsObserveReqMsg(const DtAssistantNetStatsObserveReqMsg &msg, void *usr)
void recursivelyAddAttributesNames(DtObjectClassInfo::DtObjectClassByHandleMap &objectClasses, std::vector< MAKRti::DtU32 > &objectClassHandles, std::vector< MAKRti::DtU32 > &attributeHandles, std::vector< MAKRti::DtString > &attributeNames, std::vector< MAKRti::DtU32 > &parentClassHandles, std::set< MAKRti::DtString > parentAttributeNames, MAKRti::DtU32 parentClassHandle, std::vector< MAKRti::DtU32 > &totalObjectHandles)
bool myIsObserved
Definition: netStatsMonitor.h:201
DtFedAmbAPIType
Definition: fedAmbAPITypes.h:12
Definition: netStatsMonitor.h:33
void sendAttributeNames()
virtual void addSentInteraction(DtInteractionClassHandle theInteraction)
bool myHaveSentClassData
Definition: netStatsMonitor.h:202
The client connection to the RTI Assistant for an LRC.
Definition: rtiAssistantLrcClient.h:32
virtual void netStatsPostTick()
virtual bool isChanged()
virtual void recursivelyAddObjects(DtObjectClassInfo::DtObjectClassByHandleMap &objectClasses, MAKRti::DtU32 parentHandle, std::vector< MAKRti::DtU32 > &objectClassHandles, std::vector< MAKRti::DtU32 > &parentObjectClassHandles, std::vector< MAKRti::DtString > &objectClassNames)
void sendAttributeState()
bool myShouldSendTransport
Definition: netStatsMonitor.h:218
virtual void gatherInstanceDataAndSend(DtRtiAssistantLrcClient *rtiAstntLrcClient)
DtHandle DtObjectClassHandle
Definition: internalTypes.h:48
void recursivelyAddAttrInitState(DtObjectClassInfo::DtObjectClassByHandleMap &objectClasses, std::vector< MAKRti::DtU32 > &objectClassHandles, std::vector< MAKRti::DtU32 > &attributeHandles, std::vector< bool > &attributePub, std::vector< bool > &attributeSub, std::vector< DtTransportType > &attributeTransport, std::vector< DtOrderType > &attributeOrder, std::vector< bool > &objectPub, std::vector< bool > &objectSub, std::vector< MAKRti::DtU32 > &objPubSubHandles)
virtual void createSerializedTreesAndSend()
virtual void postJoinInit(const DtFederateHandle &fedId)
MAKRti::DtTime myFomInterval
Definition: netStatsMonitor.h:210
DtHandle DtInteractionClassHandle
Definition: internalTypes.h:52
void sendParameterState()
void recursivelyAddInteractions(DtInteractionClassInfo::DtInteractionClassByHandleMap &interactionClasses, MAKRti::DtU32 parentHandle, std::vector< MAKRti::DtU32 > &interactionClassHandles, std::vector< MAKRti::DtU32 > &parentInteractionClassHandles, std::vector< MAKRti::DtString > &interactionClassNames)
virtual void recordSentMsgStats(const DtRtiMsg &msg, double sendTime)
bool myHaveSentInitState
Definition: netStatsMonitor.h:206
MAKRti::DtClock myFomIntervalTimer
Definition: netStatsMonitor.h:213
The DtAssistantNetStatsObserveReqMsg defines...
Definition: assistantObserveReqMsg.h:20
virtual ~DtNetStatsMonitor()
void sendCurrentAttributeAndParameterValues()
virtual void setIsJoined(bool val)
virtual void recordApiStats(const DtRtiAmbAPIType callName, double callTime)
Instances of DtConnectionMgr manage the communication objects that the RTI will use to either communi...
Definition: connectMgr.h:67
DtRtiMsg is the base class for messages between RTI components.
Definition: rtiMsg.h:34
DtHandle DtFederateHandle
Definition: internalTypes.h:46
DtHandle DtObjectInstanceHandle
Definition: internalTypes.h:50
virtual void printStats(bool withHeader=false) const
virtual void addDiscoveredObject(DtObjectInstanceHandle objHandle, DtObjectClassHandle theClass, const char *theObject)
DtRtiAmbassadorImplementor * myRtiAmb
Definition: netStatsMonitor.h:186
void recursivelyAddAttributes(DtObjectClassInfo::DtObjectClassByHandleMap &objectClasses, std::vector< MAKRti::DtU32 > &objectClassHandles, std::vector< MAKRti::DtU32 > &attributeHandles, std::vector< MAKRti::DtString > &attributeNames, std::vector< bool > &attributePub, std::vector< bool > &attributeSub, std::vector< DtTransportType > &attributeTransport, std::vector< DtOrderType > &attributeOrder)
Definition: fomMgr.h:49
virtual void addRecvdInteraction(DtInteractionClassHandle theInteraction)
DtRtiAssistantLrcClient * myAssistantClient
Definition: netStatsMonitor.h:216
void sendParameterNames()
DtRtiAmbAPIType
Definition: rtiAmbAPITypes.h:12
bool myIsJoined
Definition: netStatsMonitor.h:221
Definition: netStats.h:122
void recursivelyAddParametersNames(DtInteractionClassInfo::DtInteractionClassByHandleMap &interactionClasses, std::vector< MAKRti::DtU32 > &interactionClassHandles, std::vector< MAKRti::DtU32 > &parameterHandles, std::vector< MAKRti::DtString > &parameterNames, std::vector< MAKRti::DtU32 > &parentInterHandles, std::set< MAKRti::DtString > parentParametersNames, MAKRti::DtU32 parentInterHandle, std::vector< MAKRti::DtU32 > &totalInterHandles)
bool myHaveSentInitialFomData
Definition: netStatsMonitor.h:205
Definition: intClassInfo.h:40
MAKRti::DtTime myInterval
Definition: netStatsMonitor.h:209
void sendInitParamState()
virtual void recordInteractionStats(bool isSent, unsigned int msgKind, unsigned int msgSize, double time, const DtRtiMsg &msg)
virtual void reset()
virtual void changedInterPubSubTransOrder(DtInteractionClassHandle classHandle)
MAKRti::DtString getNameFromObject(DtObjectClassInfo *object)
MAKRti::DtClock myIntervalTimer
Definition: netStatsMonitor.h:212
std::map< DtInteractionClassHandle, DtInteractionClassInfo * > DtInteractionClassByHandleMap
Definition: intClassInfo.h:43
virtual void recordRecvdMsgStats(const DtRtiMsg &msg, double sendTime, bool joined)
bool myIsFomObserved
Definition: netStatsMonitor.h:204
Definition: objClassInfo.h:36
void recursivelyAddParamInitState(DtInteractionClassInfo::DtInteractionClassByHandleMap &interactionClasses, std::vector< MAKRti::DtU32 > &objectClassHandles, std::vector< MAKRti::DtU32 > &attributeHandles, std::vector< bool > &attributePub, std::vector< bool > &attributeSub, std::vector< DtTransportType > &attributeTransport, std::vector< DtOrderType > &attributeOrder, std::vector< bool > &objectPub, std::vector< bool > &objectSub, std::vector< MAKRti::DtU32 > &objPubSubHandles)
DtNetStatsMonitor & operator=(const DtNetStatsMonitor &orig)
bool myChanged
Definition: netStatsMonitor.h:198
bool myShouldSendOrder
Definition: netStatsMonitor.h:219
virtual const DtTrafficStats & getNetworkStats() const
Definition: netStatsMonitor.h:225
virtual void changedPubSubTransOrder(DtObjectClassHandle classHandle)
static void processMsg(const DtRtiMsg &msg, void *thisMonitor)
DtTrafficStats myNetStats
Definition: netStatsMonitor.h:195
virtual void recordObjectStats(bool isSent, unsigned int msgKind, unsigned int msgSize, double time, const DtRtiMsg &msg)
void sendAttributeParameterState()

Document ID: Generated on Wed Jul 8 16:20:32 EDT 2026 from SVN revision 291616
Copyright © 2005-2025 MAK Technologies Inc. All Rights Reserved (www.mak.com)