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(
unsigned int 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(
const MAKRti::DtInetAddr& webSpyAddr,
137 int webSpyPort, DtNotifyLevelType
notifyLevel,
int compId,
157 int compId,
int federationHdl,
int federateHdl );
161 virtual void sendFederationDestroyMsg(
const DtAssistantInfo& assistant,
162 int compId,
int federationHdl );
166 virtual void sendRidParamsRequestMsg(
const DtAssistantInfo& assistant,
173 int compId,
unsigned maxLogSize );
177 virtual bool sendLatencyTestRequestMsg(
const DtAssistantInfo& assistant,
178 int compId,
int federationHdl,
int federateHdl,
bool runTest,
179 bool continuous,
bool shouldHalt,
bool observing,
180 unsigned int interactionPeriod,
unsigned int numInteractions,
181 unsigned int payloadBytes );
185 virtual void sendNetworkTestEnableMsg(
const DtAssistantInfo& assistant,
186 int compId,
int federationHdl,
bool enable );
195 virtual void sendNotifyObserveMsg(
bool isObserving);
198 virtual void sendNotifyMsg(
const MAKRti::DtString& text,
199 DtNotifyLevelType notifyLevel,
const MAKRti::DtString& sourceName );
203 virtual void sendRemovalMsg();
210 const MAKRti::DtString& federation = MAKRti::DtString::nullString(),
211 unsigned federateHandle = 0 );
216 std::vector<const DtAssistantFederateInfo*> federates);
222 int compId,
bool observe =
false,
unsigned int interval = 0);
225 int compId,
bool observe);
227 virtual void sendNetStatsStringUpdateReqMsg(
const DtAssistantInfo& assistant,
int compId,
230 virtual void sendNetStatsStringUpdate(
const DtAssistantInfo& assistant,
int compId,
232 const std::vector<MAKRti::DtString>& objectInstanceNames);
234 virtual void forwardNetStatsUpdate(
const DtAssistantMsg &msg,
const std::set<DtAssistantInfo>& observers);
237 int compId,
const std::set<DtAssistantInfo>& observers);
239 virtual void sendNetStatsInitStateRequestMsg(
const DtAssistantInfo& astnt,
243 int compId,
const std::vector<MAKRti::DtU32>& objectClassHandles,
244 const std::vector<MAKRti::DtU32>& parentObjectClassHandles,
245 const std::vector<MAKRti::DtString>& objectClassNames,
246 const std::vector<MAKRti::DtU32>& interactionClassHandles,
247 const std::vector<MAKRti::DtU32>& parentInteractionClassHandles,
248 const std::vector<MAKRti::DtString>& interactionClassNames);
250 virtual void sendNetStatsAttrStringUpdate(
const DtAssistantInfo& astnt,
251 int compId,
const std::vector<MAKRti::DtU32>& objectClassHandles,
252 const std::vector<MAKRti::DtU32>& attributeHandles,
253 const std::vector<MAKRti::DtString>& attributeNames,
254 const std::vector<MAKRti::DtU32>& parentClassHandles,
255 const std::vector<MAKRti::DtU32>& totalObjHandles);
256 virtual void sendNetStatsParamStringUpdate(
const DtAssistantInfo& astnt,
257 int compId,
const std::vector<MAKRti::DtU32>& interClassHandles,
258 const std::vector<MAKRti::DtU32>& parameterHandles,
259 const std::vector<MAKRti::DtString>& parameterNames,
260 const std::vector<MAKRti::DtU32>& parentInterHandles,
261 const std::vector<MAKRti::DtU32>& totalInterHandles);
262 virtual void sendNetStatsAttrParamStringUpdate(
const DtAssistantInfo& astnt,
263 int compId,
const std::vector<MAKRti::DtU32>& objectClassHandles,
264 const std::vector<MAKRti::DtU32>& attributeHandles,
265 const std::vector<MAKRti::DtString>& attributeNames,
266 const std::vector<MAKRti::DtU32>& parentClassHandles,
267 const std::vector<MAKRti::DtU32>& totalObjHandles,
270 virtual void sendNetStatsFomAttrParamUpdate(
const DtAssistantInfo& astnt,
272 const std::vector<MAKRti::DtU32>& objectClassHandles,
273 const std::vector<MAKRti::DtU32>& attributeHandles,
274 const std::vector<bool>& attributePub,
275 const std::vector<bool>& attributeSub,
276 const std::vector<DtTransportType>& attributeTransport,
277 const std::vector<DtOrderType>& attributeOrder,
278 const std::vector<bool>& objectPub,
const std::vector<bool>& objectSub,
279 const std::vector<MAKRti::DtU32>& objPubSubHandles );
285 virtual void forwardMsg(
const DtAssistantMsg& msg,
int astntCompId,
289 virtual int port()
const;
293 virtual MAKRti::DtInetAddr ipv4Address()
const;
297 virtual MAKRti::DtInetAddr ipv6Address()
const;
300 virtual int id()
const;
304 virtual const MAKRti::DtInetAddr& currentNetworkInterfaceAddr()
const;
307 virtual void getMsgStats(
unsigned& totalRecv,
double& recvPerSecOverall,
308 double& recvPerSecCurr,
unsigned& totalProc,
double& procPerSecOverall,
309 double& procPerSecCurr,
unsigned& totalSent,
double& sentPerSecOverall,
310 double& sentPerSecCurr );
313 virtual DtU32 maxMsgSize()
const;
321 void enableMsgDiagnostics(
bool enable );
334 bool addSocketsForInterfaces();
337 bool readAndProcess( DtTime maxTime );
340 void calculateMsgStatistics();
344 void sendMsgOnInterface(
const MAKRti::DtInetAddr& ifAddr,
348 void sendMsg( std::map< MAKRti::DtInetAddr, DtUdpMsgSocket*>::iterator sockIter,
DtAssistantMsg& msg );
354 std::auto_ptr<DtAssistantMsg> netRead(
DtUdpMsgSocket* sock,
int *retCode )
const;
365 MAKRti::DtInetAddr myIpv4Addr;
368 MAKRti::DtInetAddr myIpv6Addr;
387 MAKRti::DtInetAddr myCurrNetworkInterfaceAddr;
402 DtTime myNextCheckInterfacesTime;
405 DtTime myCheckInterfacesInterval;
408 DtTime myBeginProcessingTime;
411 DtTime myNextStatsTime;
414 DtTime myLastStatsTime;
419 numMsgsCurrPeriod(0), numMsgsTotal(0),
420 msgsPerSecLastPeriod(0), msgsPerSecOverall(0) {}
450 bool myDiagnosticsEnabled;
455 #endif // rtiAssistantPeer_H_