MAK RTIspy API Documentation for HLA 1516
 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  // Get a copy of the current statistics
47  virtual const DtTrafficStats& getNetworkStats() const;
48 
49  // Reset the network statistics
50  virtual void reset();
51 
52  // Print the current state of the statistics
53  // - prints in tab-separated values form
54  virtual void printStats( bool withHeader = false ) const;
55 
56  // Record stats for sent / received message called directly when
57  // not using callback method
58  // NOTE: - if callbacks are enabled, and this method is used,
59  // it will result in msg duplication!
60  virtual void recordSentMsgStats( const DtRtiMsg& msg, double sendTime );
61  virtual void recordSentMsgStats(unsigned int fedId, DtRtiMsgKind msgKind, unsigned int msgSize, double time);
62  virtual void recordSentMsgStats(unsigned int fedId, DtRtiMsgKind msgKind, unsigned int msgSize, double time,
63  DtObjectClassHandle* classHandle, DtObjectInstanceHandle* instanceHandle);
64  virtual void recordSentMsgStats(unsigned int fedId, DtRtiMsgKind msgKind, unsigned int msgSize, double time,
65  DtInteractionClassHandle* classHandle);
66 
67  virtual void recordRecvdMsgStats( const DtRtiMsg& msg, double sendTime, bool joined );
68 
69  // Record stats for RTI Ambassador and Federate Ambassador API calls and
70  // callbacks
71  virtual void recordApiStats( const DtRtiAmbAPIType callName, double callTime );
72  virtual void recordFedAmbStats( const DtFedAmbAPIType callName, double callTime );
73 
74  // Add newly Registered or Discovered objects to the list
75  virtual void addRegisteredObject( DtObjectInstanceHandle objHandle,
76  DtObjectClassHandle theClass, const char* theObject);
77  virtual void addDiscoveredObject( DtObjectInstanceHandle objHandle,
78  DtObjectClassHandle theClass, const char* theObject);
79 
80  // Add subscribed or published sent and received interactions to the list
81  virtual void addSentInteraction( DtInteractionClassHandle theInteraction );
82  virtual void addRecvdInteraction( DtInteractionClassHandle theInteraction );
83 
84  // Record stats for individual objects and interactions
85  virtual void recordObjectStats( bool isSent, unsigned int msgKind,
86  unsigned int msgSize, double time, const DtRtiMsg& msg );
87  virtual void recordObjectStats(DtObjectInstanceHandle* objectInstanceHandle, DtObjectClassHandle* objectClassHandle,
88  bool isSent, unsigned int msgSize, double time);
89 
90  virtual void recordInteractionStats( bool isSent, unsigned int msgKind,
91  unsigned int msgSize, double time, const DtRtiMsg& msg );
92  virtual void recordInteractionStats(DtInteractionClassHandle* handle, bool isSent, unsigned int msgSize, double time);
93 
94  // Adds object class handles to set if publish, subscribe, transport, or order changes.
95  virtual void changedPubSubTransOrder(DtObjectClassHandle classHandle);
96 
97  // Adds interaction class handles to set if publish, subscribe, transport, or order changes.
99 
100  // Callback function for generic DtRtiMsgs: records traffic statistics
101  static void processMsg( const DtRtiMsg& msg, void* thisMonitor );
102 
103  // Calback for posttick in FedMgr
104  static void netStatsPostTick(void* instance);
105 
106  // Have the stats changed since the last test? (resets flag)
107  virtual bool isChanged();
108 
109 protected:
110 
111  // Instance local version of the processMsg callback
112  virtual void processMsg( const DtRtiMsg& msg );
113 
114  // Instance local version of the netStatsPostTick callback
115  virtual void netStatsPostTick();
116 
117  static void processNetStatsObserveReqMsg( const DtAssistantNetStatsObserveReqMsg& msg, void* usr );
119 
120  virtual void gatherClassDataAndSend(DtFomClassMgr * fomMgr, DtRtiAssistantLrcClient* rtiAstntLrcClient);
121 
122  virtual void gatherInstanceDataAndSend(DtRtiAssistantLrcClient* rtiAstntLrcClient);
123 
124  virtual void createSerializedTreesAndSend();
125 
126  virtual void recursivelyAddObjects(DtObjectClassInfo::DtObjectClassByHandleMap& objectClasses, MAKRti::DtU32 parentHandle,
127  std::vector<MAKRti::DtU32>& objectClassHandles, std::vector<MAKRti::DtU32>& parentObjectClassHandles,
128  std::vector<MAKRti::DtString>& objectClassNames);
129  void recursivelyAddInteractions(DtInteractionClassInfo::DtInteractionClassByHandleMap& interactionClasses, MAKRti::DtU32 parentHandle,
130  std::vector<MAKRti::DtU32>& interactionClassHandles, std::vector<MAKRti::DtU32>& parentInteractionClassHandles,
131  std::vector<MAKRti::DtString>& interactionClassNames);
132 
134  void sendAttributeNames();
136  std::vector<MAKRti::DtU32>& objectClassHandles, std::vector<MAKRti::DtU32>& attributeHandles,
137  std::vector<MAKRti::DtString>& attributeNames, std::vector<bool>& attributePub,
138  std::vector<bool>& attributeSub, std::vector<DtTransportType>& attributeTransport,
139  std::vector<DtOrderType>& attributeOrder);
141  std::vector<MAKRti::DtU32>& objectClassHandles, std::vector<MAKRti::DtU32>& attributeHandles,
142  std::vector<MAKRti::DtString>& attributeNames, std::vector<MAKRti::DtU32>& parentClassHandles,
143  std::set<MAKRti::DtString> parentAttributeNames, MAKRti::DtU32 parentClassHandle,
144  std::vector<MAKRti::DtU32>& totalObjectHandles);
145  void sendParameterNames();
147  std::vector<MAKRti::DtU32>& interactionClassHandles, std::vector<MAKRti::DtU32>& parameterHandles,
148  std::vector<MAKRti::DtString>& parameterNames, std::vector<MAKRti::DtU32>& parentInterHandles,
149  std::set<MAKRti::DtString> parentParametersNames, MAKRti::DtU32 parentInterHandle,
150  std::vector<MAKRti::DtU32>& totalInterHandles);
151  void sendInitAttrState();
153  std::vector<MAKRti::DtU32>& objectClassHandles, std::vector<MAKRti::DtU32>& attributeHandles,
154  std::vector<bool>& attributePub, std::vector<bool>& attributeSub,
155  std::vector<DtTransportType>& attributeTransport, std::vector<DtOrderType>& attributeOrder,
156  std::vector<bool>& objectPub, std::vector<bool>& objectSub, std::vector<MAKRti::DtU32>& objPubSubHandles);
157 
159  std::vector<MAKRti::DtU32>& objectClassHandles,
160  std::vector<MAKRti::DtU32>& attributeHandles, std::vector<bool>& attributePub,
161  std::vector<bool>& attributeSub, std::vector<DtTransportType>& attributeTransport,
162  std::vector<DtOrderType>& attributeOrder, std::vector<bool>& objectPub,
163  std::vector<bool>& objectSub, std::vector<MAKRti::DtU32>& objPubSubHandles);
164  void sendInitParamState();
166  void sendAttributeState();
167  void sendParameterState();
168 private:
169 
170  // Default ctor, Copy ctor, and Assignment Operator are undefined
172  DtNetStatsMonitor( const DtNetStatsMonitor& orig );
174  MAKRti::DtString getNameFromObject(DtObjectClassInfo * object);
175  MAKRti::DtString getNameFromInteraction(DtInteractionClassInfo * interaction);
176 protected:
177 
178  // LRC's Federate Handle
180 
181  // LRC's RTI Ambassador Implementor
182  DtRtiAmbassadorImplementor* myRtiAmb;
183 
184  // LRC's Fed Amb wrapper which handles stats gathering
185  DtNetStatsFedAmbWrapper* myFedAmbWrap;
186 
187  // LRC's connection manager
189 
190  // Structure to hold all gathered statistics
192 
193  // Has there been an update since the last test?
194  bool myChanged;
195 
196  // Whether or not this is observed
199 
203 
204  // Minimum interval between sending updates (if observed)
205  MAKRti::DtTime interval;
206  MAKRti::DtTime fomInterval;
207 
208  MAKRti::DtClock intervalTimer;
209  MAKRti::DtClock fomIntervalTimer;
210 
211  // LRC's assistant client
213 
216 
217  public:
218 
219  bool isJoined;
220 };
221 
222 
224 {
225  return myNetStats;
226 }
227 #endif // netStatsMonitor_h__
228 
bool haveSentInitialFomData
Definition: netStatsMonitor.h:201
virtual void recordFedAmbStats(const DtFedAmbAPIType callName, double callTime)
DtRtiMsgKind
Definition: rtiMsgKind.h:9
MAKRti::DtClock fomIntervalTimer
Definition: netStatsMonitor.h:209
virtual void gatherClassDataAndSend(DtFomClassMgr *fomMgr, DtRtiAssistantLrcClient *rtiAstntLrcClient)
DtConnectionMgr * myConnMgr
Definition: netStatsMonitor.h:188
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:179
void sendInitAttrState()
DtNetStatsFedAmbWrapper * myFedAmbWrap
Definition: netStatsMonitor.h:185
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)
DtFedAmbAPIType
Definition: fedAmbAPITypes.h:12
Definition: netStatsMonitor.h:33
void sendAttributeNames()
virtual void addSentInteraction(DtInteractionClassHandle theInteraction)
The client connection to the RTI Assistant for an LRC.
Definition: rtiAssistantLrcClient.h:32
bool shouldSendOrder
Definition: netStatsMonitor.h:215
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)
bool haveSentInitState
Definition: netStatsMonitor.h:202
void sendAttributeState()
MAKRti::DtTime interval
Definition: netStatsMonitor.h:205
bool isJoined
Definition: netStatsMonitor.h:219
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)
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 isFomObserved
Definition: netStatsMonitor.h:200
The DtAssistantNetStatsObserveReqMsg defines...
Definition: assistantObserveReqMsg.h:20
virtual ~DtNetStatsMonitor()
void sendCurrentAttributeAndParameterValues()
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
bool haveSentClassData
Definition: netStatsMonitor.h:198
virtual void printStats(bool withHeader=false) const
virtual void addDiscoveredObject(DtObjectInstanceHandle objHandle, DtObjectClassHandle theClass, const char *theObject)
DtRtiAmbassadorImplementor * myRtiAmb
Definition: netStatsMonitor.h:182
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)
bool shouldSendTransport
Definition: netStatsMonitor.h:214
bool isObserved
Definition: netStatsMonitor.h:197
DtRtiAssistantLrcClient * myAssistantClient
Definition: netStatsMonitor.h:212
void sendParameterNames()
DtRtiAmbAPIType
Definition: rtiAmbAPITypes.h:12
MAKRti::DtTime fomInterval
Definition: netStatsMonitor.h:206
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)
Definition: intClassInfo.h:40
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)
std::map< DtInteractionClassHandle, DtInteractionClassInfo * > DtInteractionClassByHandleMap
Definition: intClassInfo.h:43
virtual void recordRecvdMsgStats(const DtRtiMsg &msg, double sendTime, bool joined)
MAKRti::DtClock intervalTimer
Definition: netStatsMonitor.h:208
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:194
virtual const DtTrafficStats & getNetworkStats() const
Definition: netStatsMonitor.h:223
virtual void changedPubSubTransOrder(DtObjectClassHandle classHandle)
static void processMsg(const DtRtiMsg &msg, void *thisMonitor)
DtTrafficStats myNetStats
Definition: netStatsMonitor.h:191
virtual void recordObjectStats(bool isSent, unsigned int msgKind, unsigned int msgSize, double time, const DtRtiMsg &msg)
void sendAttributeParameterState()

Document ID: Generated on Sun Jul 20 16:15:30 EDT 2025 from SVN revision 277985
Copyright © 2005-2025 MAK Technologies Inc. All Rights Reserved (www.mak.com)