29 #include <vlutil/vlSmartPointers.h>
30 #include <vlutil/vlInetEndpoint.h>
31 #include <vlutil/vlPrint.h>
32 #include <vlutil/vlTime.h>
33 #include <vlutil/vlUtil.h>
45 class DtAssistantPeerSocketAdditionCbInfo;
46 class DtAssistantPeerSocketRemovalCbInfo;
48 #define DtCbInfoStruct( cbType ) \
51 cbType##Info( cbType cb, void* usr ) : \
88 const MAKRti::DtInetAddr& ipv4Addr,
89 const MAKRti::DtInetAddr& ipv6Addr,
91 bool disableMulticast,
92 const DtNetU128 & uuid);
99 virtual bool tick(
double timeout = 0 );
112 DtAssistantMsgCbMgr::DtCallbackFcn fcn,
void* usr );
114 DtAssistantMsgCbMgr::DtCallbackFcn fcn,
void* usr );
124 virtual void sendQueryMsg();
141 unsigned memoryPeriod,
bool acceptRemoteCommands,
bool removal );
146 unsigned memoryPeriod );
150 virtual void sendLicServerInfoMsg(
const DtLicServerSet& licServers,
154 virtual void sendForwarderConnectMsg(
int compId,
const DtString& targetHost,
155 const MAKRti::DtInetAddr& targetAddress,
int targetPort,
179 virtual void sendObserveRtiExecLogMsg(
const DtAssistantInfo& assistant,
180 int compId,
bool observe );
184 virtual void sendObserveRtiexecRspMsg( DtNotifyLevelType notifyLevel,
int compId,
204 int compId,
int federationHdl,
int federateHdl );
208 virtual void sendFederationDestroyMsg(
const DtAssistantInfo& assistant,
209 int compId,
int federationHdl );
213 virtual void sendRidParamsRequestMsg(
const DtAssistantInfo& assistant,
220 int compId,
unsigned maxLogSize );
224 virtual bool sendLatencyTestRequestMsg(
const DtAssistantInfo& assistant,
225 int compId,
int federationHdl,
int federateHdl,
bool runTest,
bool continuous,
226 bool shouldHalt,
bool observing,
unsigned int interactionPeriod,
227 unsigned int numInteractions,
unsigned int payloadBytes );
230 virtual void sendNetworkTestEnableMsg(
const DtAssistantInfo& assistant,
231 int compId,
int federationHdl,
bool enable );
235 virtual void sendRtiexecExitMsg(
const DtAssistantInfo& assistant,
int compId );
239 virtual void sendNotifyObserveMsg(
bool isObserving );
242 virtual void sendNotifyMsg(
const MAKRti::DtString& text,
243 DtNotifyLevelType notifyLevel,
const MAKRti::DtString& sourceName );
247 virtual void sendRemovalMsg();
254 const MAKRti::DtString& federation = MAKRti::DtString::nullString(),
255 unsigned federateHandle = 0 );
260 std::vector<const DtAssistantFederateInfo*> federates);
266 int compId,
bool observe =
false,
unsigned int interval = 0);
269 int compId,
bool observe);
271 virtual void sendNetStatsStringUpdateReqMsg(
const DtAssistantInfo& assistant,
int compId,
274 virtual void sendNetStatsStringUpdate(
const DtAssistantInfo& assistant,
int compId,
276 const std::vector<MAKRti::DtString>& objectInstanceNames);
278 virtual void forwardNetStatsUpdate(
const DtAssistantMsg &msg,
const std::set<DtAssistantInfo>& observers);
281 int compId,
const std::set<DtAssistantInfo>& observers);
283 virtual void sendNetStatsInitStateRequestMsg(
const DtAssistantInfo& astnt,
287 int compId,
const std::vector<MAKRti::DtU32>& objectClassHandles,
288 const std::vector<MAKRti::DtU32>& parentObjectClassHandles,
289 const std::vector<MAKRti::DtString>& objectClassNames,
290 const std::vector<MAKRti::DtU32>& interactionClassHandles,
291 const std::vector<MAKRti::DtU32>& parentInteractionClassHandles,
292 const std::vector<MAKRti::DtString>& interactionClassNames);
294 virtual void sendNetStatsAttrStringUpdate(
const DtAssistantInfo& astnt,
295 int compId,
const std::vector<MAKRti::DtU32>& objectClassHandles,
296 const std::vector<MAKRti::DtU32>& attributeHandles,
297 const std::vector<MAKRti::DtString>& attributeNames,
298 const std::vector<MAKRti::DtU32>& parentClassHandles,
299 const std::vector<MAKRti::DtU32>& totalObjHandles);
300 virtual void sendNetStatsParamStringUpdate(
const DtAssistantInfo& astnt,
301 int compId,
const std::vector<MAKRti::DtU32>& interClassHandles,
302 const std::vector<MAKRti::DtU32>& parameterHandles,
303 const std::vector<MAKRti::DtString>& parameterNames,
304 const std::vector<MAKRti::DtU32>& parentInterHandles,
305 const std::vector<MAKRti::DtU32>& totalInterHandles);
306 virtual void sendNetStatsAttrParamStringUpdate(
const DtAssistantInfo& astnt,
307 int compId,
const std::vector<MAKRti::DtU32>& objectClassHandles,
308 const std::vector<MAKRti::DtU32>& attributeHandles,
309 const std::vector<MAKRti::DtString>& attributeNames,
310 const std::vector<MAKRti::DtU32>& parentClassHandles,
311 const std::vector<MAKRti::DtU32>& totalObjHandles,
314 virtual void sendNetStatsFomAttrParamUpdate(
const DtAssistantInfo& astnt,
316 const std::vector<MAKRti::DtU32>& objectClassHandles,
317 const std::vector<MAKRti::DtU32>& attributeHandles,
318 const std::vector<bool>& attributePub,
319 const std::vector<bool>& attributeSub,
320 const std::vector<DtTransportType>& attributeTransport,
321 const std::vector<DtOrderType>& attributeOrder,
322 const std::vector<bool>& objectPub,
const std::vector<bool>& objectSub,
323 const std::vector<MAKRti::DtU32>& objPubSubHandles );
329 virtual void forwardMsg(
const DtAssistantMsg& msg,
int astntCompId,
333 virtual int port()
const;
337 virtual MAKRti::DtInetAddr ipv4Address()
const;
341 virtual MAKRti::DtInetAddr ipv6Address()
const;
344 virtual int id()
const;
348 virtual const MAKRti::DtInetAddr& currentNetworkInterfaceAddr()
const;
351 virtual const DtInetEndpoint& currentReceivedEndpoint()
const;
354 virtual const MAKRti::DtInetAddr& destinationAddress(
const DtInetAddr& msgDestination)
const;
357 virtual void getMsgStats(
unsigned& totalRecv,
double& recvPerSecOverall,
358 double& recvPerSecCurr,
unsigned& totalProc,
double& procPerSecOverall,
359 double& procPerSecCurr,
unsigned& totalSent,
double& sentPerSecOverall,
360 double& sentPerSecCurr );
363 virtual DtU32 maxMsgSize()
const;
383 void enableMsgDiagnostics(
bool enable );
392 virtual void addIgnoredAddress(
const MAKRti::DtInetAddr& ipAddr);
395 virtual void removeIgnoredAddress(
const MAKRti::DtInetAddr& ipAddr);
415 bool addSocketsForInterfaces();
419 bool addTcpServerSocketsForInterfaces(
const DtTime& now = 0);
422 bool readAndProcess( DtTime maxTime );
425 bool readAndProcessConnectingTcpSockets(DtTime maxTime);
427 bool readAndProcessTcpSockets(DtTime maxTime);
430 void checkForDeadTcpConnections();
432 void calculateMsgStatistics();
436 void sendMsgOnInterface(
const MAKRti::DtInetAddr& ifAddr,
437 DtAssistantMsg& msg,
const DtInetAddr& destAddr = DtInetAddr::inaddrAny(),
int port = 0);
441 void sendMsg( std::map< MAKRti::DtInetAddr, DtUdpMsgSocket*>::iterator sockIter,
442 DtAssistantMsg& msg,
const DtInetAddr& destAddr = DtInetAddr::inaddrAny(),
int port = 0,
bool sendToForeignAssistants =
true );
444 void sendToForeignConnection(std::map< DtInetAddr, DtUdpMsgSocket*>::iterator sockIter,
446 void sendToUDPForeignConnection(std::map< DtInetAddr, DtUdpMsgSocket*>::iterator sockIter,
DtAssistantMsg* ptToPtMsg,
const DtInetAddr& destAddr,
int port);
447 void sendToTCPForeignConnection(std::map< DtInetAddr, DtUdpMsgSocket*>::iterator sockIter,
DtTcpMsgSocket* tcpSock,
DtAssistantMsg* ptToPtMsg);
449 void sendMsgToAll(
DtAssistantMsg& msg,
const DtInetAddr& destAddr = DtInetAddr::inaddrAny(),
int port = 0,
bool sentToForeignAssistants =
true );
452 virtual void flushTcpSockets(DtTime maxTime);
455 DtUniquePtr<DtAssistantMsg> netRead(
DtMsgSocket* sock,
int *retCode, DtInetEndpoint& ep)
const;
462 virtual void processConnections();
483 MAKRti::DtInetAddr myIpv4Addr;
486 MAKRti::DtInetAddr myIpv6Addr;
508 std::set<DtTcpMsgSocket*> myServerSocketsToDelete;
509 std::vector<std::pair<DtAssistantConnectionStruct, DtTime> > myClientSocketsDeleted;
510 std::map<DtTcpMsgSocket*, DtAssistantConnectionStruct> myAssistantConnectionsRemoved;
517 DtTcpMsgSocket* myCurTcpSocket;
521 MAKRti::DtInetAddr myCurrNetworkInterfaceAddr;
524 MAKRti::DtInetEndpoint myCurrReceivedEndpoint;
539 DtTime myNextCheckInterfacesTime;
542 DtTime myNextClearCheckedInterfacesTime;
545 DtTime myNextCheckDeadTcpConnections;
548 DtTime myCheckInterfacesInterval;
551 DtTime myClearCheckedInterfacesInterval;
554 DtTime myCheckTcpConnectionsInterval;
557 DtTime myNextProcessConnectionsTime;
560 DtTime myNextProcessConnectionsInterval;
563 DtTime myBeginProcessingTime;
566 DtTime myNextStatsTime;
569 DtTime myLastStatsTime;
574 numMsgsCurrPeriod(0), numMsgsTotal(0),
575 msgsPerSecLastPeriod(0), msgsPerSecOverall(0) {}
618 bool myDiagnosticsEnabled;
625 bool operator()(
const DtInetDevice& a,
const DtInetDevice& b)
const {
626 return a.macAddrString() < b.macAddrString();
631 bool operator()(
const std::pair<DtString, DtInetUtils::DtInetAddrFamily>& a,
const std::pair<DtString, DtInetUtils::DtInetAddrFamily>& b)
const {
632 if (a.first != b.first)
634 return a.first < b.first;
638 return a.second < b.second;
bool myProcessingConnections
Definition: rtiAssistantPeer.h:644
void(* DtAssistantSocketRemovalCb)(int compId, const MAKRti::DtString &reason, void *usr)
Definition: rtiAssistantPeer.h:77
virtual Boolean tick(TickTime minimum, TickTime maximum)
static const DtTime theStatisticsInterval
The interval at which message statistics are calculated.
Definition: rtiAssistantPeer.h:596
This file contains the declaration of DtAssistantInfo.
std::set< DtTcpMsgSocket * > myConnectingTcpServerSockets
Definition: rtiAssistantPeer.h:653
unsigned numMsgsTotal
Definition: rtiAssistantPeer.h:578
std::list< DtAssistantPeerSocketAdditionCbInfo * > DtAssistantPeerSocketAdditionCallbackList
Definition: rtiAssistantPeer.h:78
DtUuid DtAssistantUuid
Definition: assistantUtil.h:17
DtHostNameAddress myHostNameAddress
Definition: rtiAssistantPeer.h:623
Contains the DtRtiConnectionAndConfiguration class declaration.
The DtAssistantInfoMsg defines a wrapper for the RTI Assistant information message used by the Assist...
Definition: assistantInfoMsg.h:33
The DtAssistantRemovalMsg defines a wrapper for the RTI Assistant removal message used by Assistants ...
Definition: assistantRemovalMsg.h:29
#define DtAssistantUuidNIL
Definition: assistantInfo.h:23
std::map< DtTcpMsgSocket *, DtAssistantToAssistantConnectionMsg * > myPendingTcpSynMessages
Definition: rtiAssistantPeer.h:649
DtPeerMsgStats()
Definition: rtiAssistantPeer.h:573
Definition: rtiAssistantPeer.h:630
This file contains the declaration of DtAssistantInfoMsg.
This file contains the declaration of DtRtiConnectionInfo.
Stores basic information about a remote assistant.
Definition: assistantInfo.h:96
std::pair< DtRtiConnectionInfo, DtRtiAssociatedConnectionData > DtRtiConnectionInfoDataPair
Pair of connection with associated data.
Definition: assistantConnectionInfo.h:29
Structure Remote Assistant to be displayed.
Definition: assistantInfo.h:39
Definition: tcpMsgSocketMgr.h:43
virtual void setIgnoreAllPeerCommunication(bool valToSet)
set/get myIgnoreAllPeerCommunication
Definition: rtiAssistantPeer.h:388
DtTcpServerMap myPeerTcpServerSockets
Definition: rtiAssistantPeer.h:643
The DtAssistantStartRtiexecMsg defines a wrapper for the RTI Assistant message used to instruct anoth...
Definition: assistantStartRtiexecMsg.h:30
DtAssistantPeerSocketRemovalCallbackList myTcpClientRemovalCallbacks
Definition: rtiAssistantPeer.h:655
std::set< DtInetAddr > myIgnoredAddresses
Definition: rtiAssistantPeer.h:613
unsigned int myPendingConnectionsTimeout
Definition: rtiAssistantPeer.h:647
std::list< DtInterfaceFoundCbInfo > myInterfaceFoundCallbacks
The list of network interface discovery callbacks.
Definition: rtiAssistantPeer.h:593
DtAssistantMsgKind
Definition: assistantMsg.h:53
Base class for assistant Messages.
Definition: assistantMsg.h:153
bool myUsingIpv6
Indicates whether any IPv4 sockets are currently in use.
Definition: rtiAssistantPeer.h:602
void * myUsr
Definition: rtiAssistantPeer.h:72
Stores the Assistant configuration information and handles saving and loading this information from a...
Definition: assistantConfig.h:38
DtAssistantPeerSocketAdditionCallbackList myTcpClientAdditionCallbacks
Definition: rtiAssistantPeer.h:654
bool operator()(const std::pair< DtString, DtInetUtils::DtInetAddrFamily > &a, const std::pair< DtString, DtInetUtils::DtInetAddrFamily > &b) const
Definition: rtiAssistantPeer.h:631
bool myIgnoreAllPeerCommunication
Indicates whether peer communication is ignored. This includes sending/receiving UDP.
Definition: rtiAssistantPeer.h:611
Stores information on a known federate.
Definition: federateInfo.h:21
Definition: rtiAssistantPeer.h:624
Definition: assistantInfo.h:76
DtAssistanConnectionCbInfo(DtAssistantConnectionLostCallback cb, void *usr)
Definition: rtiAssistantPeer.h:65
double msgsPerSecOverall
Definition: rtiAssistantPeer.h:580
The DtAssistantQueryMsg defines a wrapper for the RTI Assistant query message used by Assistants to r...
Definition: assistantQueryMsg.h:34
Definition: rtiAssistantPeer.h:571
#define DT_DLL_ASSISTANT
Default – Unix or Win32 static.
Definition: rtiMsConfig.h:150
DtAssistantHandshakeType
Definition: assistantToAssistantConnectionMsg.h:22
DtPeerMsgStats mySentMsgStats
Message statistics for messages sent to other assistants.
Definition: rtiAssistantPeer.h:590
unsigned numMsgsCurrPeriod
Definition: rtiAssistantPeer.h:577
DtAssistantObservationType
Definition: assistantNetStatsEnums.h:8
DtRtiAssistantPeer manages the sharing of information between one Assistant to other Assistants using...
Definition: rtiAssistantPeer.h:82
Instances of DtAssistantDfltMsgFactory are used to create DtRtiMsgs.
Definition: assistantDefaultMsgFact.h:20
Contains the DtRtiAssistantClient class declaration.
The DtAssistantToAssistantConnectionMsg.
Definition: assistantToAssistantConnectionMsg.h:36
double msgsPerSecLastPeriod
Definition: rtiAssistantPeer.h:579
void(* DtInterfaceFoundCb)(void *)
Definition: rtiAssistantPeer.h:47
void(* DtAssistantSocketAdditionCb)(int compId, void *usr)
Socket addition and removal callback signatures.
Definition: rtiAssistantPeer.h:76
void(* DtAssistantConnectionLostCallback)(const DtAssistantConnectionStruct &sock, void *usr)
Definition: rtiAssistantPeer.h:60
This file contains the declaration of DtAssistantConnMsg.
bool myDisableMulticast
Indicates whether multicast is disabled.
Definition: rtiAssistantPeer.h:608
DtHostNameAddress stores information on a host, input as either hostname, IP address, or both.
Definition: hostNameAddress.h:23
DtPeerMsgStats myReceivedMsgStats
Message statistics for messages received from other assistants.
Definition: rtiAssistantPeer.h:584
bool myUsingIpv4
Indicates whether any IPv4 sockets are currently in use.
Definition: rtiAssistantPeer.h:599
Stores the information on an RTI configuration known by the Assistant.
Definition: assistantConnectionConfigurationInfo.h:61
std::list< DtAssistantPeerSocketRemovalCbInfo * > DtAssistantPeerSocketRemovalCallbackList
Definition: rtiAssistantPeer.h:79
virtual bool isIgnoreAllPeerCommunication() const
Definition: rtiAssistantPeer.h:389
The DtTcpMsgSocket class provides an address family independent TCP socket that handles RTI messages...
Definition: tcpMsgSocket.h:40
The DtAssistantLightweightInfoMsg defines a wrapper for the RTI Assistant lightweight connection info...
Definition: assistantLightweightInfoMsg.h:35
DtPeerMsgStats myProcessedMsgStats
Message statistics for messages processed from other assistants.
Definition: rtiAssistantPeer.h:587
Definition: rtiAssistantPeer.h:61
Definition: assistantInfo.h:86
DtAssistantHandleType
Definition: assistantNetStatsEnums.h:23
The DtMsgSocket provides a wrapper around the MAKRti::DtInetSocket class to operate on messages rathe...
Definition: msgSocket.h:28
std::map< DtTcpMsgSocket *, MAKRti::DtTime > myPendingConnections
Definition: rtiAssistantPeer.h:645
std::set< std::pair< DtString, DtInetUtils::DtInetAddrFamily >, cmpByMacAddrThenFam > myDevicesChecked
Definition: rtiAssistantPeer.h:660
Structure containing State information from a single federation.
Definition: federationInfo.h:42
std::set< DtLicServerInfo > DtLicServerSet
Definition: assistantLicServerInfo.h:62
Stores the information on an RTI connection and possibly matching configuration known by the Assistan...
Definition: connectionAndConfiguration.h:22
DT_DLL_ASSISTANT DtMessageCallbackManager< DtAssistantMsg, DtAssistantMsgKind > DtAssistantMsgCbMgr
Definition: assistantMsgCbMgr.h:18
unsigned long mySequence
Message sequence number.
Definition: rtiAssistantPeer.h:605
DtUuid DtAssistantConnectionId
Definition: assistantInfo.h:28
#define DtCbInfoStruct(cbType)
Definition: rtiAssistantPeer.h:48
std::map< DtAssistantConnectionId, DtTcpMsgSocket * > myConnectingTcpClientSockets
Definition: rtiAssistantPeer.h:652
This file contains the declaration of DtLicServerInfo.
bool operator()(const DtInetDevice &a, const DtInetDevice &b) const
Definition: rtiAssistantPeer.h:625
std::set< DtAssistanConnectionCbInfo * > myConnectionLostCallbacks
Definition: rtiAssistantPeer.h:658
DtAssistantConnectionLostCallback myCb
Definition: rtiAssistantPeer.h:71
The DtUdpMsgSocket class provides an address family independent UDP socket that handles RTI messages...
Definition: udpMsgSocket.h:26
std::set< DtAssistantConnectionStruct, cmpByConnectionIdThenPublicAddress > DtRemoteAssistantSet
Definition: assistantInfo.h:93
Stores the information on an RTI connection known by the Assistant.
Definition: assistantConnectionInfo.h:36
DtAssistantUuid myUuid
Definition: rtiAssistantPeer.h:615
DtString myHostname
The hostname used by the peer when populating messages it sends.
Definition: rtiAssistantPeer.h:622
std::map< std::pair< DtString, DtInetUtils::DtInetAddrFamily >, DtTcpMsgSocketMgr *, cmpByMacAddrThenFam > DtTcpServerMap
Definition: rtiAssistantPeer.h:642