9 #ifndef rtiAssistantPeer_H_
10 #define rtiAssistantPeer_H_
17 #include <vlutil/vlUtil.h>
18 #include <vlutil/vlTime.h>
19 #include <vlutil/vlPrint.h>
20 #include <vlutil/vlSmartPointers.h>
46 #define DtCbInfoStruct( cbType ) \
49 cbType##Info( cbType cb, void* usr ) : \
74 virtual bool tick(
double timeout = 0 );
85 virtual void addMsgCallback(
DtAssistantMsgKind msgKind, DtAssistantMsgCbMgr::DtCallbackFcn fcn,
87 virtual void removeMsgCallback(
DtAssistantMsgKind msgKind, DtAssistantMsgCbMgr::DtCallbackFcn fcn,
100 virtual void sendQueryMsg();
105 unsigned memoryPeriod,
bool acceptRemoteCommands,
bool removal);
110 unsigned memoryPeriod);
114 virtual void sendLicServerInfoMsg(
const DtLicServerSet& licServers,
131 virtual void sendObserveRtiExecLogMsg(
const DtAssistantInfo& assistant,
132 int compId,
bool observe );
136 virtual void sendObserveRtiexecRspMsg( DtNotifyLevelType notifyLevel,
int compId,
156 int compId,
int federationHdl,
int federateHdl );
160 virtual void sendFederationDestroyMsg(
const DtAssistantInfo& assistant,
161 int compId,
int federationHdl );
165 virtual void sendRidParamsRequestMsg(
const DtAssistantInfo& assistant,
172 int compId,
unsigned maxLogSize );
176 virtual bool sendLatencyTestRequestMsg(
const DtAssistantInfo& assistant,
177 int compId,
int federationHdl,
int federateHdl,
bool runTest,
178 bool continuous,
bool shouldHalt,
bool observing,
179 unsigned int interactionPeriod,
unsigned int numInteractions,
180 unsigned int payloadBytes );
184 virtual void sendNetworkTestEnableMsg(
const DtAssistantInfo& assistant,
185 int compId,
int federationHdl,
bool enable );
194 virtual void sendNotifyObserveMsg(
bool isObserving);
197 virtual void sendNotifyMsg(
const MAKRti::DtString& text,
198 DtNotifyLevelType notifyLevel,
const MAKRti::DtString& sourceName );
202 virtual void sendRemovalMsg();
209 const MAKRti::DtString& federation = MAKRti::DtString::nullString(),
210 unsigned federateHandle = 0 );
215 std::vector<const DtAssistantFederateInfo*> federates);
221 int compId,
bool observe =
false,
unsigned int interval = 0);
224 int compId,
bool observe);
226 virtual void sendNetStatsStringUpdateReqMsg(
const DtAssistantInfo& assistant,
int compId,
229 virtual void sendNetStatsStringUpdate(
const DtAssistantInfo& assistant,
int compId,
231 const std::vector<MAKRti::DtString>& objectInstanceNames);
233 virtual void forwardNetStatsUpdate(
const DtAssistantMsg &msg,
const std::set<DtAssistantInfo>& observers);
236 int compId,
const std::set<DtAssistantInfo>& observers);
238 virtual void sendNetStatsInitStateRequestMsg(
const DtAssistantInfo& astnt,
242 int compId,
const std::vector<MAKRti::DtU32>& objectClassHandles,
243 const std::vector<MAKRti::DtU32>& parentObjectClassHandles,
244 const std::vector<MAKRti::DtString>& objectClassNames,
245 const std::vector<MAKRti::DtU32>& interactionClassHandles,
246 const std::vector<MAKRti::DtU32>& parentInteractionClassHandles,
247 const std::vector<MAKRti::DtString>& interactionClassNames);
249 virtual void sendNetStatsAttrStringUpdate(
const DtAssistantInfo& astnt,
250 int compId,
const std::vector<MAKRti::DtU32>& objectClassHandles,
251 const std::vector<MAKRti::DtU32>& attributeHandles,
252 const std::vector<MAKRti::DtString>& attributeNames,
253 const std::vector<MAKRti::DtU32>& parentClassHandles,
254 const std::vector<MAKRti::DtU32>& totalObjHandles);
255 virtual void sendNetStatsParamStringUpdate(
const DtAssistantInfo& astnt,
256 int compId,
const std::vector<MAKRti::DtU32>& interClassHandles,
257 const std::vector<MAKRti::DtU32>& parameterHandles,
258 const std::vector<MAKRti::DtString>& parameterNames,
259 const std::vector<MAKRti::DtU32>& parentInterHandles,
260 const std::vector<MAKRti::DtU32>& totalInterHandles);
261 virtual void sendNetStatsAttrParamStringUpdate(
const DtAssistantInfo& astnt,
262 int compId,
const std::vector<MAKRti::DtU32>& objectClassHandles,
263 const std::vector<MAKRti::DtU32>& attributeHandles,
264 const std::vector<MAKRti::DtString>& attributeNames,
265 const std::vector<MAKRti::DtU32>& parentClassHandles,
266 const std::vector<MAKRti::DtU32>& totalObjHandles,
269 virtual void sendNetStatsFomAttrParamUpdate(
const DtAssistantInfo& astnt,
271 const std::vector<MAKRti::DtU32>& objectClassHandles,
272 const std::vector<MAKRti::DtU32>& attributeHandles,
273 const std::vector<bool>& attributePub,
274 const std::vector<bool>& attributeSub,
275 const std::vector<DtTransportType>& attributeTransport,
276 const std::vector<DtOrderType>& attributeOrder,
277 const std::vector<bool>& objectPub,
const std::vector<bool>& objectSub,
278 const std::vector<MAKRti::DtU32>& objPubSubHandles );
284 virtual void forwardMsg(
const DtAssistantMsg& msg,
int astntCompId,
288 virtual int port()
const;
292 virtual MAKRti::DtInetAddr ipv4Address()
const;
296 virtual MAKRti::DtInetAddr ipv6Address()
const;
299 virtual int id()
const;
303 virtual const MAKRti::DtInetAddr& currentNetworkInterfaceAddr()
const;
306 virtual void getMsgStats(
unsigned& totalRecv,
double& recvPerSecOverall,
307 double& recvPerSecCurr,
unsigned& totalProc,
double& procPerSecOverall,
308 double& procPerSecCurr,
unsigned& totalSent,
double& sentPerSecOverall,
309 double& sentPerSecCurr );
312 virtual DtU32 maxMsgSize()
const;
320 void enableMsgDiagnostics(
bool enable );
333 bool addSocketsForInterfaces();
336 bool readAndProcess( DtTime maxTime );
339 void calculateMsgStatistics();
343 void sendMsgOnInterface(
const MAKRti::DtInetAddr& ifAddr,
347 void sendMsg( std::map< MAKRti::DtInetAddr, DtUdpMsgSocket*>::iterator sockIter,
DtAssistantMsg& msg );
353 std::auto_ptr<DtAssistantMsg> netRead(
DtUdpMsgSocket* sock,
int *retCode )
const;
364 MAKRti::DtInetAddr myIpv4Addr;
367 MAKRti::DtInetAddr myIpv6Addr;
386 MAKRti::DtInetAddr myCurrNetworkInterfaceAddr;
401 DtTime myNextCheckInterfacesTime;
404 DtTime myCheckInterfacesInterval;
407 DtTime myBeginProcessingTime;
410 DtTime myNextStatsTime;
413 DtTime myLastStatsTime;
418 numMsgsCurrPeriod(0), numMsgsTotal(0),
419 msgsPerSecLastPeriod(0), msgsPerSecOverall(0) {}
449 bool myDiagnosticsEnabled;
454 #endif // rtiAssistantPeer_H_